#include

#include

#include

#include

#define High 15 // 游戏画面尺寸

#define Width 25

#define EnemyNum 5 // 敌机个数

// 全局变量

int position_x,position_y; // 飞机位置

int enemy_x[EnemyNum],enemy_y[EnemyNum]; // 敌机位置

int canvas[High][Width] = {0}; // 二维数组存储游戏画布中对应的元素

// 0为空格,1为飞机*,2为子弹|,3为敌机@

int score; // 得分

int BulletWidth; // 子弹宽度

int EnemyMoveSpeed; // 敌机移动速度

void gotoxy(int x,int y) //光标移动到(x,y)位置

{

HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);

COORD pos;

pos.X = x;

pos.Y = y;

SetConsoleCursorPosition(handle,pos);

}

void startup() // 数据初始化

{

position_x = High-1;

position_y = Width/2;

canvas[position_x][position_y] = 1;

int k;

for (k=0;k

{

enemy_x[k] = rand()%2;

enemy_y[k] = rand()%Width;

canvas[enemy_x[k]][enemy_y[k]] = 3;

}

score = 0;

BulletWidth = 0;

EnemyMoveSpeed = 20;

}

void show() // 显示画面

{

gotoxy(0,0); // 光标移动到原点位置,以下重画清屏

int i,j;

for (i=0;i

{

for (j=0;j

{

if (canvas[i][j]==0)

printf(" "); // 输出空格

else if (canvas[i][j]==1)

printf("*"); // 输出飞机*

else if (canvas[i][j]==2)

printf("|"); // 输出子弹|

else if (canvas[i][j]==3)

printf("@"); // 输出飞机@

}

printf("\n");

}

printf("得分:%d\n",score);

Sleep(20);

}

void updateWithoutInput() // 与用户输入无关的更新

{

int i,j,k;

for (i=0;i

{

for (j=0;j

{

if (canvas[i][j]==2)

{

for (k=0;k

{

if ((i==enemy_x[k]) && (j==enemy_y[k])) // 子弹击中敌机

{

score++; // 分数加1

if (score%5==0 && EnemyMoveSpeed>3) // 达到一定积分后,敌机变快

EnemyMoveSpeed--;

if (score%5==0) // 达到一定积分后,子弹变厉害

BulletWidth++;

canvas[enemy_x[k]][enemy_y[k]] = 0;

enemy_x[k] = rand()%2; // 产生新的飞机

enemy_y[k] = rand()%Width;

canvas[enemy_x[k]][enemy_y[k]] = 3;

canvas[i][j] = 0; // 子弹消失

}

}

// 子弹向上移动

canvas[i][j] = 0;

if (i>0)

canvas[i-1][j] = 2;

}

}

}

static int speed = 0;

if (speed

speed++;

for (k=0;k

{

if ((position_x==enemy_x[k]) && (position_y==enemy_y[k])) // 敌机撞到我机

{

printf("失败!\n");

Sleep(3000);

system("pause");

exit(0);

}

if (enemy_x[k]>High) // 敌机跑出显示屏幕

{

canvas[enemy_x[k]][enemy_y[k]] = 0;

enemy_x[k] = rand()%2; // 产生新的飞机

enemy_y[k] = rand()%Width;

canvas[enemy_x[k]][enemy_y[k]] = 3;

score--; // 减分

}

if (speed == EnemyMoveSpeed)

{

// 敌机下落

for (k=0;k

{

canvas[enemy_x[k]][enemy_y[k]] = 0;

enemy_x[k]++;

speed = 0;

canvas[enemy_x[k]][enemy_y[k]] = 3;

}

}

}

}

void updateWithInput() // 与用户输入有关的更新

{

char input;

if(kbhit()) // 判断是否有输入

{

input = getch(); // 根据用户的不同输入来移动,不必输入回车

if (input == 'a' && position_y>0)

{

canvas[position_x][position_y] = 0;

position_y--; // 位置左移

canvas[position_x][position_y] = 1;

}

else if (input == 'd' && position_y

{

canvas[position_x][position_y] = 0;

position_y++; // 位置右移

canvas[position_x][position_y] = 1;

}

else if (input == 'w')

{

canvas[position_x][position_y] = 0;

position_x--; // 位置上移

canvas[position_x][position_y] = 1;

}

else if (input == 's')

{

canvas[position_x][position_y] = 0;

position_x++; // 位置下移

canvas[position_x][position_y] = 1;

}

else if (input == ' ') // 发射子弹

{

int left = position_y-BulletWidth;

int right = position_y+BulletWidth;

if (left<0)

left = 0;

if (right>Width-1)

right = Width-1;

int k;

for (k=left;k<=right;k++) // 发射闪弹

canvas[position_x-1][k] = 2; // 发射子弹的初始位置在飞机的正上方

}

}

}

int main()

{

startup(); // 数据初始化

while (1) // 游戏循环执行

{

show(); // 显示画面

updateWithoutInput(); // 与用户输入无关的更新

updateWithInput(); // 与用户输入有关的更新

}

return 0;

}

一键复制

编辑

Web IDE

原始数据

按行查看

历史

c语言飞机空战游戏的具体步骤,空战游戏.cpp相关推荐

  1. 怎么开发联机小游戏_Q飞机游戏:空战吃鸡大乱斗游戏!好玩的联机Q飞机对战小游戏...

    20000+游戏爱好者已加入我们! 带你发现好游戏! <Q飞机>游戏小程序好玩吗? <Q飞机>小游戏怎么玩? 只有你想不到, 没有我找不到的好游戏! 「良心好游戏推荐」 搜罗了 ...

  2. C语言---飞机大战游戏

    飞机大战小游戏(包含图片.音效) 示例演示: 一.建立的全部源文件 二.源代码 1.飞机大战2.0 .cpp 2.开场动画.cpp 3.游戏结束.cpp 4.头文件connect.h 三.图片资源 四 ...

  3. C语言飞机大战程序思路,C语言代码实现飞机大战

    本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下 这个游戏的功能很单一,也就是"飞机大战",哈哈哈哈.总共只有300多行代码左右,你也可以想想它会有多 ...

  4. C语言第十二课:编写扫雷游戏(综合练习2)

    目录 前言: 一.文件建立: 1.头文件game.h: 2.函数定义文件game.c: 3.工程测试文件test.c: 二.编写井字棋游戏: 1.程序整体执行思路: 2.menu菜单: 3.game游 ...

  5. c语言课程结束小项目:2048小游戏

    <C语言程序设计基础>学习完毕,完成第一个项目:2048小游戏. //思考:编程时,要先想整个框架还是先想每个函数的算法. //思考:每一个函数要不要传参数(即数组) //思考:每一个函数 ...

  6. 飞机大战c语言设计报告,中南大学电信-C语言飞机大战实验报告.doc

    中南大学电信-C语言飞机大战实验报告 C语言课程设计报告 题 目 C语言飞机大战 学生姓名 学 号 指导教师 学 院 信息科学与工程学院 专业班级 电子信息工程2班 完成时间 程序框图 按任意键进入游 ...

  7. 如何用C语言快速实现三子棋(步骤详细)

    目录 前言 问题描述 工具 基本思路和流程 三子棋的规则 代码实现思路 实现步骤 模块化 菜单界面 代码 选择的实现 初始化和打印棋盘 棋盘 使用宏定义 初始化 打印 考虑如何实现图表 提供代码 效果 ...

  8. 用Python写简单游戏的一般步骤

    用Python写简单游戏的一般步骤 前言   自己用python写过几个简单的游戏后,发现对于已经写过的这些游戏而言,其创作流程都有一些相通性,自此小结一下用python写游戏的一般步骤. pytho ...

  9. 我和计算机做游戏课后反思,语言活动设计《我和风儿做游戏》

    语言活动设计<我和风儿做游戏> 活动意图 本活动根据幼儿的年龄特点设计,以常见的自然现象"风"为载体,通过提供丰富多样.适宜的操作材料与环境,引导幼儿积极主动地探究环境 ...

最新文章

  1. CheckStyle
  2. Uva10285 Longest Run on a Snowboard
  3. James 3.0 邮箱配置
  4. 语音留言无法在电话上播放
  5. Spring(四)——AOP、Spring实现AOP、Spring整合Mybatis、Spring中的事务管理
  6. Linux vim打开文件的四种方式
  7. 有了这款Python神器,新手也会调试代码!
  8. MapHack源代码
  9. php300云,概述 · PHP300Framework2.0 · 看云
  10. 简单的基准测试:不可变集合VS持久集合
  11. Qt文档阅读笔记-Qt工作笔记-QThread解析与实例(主线程发送信号给子线程)
  12. python打印字符串的前五行_python基础-字符串(6)
  13. 局域网即时通讯软件_远程桌面监控软件好不好用?哪个好?
  14. 数量遗传学 第五章 双亲杂交后代数量性状均值和方差组成
  15. 基于 arm 设计开发工具包的 Arm Cortex-M3 处理器设计(第二章:示例微处理器组成及各个Verilog文件功能及作用)
  16. jQuery 下载保存图片的方法
  17. OB2263MP小知识
  18. 用Java将32 bpp映像转换为16 bpp映像
  19. Android手机的驱动安装
  20. Cesium 对象Entity点击查看属性信息

热门文章

  1. SJTU-ACM-1530
  2. Lexical or preprocessor issue解决方法
  3. 鼠标单击就选中一个字的解决办法
  4. 小明Q1投影仪好不好?适合新手小白使用吗?
  5. 【Python】List内元素两两组合(适用于txt文件数据转坐标形式)
  6. 智能取餐柜如何解决高校用餐问题
  7. 考试如何用计算机,高会考试计算器长什么样?如何使用?一文说全了
  8. java创建目录的方法:mkdir()、mkdirs()
  9. 中国自动贴标机(打印和应用系统)市场趋势报告、技术动态创新及市场预测
  10. 你跟面试官打过架吗?