#include "stdio.h"
#include <windows.h>
#include <conio.h>
#include <time.h>
#define Esc 27 //退出
#define Up 72 //上,下,左,右
#define Down 80
#define Left 75
#define Right 77
#define Kong 32 //发射子弹int x=10; //飞机坐标
int y=18;
int d2=10;//敌机坐标
int d1=10;
int d=10;
int r=1;
int r1=1;
int r2=1;
int t=1; // 游戏结束
int f=0; // 计分数
int m=3; // 敌机数
int j=0; // 歼敌数
char p; // 接受按键
void kongzhi(int bx,int by);//声明函数
void huatu();
void gotoxy(int x,int y) //移动坐标
{COORD coord;coord.X=x;coord.Y=y;SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void hidden()//隐藏光标
{HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_CURSOR_INFO cci;GetConsoleCursorInfo(hOut,&cci);cci.bVisible=0;//赋1为显示,赋0为隐藏SetConsoleCursorInfo(hOut,&cci);
}//说明
void shuoming()
{printf("\t\t\t\n\n\n\n");printf("\t\t\t方向控制\n\n""\t\t\t上 ↑\n\n""\t\t\t下 ↓\n\n""\t\t\t左 ←\n\n""\t\t\t右 →\n\n""\t\t\t子弹 空格\n\n\n""\t\t\t退出请按 ESC\n");gotoxy(0,0);
}//判断我机死没死/游戏结束
void byebye()
{if((x==d&&y==r)||(x==d1&&y==r1)||(x==d2&&y==r2)){gotoxy(1,3);printf(" !!! 游戏结束 !!!\n""*******************\n"" 您的总得分: %d\n\n"" 敌机数: %d\n"" 歼敌数: %d\n"" 命中率: %.0f %%\n""*******************\n",f,m,j,((float)j/(float)m)*100);while(!kbhit()){Sleep(500);gotoxy(1,12);printf(" 继续请按任意键...\n\n\n");Sleep(900);gotoxy(1,12);printf(" ");}gotoxy(0,0);huatu();f=0; m=0; j=0;if(x>=18) x--;else x++;gotoxy(x,y);printf("Ж");}
}// 计分/更新敌机
void jifan()
{if(x==d&&y==r){gotoxy(d,r);printf("3");Sleep(200);gotoxy(d,r); printf(" "); f+=2; r=0; j++;}if(x==d1&&y==r1){gotoxy(d1,r1);printf("1");Sleep(200);gotoxy(d1,r1);printf(" ");f+=3; r1=0; j++;}if(x==d2&&y==r2){gotoxy(d2,r2);printf("0");Sleep(200);gotoxy(d2,r2);printf(" ");f+=1; r2=0; j++;}gotoxy(26,2);printf(" %d \n",f);}//画图
void huatu()
{int i,n;for(i=0;i<=20;i++){for(n=0;n<=20;n++){printf("*");}printf("\n");}for(i=1;i<=19;i++){for(n=1;n<=19;n++){gotoxy(i,n);printf(" ");}}
}//随机产生敌机
void dfeiji()
{while(t){if(!r) {d=rand()%17+1; m++;}if(!r1) {d1=rand()%17+1; m++;}if(!r2) {d2=rand()%17+1; m++;}while(t){r++; r1++; r2++;gotoxy(d,r);printf("Ψ");gotoxy(d1,r1);printf("ж");gotoxy(d2,r2);printf("♀");Sleep(900);gotoxy(d,r);printf(" ");gotoxy(d1,r1);printf(" ");gotoxy(d2,r2);printf(" ");kongzhi(0,0);byebye();if(r==18) r=0;if(r1==18) r1=0;if(r2==18) r2=0;if(r==0||r1==0||r2==0) break;}}
}//操控飞机
void kongzhi(int bx,int by)
{int a;while (kbhit()){if((p=getch())==-32) p=getch();a=p;gotoxy(22,5);switch(a){//控制方向case Up:if (y!=1){gotoxy(x,y);printf(" ");y--;gotoxy(x,y);printf("Ж");}break;case Down:if (y!=18){gotoxy(x,y);printf(" ");y++;gotoxy(x,y);printf("Ж");}break;case Left:if (x!=1){gotoxy(x,y);printf(" ");x--;gotoxy(x,y);printf("Ж");}break;case Right:if (x!=18){gotoxy(x,y);printf(" ");x++;gotoxy(x,y);printf("Ж");}break;case Kong:{bx=y;for(by=y;by>1;) //发射子弹{by--;gotoxy(x,by);printf("θ");Sleep(10);gotoxy(x,by);printf(" ");y=by;jifan();if(r==0||r1==0||r2==0) break;}y=bx;}break;case Esc:t=0; break; //退出default:break;}}
}
void main()
{srand(time(NULL));shuoming();hidden();huatu();gotoxy(x,y);printf("Ж");gotoxy(22,2);printf("分数:");while (t){kongzhi(0,0);if(t)dfeiji ();}
}

一个不到300行的C语言打飞机游戏相关推荐

  1. 使用c语言实现飞机游戏

    在这里,我主要使用scanf函数和printf函数来实现一个简单的飞机游戏,并且通过函数的形式实现,同时,感谢 童晶 老师的教程,链接https://zhuanlan.zhihu.com/c2game ...

  2. c语言飞机借位,使用c语言实现飞机游戏

    在这里,我主要使用scanf函数和printf函数来实现一个简单的飞机游戏,并且通过函数的形式实现. 整体思路:main函数 在这里,主要是使用一个简易的游戏框架,来减小开发游戏时的难度int mai ...

  3. java 300行代码 冒险闯关小游戏(代码+讲解)

     作为一个男孩子,从小就喜欢晚一些游戏.今天就用java写一个类似马里奥的冒险闯关小游戏,但这也不是一两天能完成的事情,我将会持续更新这个游戏(有什么好的介意也非常欢迎大家提出来,也能在我的基础上自己 ...

  4. c语言全民飞机游戏代码,课内资源 - 基于VC++和OpenCV实现的全民飞机大战游戏

    摘要功能:利用C++语言完成了一个小游戏项目-全民飞机大战,该游戏首先能够给用户提供注册,登录功能:提供了菜单栏及两种游戏模式,一种是无尽模式,另一种是一般模式:一般模式中用户通过控制玩家飞机攻击敌方 ...

  5. Python 300行游戏开发(基于Pygame贪吃蛇)

    使用300行实现贪吃蛇的简单游戏(详细教程) 上效果图: 简单介绍 编译器: PyCharm 环境: python 3.7 使用的库: Pygame,需要自己安装,或者在PyCharm中自动安装. 模 ...

  6. c语言小飞机游戏如何实现敌机多个输出,飞机游戏软件:C语言应用初步感受

    C语言课程设以一节课,首先提供一个C语言的飞机游戏让大家感受一下,上学期C语言课程,主要是各种语句的练习,这次是用以前的知识来感受一个实际的系统. 首先安装c-free,然后是将代码贴进去运行, 界面 ...

  7. 通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    [摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...

  8. 三百行python代码的项目_使用300行代码创建一个分布式系统

    使用 300 行代码创建一个分布式系统 构建一个分布式系统是很困难的. 它需要可扩展性. 容错性. 高可用性. 一致性. 可伸缩以及高效.为了达到这些目的,分布式系统需要很多复杂的组件以一 种 复杂的 ...

  9. 投篮c语言程序,C语言300行-投篮

    <C语言300行-投篮>由会员分享,可在线阅读,更多相关<C语言300行-投篮(7页珍藏版)>请在人人文库网上搜索. 1.include stdio.h#ifdef __APP ...

  10. c语言300行代码大作业,C语言300行代码

    <C语言300行代码>由会员分享,可在线阅读,更多相关<C语言300行代码(3页珍藏版)>请在人人文库网上搜索. 1.include #include #include #in ...

最新文章

  1. RichTextBox实现关键字自定义颜色显示(C#)
  2. Window Function--the function of window function
  3. 严重性代码说明项目文件行 禁止显示状态错误 C4996 fopen('fscanf'、strcmp):This function or variable may be unsafe. 最全解决办法
  4. Openlayers中使用Cluster+Overlay实现点击单个要素和聚合要素时显示不同弹窗
  5. java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室
  6. 如何给 Visual C++ 中的对话框增加位图背景
  7. SV processses
  8. 想设计亿万级高并发架构,你要先知道高并发是什么?
  9. Cannot create an instance of OLE DB provider OraOLEDB.Oracle for linked server xxxxxxx.
  10. Microsoft.mshtml.dll 添加引用及类型选择错误问题解决办法
  11. CodeBlocks下载与安装教程
  12. mongoose schema Schema hasn't been registered for model
  13. 加密狗加密excel ,方法之 C#开发Excel自定义函数
  14. (邱维声)高等代数课程笔记:数域
  15. 作为一个才刚刚开始学习java的小白 居然显示码龄3年??每天吃饭点菜成为了一个难题 然后今天简单写了一个随机菜单
  16. MySQL及达梦数据库数字金额转人民币大写
  17. 基于android 10的国产手机,魅友有福了,基于Android 10的Flyme来了,10款旧机型可申请...
  18. VUE之组件(Props特性深析)
  19. 超实数与布尔巴基学派
  20. python 网络编程是什么_什么是网络编程-Python 网络编程-嗨客网

热门文章

  1. 9102,用原生js造一个轮播组件
  2. 马蹄疾 | 聊聊你可能并没有完全掌握的 Flex 布局:从概念入手,丝丝入扣
  3. 智能家居如何让消费者心甘情愿地买单
  4. 全国多地元旦迎雾霾天气 京津冀霾明天短暂减弱
  5. oracle_dblink配置
  6. opensips1.6.4+freeradius2.1.10+radiusclient0.5.6 problem do accounting
  7. 串-第4章-《数据结构题集》答案解析-严蔚敏吴伟民版
  8. JAVA多线程(转)
  9. freemarker 标签循环list 以及获取下标值
  10. Android 4.1初识--7月13号