弹指间计算机协会做游戏学编程活动2019:飞机大战

简介: 弹指间计算机协会做游戏学编程活动2019:飞机大战

整体流程:

1.清屏

2.生成随机数

3.检测有无输入

4.输出飞机

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <conio.h>
using namespace std;
int main()
{
  bool isFire = false; //是否发射了子弹
  bool isKilled = false; //是否击中了目标
  //竖直方向是x轴,水平方向是y轴,向右向下为正
  int x = 5, y = 10; //(x, y)是飞机最左边一个点的坐标
  int nx = 0, ny = 5; //(x, y)是目标的坐标
  srand((unsigned)time(NULL));
  while (true) {
    system("cls"); //清屏
    if (isKilled) //如果目标被命中
    {
      //随机生成一个新目标
      nx = (rand() % 6);//[0, 5]
      ny = (rand() % 9) + 2;//[2, 10]
      //将新目标标记为未被击中
      isKilled = false;
    }
    if (!isKilled)
    {
      //输出目标
      for (int i = 0; i < nx; i++)
        cout << endl;
      for (int i = 0; i < ny; i++)
        cout << " ";
      cout << "+" << endl;
    }
    if (isFire == false) //输出飞机上面的空行
    {
      for (int i = 0; i < x - nx; i++)
        cout << endl;
    }
    else //输出飞机上面的激光竖线
    {
      for (int i = 0; i < x - nx; i++)
      {
        for (int j = 0; j < y; j++)
          cout << " ";
        cout << "  |" << endl;
      }
      //飞机头与目标在一条线上
      if (y + 2 == ny)
        isKilled = true; //击中目标
      isFire = false;
    }
    //下面输出一个飞机图案
    for (int i = 0; i < y; i++)
      cout << " ";
    cout << "  *" << endl;
    for (int i = 0; i < y; i++)
      cout << " ";
    cout << "*****" << endl;
    for (int i = 0; i < y; i++)
      cout << " ";
    cout << " * * " << endl;
    if (kbhit()) //判断是否有输入
    {
      char input = getch(); //根据用户的不同输入来移动,不必输入回车
      switch (input) {
      case 'a':
      case 'A':
        y--;
        break;
      case 'd':
      case 'D':
        y++;
        break;
      case 'w':
      case 'W':
        x--;
        break;
      case 's':
      case 'S':
        x++;
        break;
      case ' ':
        isFire = true;
      }
    }
  }
  return 0;
}


目录
相关文章
|
6月前
|
机器人 程序员 C++
Scratch3.0——助力新进程序员理解程序(案例二、钢琴键盘)
Scratch3.0——助力新进程序员理解程序(案例二、钢琴键盘)
70 0
|
12月前
|
小程序 Java 关系型数据库
网球爱好者小程序的设计与实现
网球爱好者小程序的设计与实现
150 0
|
6月前
|
Java
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
普通玩家也能掌握的Java游戏加点系统,专业到让你无敌!
35 1
|
6月前
|
人工智能 前端开发 JavaScript
计算机毕业论文|校园资料分享系统的设计与实现
计算机毕业论文|校园资料分享系统的设计与实现
|
6月前
|
人工智能 算法 机器人
Scratch3.0——助力新进程序员理解程序(难度案例三、五子棋双人对战-电脑需要AI写不出来)
Scratch3.0——助力新进程序员理解程序(难度案例三、五子棋双人对战-电脑需要AI写不出来)
109 0
|
6月前
|
人工智能 物联网 大数据
创作活动(五十)———还记得当初自己为什么选择计算机?
创作活动(五十)———还记得当初自己为什么选择计算机?
37 0
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏13之英雄不要走出屏幕
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏13之英雄不要走出屏幕
139 0
|
人工智能 算法 固态存储
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
这才是模块化电脑该有的样子:一人打造的超迷你计算机,震动了整个极客圈
137 0
|
Java
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
手把手一步一步教你使用Java开发一个大型街机动作闯关类游戏12之英雄自由行走
157 0
弹指间计算机协会 2020做游戏学编程:井字棋
弹指间计算机协会 2020做游戏学编程:井字棋
115 0