概述
版本号:1.0
嗨,我是一块铌金属,新年快乐呀!
之前不是说啃了EGE库嘛,所以我打算做一个项目练练手。
做什么呢……?谷歌小恐龙!
谷歌小恐龙就是一款谷歌浏览器内置的小游戏……多的我就不说了,在谷歌浏览器输入chrome://dino/就可以玩啦!
在我的不懈努力下,终于把……小恐龙的动画搞了出来。
(78行代码啊!就把小恐龙的动画搞了出来……)
接下来,就是要把地图弄出来。
我们可以设置一个地图类型,类型里有一个PIMAGE图片,int类型的x坐标和不变的y坐标(极有可能变????),滚动的效果就像这样:

代码如下:
#include <graphics.h>
#include <bits/stdc++.h>
#include <stdio.h>
using namespace std;
void zoomImage(PIMAGE& pimg, int width, int height) {
if (pimg == NULL || (width == getwidth(pimg) && height == getheight(pimg))) {
return;
}
PIMAGE temp = newimage(width, height);
putimage(temp, 0, 0, width, height, pimg, 0, 0, getwidth(pimg), getheight(pimg));
delimage(pimg);
pimg = temp;
}
// use picture
PIMAGE bird[2];
PIMAGE cactus[5];
PIMAGE dino[6];
PIMAGE ground[3];
// ground struct
class rollGd {
public:
PIMAGE costunm = newimage();
int x;
int y = 325; // it is never change
};
char fileName[30];
rollGd grnd[2];
int speed = 10;
void init() {
// for (...) to get picture
/*
// bird
for (int i = 0; i < 2; i++) {
}
// cactus
for (int i = 0; i < 5; i++) {
}
*/
// dino
// for (int i = 0; i < 6; i++) {
//
// }
for (int i = 0; i < 2; i++) {
dino[i] = newimage();
sprintf(fileName, "resource\image\dino%d.png", i + 1);
getimage(dino[i], fileName);
zoomImage(dino[i], 180, 180);
}
// ground
for (int i = 0; i < 3; i++) {
ground[i] = newimage();
sprintf(fileName, "resource\image\ground%d.png", i + 1);
getimage(ground[i], fileName);
zoomImage(ground[i], 810, 45);
}
// real ground
for (int i = 0; i < 2; i++) {
grnd[i].costunm = ground[rand() % 3];
if (i == 0) {
grnd[i].x = 0;
} else {
grnd[i].x = 810;
}
}
}
void walk() {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 10; j++) {
for (int k = 0; k < 2; k++) {
grnd[k].x -= 7;
if (grnd[k].x < -810) {
grnd[k].costunm = ground[rand() % 3];
grnd[k].x = 810;
}
putimage(grnd[k].x, grnd[k].y, grnd[k].costunm);
}
putimage_withalpha(NULL, dino[i], -35, 200); // draw
Sleep(2);
bar(-35, 200, -35 + 180, 200 + 180); // cover
}
}
}
void release() {
for (int i = 0; i < 2; i++) {
delimage(dino[i]);
}
for (int i = 0; i < 3; i++) {
delimage(ground[i]);
}
}
int main() {
// init
srand(time(0));
initgraph(810, 480, 0); // screen
setcaption("Google Dino War"); // caption
setbkcolor(EGERGB(0xFF, 0xFF, 0xFF)); // background color
setfillcolor(EGERGB(0xFF, 0xFF, 0xFF)); // init fill color
init(); // init picture
while (true) {
// quit
if (GetKeyState('Q') < 0) {
break;
}
walk(); // run animation
}
release(); // delete, drop memory
closegraph();
}
(第一次写注释,原理都在注释里了)
至于怎么滚动地图的原理嘛……自己去搜。
(要是看不懂我又可以水一篇文啦嘿嘿嘿)
滚动地图我几乎做了一天,所以你该做什么?点赞!关注!收藏!三联!!!
现在的游戏仅仅是一个雏形,下期,我们将加入障碍和分数,让整个游戏更……
好玩?
最后
以上就是可爱天空为你收集整理的C++ 谷歌小恐龙#1 游戏制作实录的全部内容,希望文章能够帮你解决C++ 谷歌小恐龙#1 游戏制作实录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复