最简单的飞机大战小游戏(C语言实现)

思路分析

所谓飞机射击类的游戏,就是关于两个对象之间的行动而产生的一系列联系,对于我们的飞机而言,要实现移动和射击这最简单的两种行为,而我们的敌人——靶子只需要出现并在识别到飞机的射击行为后消失就好,我们目前只设计静态靶子。

1.飞机的移动通过用户的输入来实现,作为cs发烧友,"W" "S" "A" "D"这四个键已经刻入了我们的DNA之中,所以在用户每次输入这几个字母时,我们的飞机要在相应的方向上进行位移(通过对x,y的加减操作实现,加减数字的大小来实现模拟速度) 。为避免输入一个字符就要按一下"Enter"键的麻烦,我们在此引入#include头文件,用_getch()函数实现输入。最后在每次循环开始进行清屏操作,避免满屏都是“飞机”的痕迹。

2.x,y两个变量实时的改变都会反映飞机的位置,我们首先将靶子"+"随机固定在某个位置,让飞机进行射击,即每行输出 "|" ,当飞机的y值+2==靶子的值时,改变我们的标记值(因为飞机的形状,y值对应并不是飞机的中线),此时靶子消失。

#include
#include
#include
int main() {
 int i, j;
 int x = 10;
 int y = 5;
 char input;
 int ny = 5;
 int isFired = 0;
 int isKilled = 0;
 while (1) {
  system("cls");

  if (isKilled == 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 + 2 == ny)
    isKilled = 1;
 
  isFired = 0; }
 
 for (i = 0; i < x; i++)
  printf("\n");
 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 == ' ')
  isFired = 1;
}
 return 0;}
 

效果演示 

最简单的飞机大战小游戏(C语言实现)_第1张图片

由于我们的输入是单个字符型,所以移动和攻击动作会有明显的延时,感兴趣的朋友可以了解一下EasyX图形库。

 

你可能感兴趣的:(Game,c++)