飞机大战小游戏编写教程(3)
本帖最后由 zlh 于 2016-2-14 19:43 编辑教程开始之前先和大家说一声抱歉,因为前两天晚上都和同学出去玩,忘记发教程了。
今天我们要说的是飞机的移动。
相信大家在写一些小游戏的时候都会遇到如何让单位移动的问题。@黑龍
这个问题确实也困扰过我,不过我也找到了解决方法。
就是使用gotoxy()来控制。gotoxy()只要改变一下其中的一个变量就可以实现移动。
例如gotoxy(x,y)是飞机的当前位置。x--就是向左走,x++就是向右走.y--就是向前走,y++就是向后走。
至于子弹的移动,可以用gotoxy()+for循环。
具体代码是这样的。
void kongzhi(int bx,int by)
{
int a;
a=getch();
switch(a)
{
case Left:if(x != 1)
{
x++;
gotoxy(x,y);
printf(" ");
x--;
x--;
gotoxy(x,y);
printf("♂");
}break;
case Right:if(x != 18)
{
x++;
gotoxy(x,y);
printf(" ");
x--;
x++;
gotoxy(x,y);
printf("♂");
}break;
case Kong:
{
bx=y;
for(by=y;by>1;) //发射子弹
{
by--;
gotoxy(x,by);
printf("θ");
Sleep(20);
gotoxy(x,by);
printf(" ");
y=by;
jifan();
if(r==0||r1==0||r2==0) break;
}
y=bx;
}break;
case Esc:t=0; break; //退出
default:break;
}
}
这里我们还加入了按Esc退出的功能。
接下来我们讲一下敌机的移动.
敌机的移动和我机的移动大概相同,只要用一个循环一直让他前进就可以了。
这里顺便回答一下为什么让我机不用前进,因为敌方靠过来和我方前进是差不多的。
具体代码:
void dfeiji ()
{
while(1)
{
gotoxy(d,r);
printf("Ψ");
gotoxy(d2,r2);
printf("♀");
Sleep(900);
gotoxy(d,r);
printf(" ");
gotoxy(d1,r1);
printf(" ");
gotoxy(d2,r2);
printf(" ");
if(kbhit())
{
kongzhi(0,0);
}
if(!r){d=rand()%17+1; m++;}
if(!r1) {d1=rand()%17+1; m++;}
if(!r2) {d2=rand()%17+1; m++;}
r++;
r1++;
r2++;
byebye();
if(r==18) r=0;
if(r1==18) r1=0;
if(r2==18) r2=0;
if(r==0||r1==0||r2==0) break;
}
}
那么今天的教程就到这里,最后还是要和大家说一声抱歉。那么明天就是我们程序的最后一步,判定游戏结束和分数等数据的统计。 我要狠狠的吐槽一下鱼C的代码格式。复制进去之前是好好地,复制进去之后变得一塌糊涂的 沙发945
@黑龍 @machimilk @小甲鱼的二师兄 @康小泡 @拈花小仙 {:10_256:}我们都不会出现这个问题啊
还有 ♂ 是啥? 黑龍 发表于 2016-2-14 19:56
我们都不会出现这个问题啊
还有 ♂ 是啥?
这个就是飞机啊。不过为毛在鱼C上输出变成了斜的 {:7_139:}支持楼主ing... 支持!!! 很想学习下是如何编写的。 有些不明白的地方,kongzhi函数里的Left、Right、Kong是什么意思?是不是代码不全(没看到哪里定义了呀,我VS2017),求好心人解答
页:
[1]