经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C 语言 » 查看文章
用C语言制作一个最简单的飞机游戏!
来源:IT程序员小文  时间:2018/12/17 10:38:46  对本文有异议

第一步,控制飞机移动

还记得小时候玩的飞机大战游戏吗?按a、s、d、w键后控制飞机的上下左右移动。

在这里我们通过按a、s、d、w键来改变坐标x,y的值,从而控制飞机的移动。

下面是代码:

1.jpg

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

2.jpg

(小编推荐一个学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下面的操作,输出激光。

3.jpg

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

4.jpg

这是最后的执行效果:

5.jpg

第三步,增加打靶操作

我们可以增加一个靶子‘+’,来控制我们的飞机发射激光击中它。

在这里,我们新增一个变量isKilled用来储存靶子是否被击中。

当isKilled为0时显示靶子,当isKilled为1时靶子消失。

这是我们要增加的代码:

首先新增两个变量,

6.jpg

增加输出靶子的代码:

7.jpg

增加击中靶子后的效果:

8.jpg

这是最后的效果图:

9.jpg

(小编推荐一个学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 ;


 友情链接:直通硅谷  点职佳  北美留学生论坛