让飞机发射激光
思路:
我们按空格键后让飞机发射出激光“ | ”,就是在飞机上方显示一列竖线“ | ”,并且定义一个新的变量isfire,用来记录飞机是否处于发射激光的状态。当isfire等于1时,将在飞机的正上方输出激光竖线哦
代码实现:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,j;
int x = 5;
int y = 10;
char input;
int isfire = 0;
while (1)
{
system("cls"); //清屏函数
if (isfire==0) //输出飞机上面的空行
{
for(i=0;i<x;i++)
printf("\n");
}
else{
for(i=0;i<x;i++)
{
for (j=0;j<y;j++)
printf(" ");
printf(" |\n");
}
isfire = 0;
}
//输出一个复杂的飞机图案
for (j=0;j<y;j++)
printf(" ");
printf(" *\n");
for (j=0;j<y;j++)
printf(" ");
printf("*****\n");
for (j=0;j<y;j++)
printf(" ");
printf(" * * \n");
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;
}
具体效果呢,大家可以自己去试一下,很有趣的
打靶练习
思路和想法:
在上一文中我们实现了一个较为复杂的飞机图案,并且使它动了起来,接下来我们来为飞机增加一个目标——靶子“ + ” ,通过控制飞机发射激光“ | ” 击中它,通过上一文中的练习,我们熟悉了如何打印出飞机,并且使得飞机动起来。
其次,我们需要在第一行加一个靶子“ + ”,并且控制飞机发射激光,变量iskilled用来存储是否被击中,iskilled等于0显示靶子,当iskilled等于1时,不显示靶子
接下来通过代码实现一下
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int i,j;
int x=5;
int y=10;
char input;
int isfire = 0;
int ny = 5; //一个靶子,放在第一行的ny列上
int iskilled = 0;
while (1)
{
system("cls"); //清屏函数
if (!iskilled) //输出靶子
{
for (j=0;j<ny;j++)
printf(" ");
printf("+\n");
}
if (isfire==0) //输出飞机上面的空行
{
for (i=0;i<x;i++)
printf("\n");
}else //输出飞机上面的激光竖线
{
for (i=0;i<x;i++)
{
for (j=0;j<y;j++)
printf(" ");
printf(" |\n");
}
if(y+2==ny)
iskilled = 1;
isfire = 0;
}
//下面输出一个复杂的飞机图案
for(j=0;j<y;j++)
printf(" ");
printf(" *\n");
for (j=0;j<y;j++)
printf(" ");
printf("*****\n");
for (j=0;j<y;j++)
printf(" ");
printf(" * * \n");
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;
}
效果图如下:
因为激光子弹刷新过快,并没有被截图截到,所以显示效果上没有看到激光
飞机游戏的函数重构
我们自习看我们之前所写的代码,会发现我们有很多代码都是在重复的敲很多遍,那么我们如何避免这种浪费时间的行为呢?我们可以使用函数,接下来,让我们看看用函数如何重构飞机游戏
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
//全局变量
int position_x,position_y; //飞机位置
int high,width; //游戏画面尺寸
void startup() //数据的初始化
{
high = 20;
width = 30;
position_x = high/2;
position_y= width/2;
}
void show() //显示画面
{
system("cls"); //清屏函数
int i ,j;
for (i=0;i<high;i++)
{
for (j=0;j<width;j++)
{
if ((i==position_x)&&(j==position_y))
printf(" * "); //输出飞机 *
else
printf(" "); //输出空格
}
printf("\n");
}
}
void updatewithoutinput() //与用户无关的更新
{
}
void updatewithinput() //与用户输入有关的更新
{
char input;
if(kbhit())
{
input = getch(); //根据用户的不同输入来移动,不必输入回车
if( input == 'a')
position_y--; //位置左移
if (input == 'd')
position_y++; //位置右移
if (input == 'w')
position_x--; //位置上移
if (input == 's')
position_x++; //位置下移
}
}
int main()
{
startup(); //数据的初始化
while(1) //数据循环执行
{
show(); //显示画面
updatewithoutinput(); //与用户输入无关的更新
updatewithinput(); //与用户输入有关的更新
}
return 0;
}
至此,飞机小游戏就算初步完成,并且可以游玩啦,如果大家想更深入一点,可以自己学习一下哦。