第一步,控制飞机移动
还记得小时候玩的飞机大战游戏吗?按a、s、d、w键后控制飞机的上下左右移动。
在这里我们通过按a、s、d、w键来改变坐标x,y的值,从而控制飞机的移动。
下面是代码:

下面是实现效果:可以实现飞机的上下左右移动

(小编推荐一个学C语言/C++的学习群:788649720,入群即送C/C++全套学习资料,满满的干货!)
在上面的代码中,用到了以下几个函数:
1:输入函数getch(),头文件(#include<conio.h>)
与scanf函数相比,getch()不需要回车就可以得到输入的字符。
2:kbhit()函数
它的作用是在用户有键盘输入时返回1,否则返回0;在没有键盘输入时if(kbhit())下面的语句不会运行,从而避免了用户不输入,游戏就暂停的情况
至于输出飞机图案的那段代码,就不用细说了吧?就是数学问题。
看着挺多,其实可以分为两个部分,一部分是输出飞机图案,另外一部分是控制飞机的移动。
第二步,让飞机发射激光
我们接下来要实现的是当我们按下空格键时,飞机可以发射激光子弹。
在这里我们通过定义一个变量"isFire"用来记录飞机是否处于发射子弹的状态。
这里我们要对两个部分都增加一部分代码:
第一部分,新增加了一个变量isFire,同时利用了if判断语句,
当变量isFire为0时,即没有发射子弹,执行与原来一样的操作,输出飞机上面的空格即可。
而当变量isFire为1时,飞机发射子弹。我们就需要执行else下面的操作,输出激光。

第二部分,增加当用户输入空格时,变量isFire的值变为1。

这是最后的执行效果:

第三步,增加打靶操作
我们可以增加一个靶子‘+’,来控制我们的飞机发射激光击中它。
在这里,我们新增一个变量isKilled用来储存靶子是否被击中。
当isKilled为0时显示靶子,当isKilled为1时靶子消失。
这是我们要增加的代码:
首先新增两个变量,

增加输出靶子的代码:

增加击中靶子后的效果:

这是最后的效果图:

(小编推荐一个学C语言/C++的学习群:788649720,入群即送C/C++全套学习资料,满满的干货!)
如果有像我一样,想要自学C语言的,可以关注我,不定期放教程,由简入难,一起学习,一起进步!
这是本文的源码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{
int i, j;
int x = 20;
int y = 20;
char input;
int isFire = 0;
int k = 20; //设立一个靶子,放在第一行的k列上。
int isKilled = 0 ;
while(1)
system("cls"); //清屏函数
if(!isKilled) //输出靶子。
for(j=0;j<k;j++)
printf(" ");
printf("+ ");
}
if(isFire == 0)
for(i=0;i<x;i++)
printf(" "); //输出飞机上面的空格
else
for(i=0;i<x;i++) //输出激光
for(j=0;j<y;j++)
printf(" | ");
if(y+2==k) //+2是因为激光在飞机的正中间,距离飞机最左边两个坐标。
isKilled = 1;
isFire = 0;
//输出飞机图案
printf(" * ");
printf("***** ");
printf(" * * ");
//控制飞机移动
if(kbhit()) //判断键盘是否有输入
input = getch();
if(input == 'a')
y--;
if(input == 'd')
y++;
if(input == 'w')
x--;
if(input == 's')
x++;
if(input == ' ')
isFire = 1;
return 0 ;