#include<stdio.h>
#include<stdlib.h> //清屏命令在这里。
#include <windows.h> //延时10毫秒-sleep
#include <iostream>
#include <conio.h> //getch()----不用按回车,就可以输入字符。
using namespace std;
int main() //弹跳小球,完整版
{
int j, i;
int x = 0;
int y = 5;
char input;
int isFired = 0; //判断,是否需要开枪,是一个状态值!
int iskilled = 0; //判断目标是否被杀死。
int ny = 5;
while (1)
{
system("cls"); //清屏函数
//========生成一个靶子=================
if (iskilled==0) //当障碍物,靶子的状态是0的时候,可以显示这个靶子。
{
for (i = 0; i < ny; i++)
{
printf(" "); //这些都是空行!
}
printf("+\n"); //靶子显示出来
}
//========生成一个靶子=================
//处理激光射线部分的代码。================
if (isFired==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+0==ny) //如果子弹碰到障碍物,死亡状态就变成1======y+2=ny,为什么加2,这是因为y和ny有偏移,y+2.正好对着ny,激光设置时候左边有2个空格
{
iskilled = 1;
}
isFired = 0; //开火状态为1,闭火状态为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");
//输出飞机的图形================
//scanf("%c", &input); //获取键盘输入的字符,需要按回车确认!
input = getch();
if (input=='s')
{
++x;
}
if (input == 'w')
{
--x;
}
if (input == 'a')
{
--y;
}
if (input == 'd')
{
++y;
}
if (input == ' ') //按一下空格,然后就开火状态为1
{
isFired = 1;
}
}
return 0;
}
结果如图:

网友评论