马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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;
}
}
那么今天的教程就到这里,最后还是要和大家说一声抱歉。那么明天就是我们程序的最后一步,判定游戏结束和分数等数据的统计。 |