本文实例为大家分享了C语言实现简单飞机大战的具体代码,供大家参考,具体内容如下

这个游戏的功能很单一,也就是“飞机大战”,哈哈哈哈。总共只有300多行代码左右,你也可以想想它会有多简陋,把它复制下来编译一下可以直接执行,需要的同学可以自取~

PS:我运行的环境是 dev c++,前提你要在C99的环境中执行

以下是源代码

#include

#include

#include //将用户从键盘获得的输入进行输出

#include //获得用户键盘的输入

//定义全局变量

int high,width; //定义边界

int position_x,position_y; //飞机位置

int bullet_x,bullet_y; //子弹位置

int enemy_x,enemy_y; //敌军飞机

int score; //获得分数

int flag; //飞机状态

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

void welcometogame(); //初始化界面

int color(int c); //更改文字颜色

void explation(); //游戏右侧显示

void scoreandtips(); //显示游戏提示

void show(); //显示游戏界面

void endgame(); //游戏结束

/**

* 文字颜色函数

*/

int color(int c)

{

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), c); //更改文字颜色

return 0;

}

/**

* 设置光标位置

*/

void gotoxy(int x,int y)

{

COORD c;

c.X=x;

c.Y=y;

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);

}

void welcometogame() //开始界面

{

int n;

color(15);

gotoxy(43,10);

printf("飞 机 大 战");

color(11);

gotoxy(25, 22);

printf("1.开始游戏");

gotoxy(45, 22);

printf("2.游戏说明");

gotoxy(65, 22);

printf("3.退出游戏");

gotoxy(40,27);

color(3);

printf("请选择 1 2 3:");

color(14);

scanf("%d", &n); //输入选项

switch (n)

{

case 1:

system("cls");

show();

break;

case 2:

explation(); //游戏说明函数

break;

case 3:

exit(0); //退出游戏

break;

default:

color(12);

gotoxy(40,28);

printf("请输入1-3之间的数!");

_getch(); //输入任意键

system("cls"); //清屏

welcometogame();

}

}

void explation() //游戏提示

{

int i,j = 1;

system("cls");

color(10);

gotoxy(44,1);

printf("游戏说明");

color(2);

for (i = 3; i <= 28; i++) //输出上下边框===

{

for (j = 6; j <= 80; j++) //输出左右边框||

{

gotoxy(j, i);

if (i == 3 || i == 28) printf("=");

else if (j == 6 || j == 80) printf("||");

}

}

color(3);

gotoxy(20,5);

printf("1. W,A,S,D 分别控制飞机的上下左右移动");

color(10);

gotoxy(20,8);

printf("2. 按空格发射子弹,打中敌机即可得到一分");

color(14);

gotoxy(20,11);

printf("3.碰到敌机子弹死亡");

color(11);

gotoxy(20,14);

printf("4. ESC :退出游戏");

color(4);

gotoxy(20,17);

printf("5. 玩的愉快!!!");

color(7);

gotoxy(20,20);

printf("/*****按任意键返回主页面*****/");

_getch(); //按任意键返回主界面

system("cls");

welcometogame();

}

void scoreandtips()//游戏侧边提示

{

gotoxy(50,8);

color(14);

printf("游戏得分:%d ",score);

gotoxy(50,10);

printf("用W A S D 分别控制飞机的移动");

gotoxy(50,12);

printf("按下空格键即为发射炮弹");

gotoxy(50,14);

printf("@ 的样子就是敌人的飞机");

}

void HideCursor() // 用于隐藏光标

{

CONSOLE_CURSOR_INFO cursor_info = {1, 0}; // 第二个值为0表示隐藏光标

SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);

}

void startup() //数据初始化

{

high=20; //定义游戏界面的高度

width=40; //游戏界面的宽度

position_x=high-3; //定义飞机的初始位置

position_y=width/2;

bullet_x=0;

bullet_y=position_y;

enemy_x=0;

enemy_y=position_y;

score=0;

flag=0; //飞机完好

HideCursor();

}

void show() //显示界面

