以下代码简单的实现了:
1,控制飞机的移动
2,飞机发射子弹
3,敌机的生成与移动
4,随着分数的增大,地敌机的移动速度加快
5,防止飞机越界
6,实现游戏的暂停和结束

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>int position_x, position_y;//飞机位置
int bullet_x, bullet_y;//子弹位置
int enemy_x, enemy_y;//敌人位置
int high, width;//游戏地图的尺寸
int score;//得分
int velocity = 35;//速度void HideCursor()//隐藏光标的函数
{CONSOLE_CURSOR_INFO cursor_info = {1, 0};//第二个值为零表示隐藏光标,如果好奇的伙伴把0变为1,就会发现光标在狂闪SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
}void startup()//初始化游戏数据
{high = 20;//初始化地图width = 30;position_x = high / 2;//初始化飞机的位置position_y = width / 2;bullet_x = 0;//子弹的位置bullet_y = position_y;//因为子弹在飞机头的上方所以横坐标相同enemy_x = 0;//敌机的位置enemy_y = position_y;
}void gotoxy(int x, int y)//将光标移动到(x,y)的位置,进行从新画图,相当与代替了system("cls");避免了画面狂闪。
{HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(handle, pos);}void show()//显示画面
{gotoxy(0, 0);//光标移动到原点int i, j;for (i = 0; i < high; i++){for (j = 0; j < width; j++){if ((i == position_x) && (j == position_y))printf("*");//输出飞机else if ((i == position_x + 1) && (j == position_y - 2))printf("*****");else if ((i == position_x + 2) && (j == position_y - 2))printf(" * * ");else if ((i == enemy_x) && (j == enemy_y))printf("@");//输出敌机else if ((i == bullet_x) && (j == bullet_y))printf("|");//输出子弹elseprintf(" ");//输出空格}printf("\n");}printf("得分:%d", score);}void updateWithoutInput() //与用户输入无关的数据
{if (bullet_x - 1)//子弹的移动bullet_x--;if ((bullet_x == enemy_x) && (bullet_y == enemy_y)){score++;velocity -= 1;//随着击落一架敌机分数增加,下以辆敌机速度加快;enemy_x = -1;//从新初始化敌机坐标enemy_y = rand() % width;//随机生成位置}if (enemy_x > high){enemy_x = -1;//如果敌机已经出戒线则重新生成敌机enemy_y = rand() % width;//随机生成坐标}static int speed1 = 0;//避免更新数据影响用户的输入if (speed1 < velocity)speed1++;if (speed1 == velocity){enemy_x ++;//敌机的向下移动speed1 = 0;}}void updateWithInput()//与用户输入有关的数据
{char input,j;if (_kbhit()){input = _getch();//——getch()直接获取字符,不用按回车switch (input){case 'a':if (position_y - 2 == 0);else position_y--; break;//以下if()语句都加入了防止越界case 'd':if (position_y + 2 == width); else position_y++; break;case 'w':if (position_x == 0);else position_x--; break;case 's':if (position_x + 3 == high);else  position_x++; break;case ' ':bullet_x = position_x - 1; bullet_y = position_y; break;//发射的子弹初始位置在飞机的上空,case 'p':j = _getch(); if (j == 27)exit(0); //当输入‘p’暂停游戏,输入除ESC的按键继续游戏,如果为ESC结束程序,ESC的对应的ascill是27,exit()为结束程序的函数}}
}int main()
{HideCursor();//隐藏光标startup();//初始化游戏数据while (1){show(); //显示画面updateWithoutInput();//与用户无关的数据更新updateWithInput();   //与用户输入有关的数据更新}return 0;
}

代码实现最简单的游戏————空中飞机相关推荐

  1. 编写五子棋的完整python代码_python制作简单五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 #五子棋 '" 矩阵做棋盘 16*16 "+" 打印棋盘 for for 游戏是否结束 开 ...

  2. java猜拳游戏代码_Java实现简单猜拳游戏

    本文实例为大家分享了java实现简单猜拳游戏的具体代码,供大家参考,具体内容如下 看网上的猜拳游戏那么多,但都是用switch输入数字,所以用if嵌套,写一个简单的猜拳游戏 package game; ...

  3. python简单小游戏代码教程,Python简单小游戏代码

    球球各位大神怎么用python写一个猜词小游戏的代码? key = input('请输入一个单词:')description = input('输入单词描述:')chance = 5mark = 5p ...

  4. python猜拳小游戏代码200行左右_python简单小游戏代码,python简单小游戏代码200行...

    如何看懂python杨辉三角代码? 第一步先找规律,抽象化问题.首先我们观察到,第一行为[1],我们直接赋给一个变量:初始化数列 p = [1].核心点是这个除去首位两个 [1] 的中间部分:[p[0 ...

  5. python手机版做小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏...

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  6. python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏

    1.Python猜拳小游戏代码: 2.import random #导入随机模块 3. 4.num = 1 5.yin_num = 0 6.shu_num = 0 7.while num <= ...

  7. python简单编程代码表白,Python简单编程游戏代码

    什么是python编程 Python是一门新兴的编程语言,编程语言有很多,比如C++.Java.C#.PHP.JavaScript等,Python也是其中之一,在学习Python前,我们需要对它有一定 ...

  8. 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)

    微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...

  9. python简单小游戏代码-python基础练习之几个简单的游戏

    文档介绍 利用python写"猜数字","猜词语","谁是卧底"这三个游戏,从而快速掌握python编程的入门知识,包括python语法/列 ...

  10. python简单小游戏代码-零基础python教程-用Python设计你的第一个小游戏

    学以致用,今天给大家分享零基础Python设计你的第一个小游戏,既然要学习Python就要让它来实现我们想做的东西,这次咱就用Python来做个简单小游戏,在实践中不断成长.刚学习Python的小伙伴 ...

最新文章

  1. Error creating bean with name 'multipleEntityManagerFactory' defined in class
  2. python 作用域 前缀_Python面试题:杂项内容
  3. linux sftp没有读写权限,sftp服务器上的Linux权限问题
  4. [搜索]一种改进的召回率准确率公式计算方式
  5. oracle会话资源,oracle session 会话
  6. oracle with as内存,oracle中with as子句的用法小结(转)
  7. Python项目可以有多大?最多可以有多少行代码?
  8. 打开SharePoint 2013 web application显示iis 欢迎页面
  9. Javascript面向对象特性
  10. Python——KNN实战(附详细代码与注解)
  11. 决定系数R2;残差平方和SSE;回归平方和SSR总平方和SST;
  12. Github使用教程Git下载文件
  13. 利用Bandzip批量解压缩文件
  14. 网易云音乐虚化图片html,CSS之高斯模糊—(网易云歌单)
  15. 计算机蓝屏重启,电脑蓝屏重启,详细教您电脑经常自动蓝屏重启怎么办
  16. 【露】UK大冒险之——变身小小小黄鸡
  17. U盘忘记密码的解决方法
  18. google protobuf 在线工具
  19. 解答c语言的app,你学c语言用的什么app?
  20. [C#-2] delegate和Delegate的区别

热门文章

  1. 理解 loss function : binary cross entropy
  2. c/c++文件操作之缓冲区
  3. could not find or load the Qt platform plugin windows的解决方法
  4. Qt Creator 使用技巧(功能快捷键如注释、声明和实现之间切换)
  5. 远程连接mysql数据库 需要的操作
  6. 前端开发学java_Java前端开发需要学习什么
  7. 10款功能强大的网络嗅探工具应用分析
  8. 最详细的手机资料名词术语解释
  9. 解决nginx访问php文件变成下载
  10. 全国计算机等级考试准考证下载 怎么弄