{

int i,j,k;

for(i=0;i

{

for(j=0;j

{

if(flag)

break;

else if((i==position_x)&&(j==position_y)) //飞机坐标

{

printf("^");

}

else if((i==enemy_x)&&(j==enemy_y)) //敌机坐标

printf("@");

else if((i==bullet_x)&&(j==bullet_y)) //子弹坐标

printf("|");

else if ((j==width-1)||(i==high-1)||(j==0)||(i==0)) //打印边界

printf("-");

else

printf(" ");

}

printf("\n");

}

printf("\n");

if((position_x==enemy_x)&&(position_y==enemy_y))

{

flag=1; //飞机撞毁 游戏结束

system("cls");

printf("游戏结束!!!\n");

}

else

{

printf("分数 %d",score);

}

/** _getch(); //按任意键返回主界面

system("cls");

welcometogame();

*/

}

void endgame()

{

int k,f;

system("cls");

printf("输入1再玩一次,输入2返回主菜单,输入3退出游戏");

scanf("%d",&k);

system("cls");

switch(k)

{

case 1:

printf("重新玩游戏");

system("cls");

startup(); // 数据初始化

show();

break;

case 2:

printf("返回主菜单");

system("cls");

welcometogame();

startup();

break;

case 3:printf("退出成功");

exit(0);

break;

default:

color(12);

gotoxy(40,28);

system("cls");

printf("输入错误,输入任意键回到主菜单");

_getch(); //输入任意键

welcometogame();

startup();

system("cls"); //清屏

}

}

void withoutInpute() //与用户输入无关

{

if(bullet_x>0) //子弹上升效果

bullet_x--;

if((bullet_x==enemy_x)&&(bullet_y==enemy_y)) //子弹命中敌机

{

score++;

bullet_x=-1;

enemy_x=1;

enemy_y=2+rand()%width-2;

}

static int speed;

if(speed<30) //减慢敌机速度,不影响飞机和子弹速度

speed++;

if(speed==30)

{

if(enemy_x

enemy_x++;

else

{

enemy_x=0;

enemy_y=2+rand()%width-2;

}

speed=0;

}

}

void withInpute() //与用户输入有关

{

char input;

if(kbhit()) //控制飞机方向

{

input=getch();

if((input=='w')&&position_x>1)

position_x--;

if((input=='s')&&position_x

position_x++;

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

position_y--;

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

position_y++;

if(input==' ')

{

bullet_x=position_x-1;

bullet_y=position_y;

}

}

}

int main()

{

system("mode con cols=100 lines=30"); //设置控制台的宽高

welcometogame();

startup(); // 数据初始化

//explation();

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

{

gotoxy(0,0);

show(); // 显示画面

scoreandtips();

if(flag == 1)

{

endgame();

}

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

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

}

return 0;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自学编程网。

C语言飞机大战程序思路,C语言代码实现飞机大战相关推荐

  1. C语言飞机大战程序思路,C语言实现简单的飞机大战

    C语言实现简单的飞机大战 #include #include #include //定义全局变量 int high,width;//定义边界 int position_x,position_y;//飞 ...

  2. c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...

    c语言经典小程序和c语言编写的小游戏带注释(自动保存的) 1.写一个定时?关机的小程?序,可以立即关?闭计算机,也可以一段?时间后关闭?计算机. #inclu?de #inclu?de #inclu? ...

  3. 科学出版社c语言实验答案,程序设计基础c语言第三章程序结构教材习题答案科学出版社...

    第 1 页程序设计基础-C 语言(科学出版社教材)第三章-程序结构教材习题答案1.0 编写程序使整形变量:a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:x=1.2,y=2.4 ...

  4. 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...

    6406Java语言与面向对象程序设计基础A卷 试卷编号:6406 座位号 浙江广播电视大学2006年春季学期开放教育专科期末考试 <Java语言与面向对象程序设计基础>试题 2006年7 ...

  5. c程序设计语言 qsort,【程序设计基础_C语言】北理工的恶龙(附qsort范例)

    [程序设计基础_C语言]北理工的恶龙(附qsort实例) 北理工的恶龙(附qsort实例) 背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集 ...

  6. 程序设计基础c语言上机考试,程序设计基础C语言上机考试题第一套.DOC

    程序设计基础(C语言)上机考试题 ( 第一套A卷 ) 2006~2007学年冬学期 2007年1月 应试人声明: 我保证遵守<上海大学学生手册>中的<上海大学考场规则>,如有考 ...

  7. c语言考试系统程序,二级c语言模拟考试软件下载

    无忧考吧二级c语言考试系统是一款非常专业的计算机二级C语言模拟考试软件,可以帮助用户朋友们对全国计算机二级C语言考试进行模拟测试学习,如果您对这一门课程并没有什么把握需要练习,这款考试模拟系统一定是你 ...

  8. c语言闪烁灯程序,单片机c语言闪烁灯程序

    <单片机c语言闪烁灯程序>由会员分享,可在线阅读,更多相关<单片机c语言闪烁灯程序(3页珍藏版)>请在人人文库网上搜索. 1.1 闪烁灯1 实验任务如图4.1.1 所示:在P1 ...

  9. c语言ad采样程序思路,单片机AD采样程序及其寄存器讲解

    描述 ad采样的步骤:首先将外部的信号,通过电路或者已有的AD芯片转换成 主CPU能接受的电压 信号.但是此电压信号必须转换成8.10 .12位或更高位数的数字才能进一步做计算.另外转换成位数多少表明 ...

最新文章

  1. rsync 同步数据
  2. 分布式理论:CAP是三选二吗?
  3. Android 首页图片轮播
  4. JavaScript字符串方法终极指南-拆分
  5. linux中gedit中定义变量,linux中的gedit
  6. C#中跨工程跨项目注释的显示
  7. 【深入理解webpack】library,libraryTarget,externals的区别及作用
  8. (2)海思烧写工具Hitool工具使用
  9. SVM支持向量机原理(一) 线性支持向量机
  10. reduce具体使用以及使用reduce,toString,flat进行数组降维
  11. 在 100% 鲜活的时间,请让我遇见你
  12. wordpress 通过get_the_excerpt和the_excerpt函数获取文章摘要
  13. Android出现没有资源包问题,Android打包出现的小问题汇总
  14. c语言单片机温度调节系统设计,基于单片机的温度控制器系统总体设计方案
  15. openstack restful api 使用
  16. 实例 | 能源区块链、物联网技术在智能电网中的趋势及前沿应用
  17. 为什么样本方差的分母是 n-1
  18. 《口吃者的自我治疗》(4. 影响治疗的因素)
  19. 《Concurrency in Go》阅读笔记 -- 第三章:Go语言并发组件
  20. Utube的Youtube烦恼

热门文章

  1. 无源领域自适应:Source Hypothesis Transfer for Unsupervised Domain Adaptation
  2. 图像识别VPU——易用的嵌入式AI支持深度学习平台介绍
  3. 基于python的火车票售票系统/基于django火车票务网站/火车购票系统
  4. 非监督神经网络的wake-sleep算法
  5. clock gate spec
  6. 如何搭建一个自己的图床
  7. 信奥中的数学:质数与合数
  8. 常见的互联网名词 O2O、B2B、C2C等
  9. 关于iOS的通讯录开发权限的说明笔记
  10. 维汉在线翻译电脑版_支持汉语维吾尔语互译_维文翻译汉语和维语学习