C语言飞机大战程序思路,C语言代码实现飞机大战
本文实例为大家分享了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语言代码实现飞机大战相关推荐
- C语言飞机大战程序思路,C语言实现简单的飞机大战
C语言实现简单的飞机大战 #include #include #include //定义全局变量 int high,width;//定义边界 int position_x,position_y;//飞 ...
- c语言编写数据存储的游戏,c语言经典小程序和c语言编写的小游戏带注释(自动保存的).doc...
c语言经典小程序和c语言编写的小游戏带注释(自动保存的) 1.写一个定时?关机的小程?序,可以立即关?闭计算机,也可以一段?时间后关闭?计算机. #inclu?de #inclu?de #inclu? ...
- 科学出版社c语言实验答案,程序设计基础c语言第三章程序结构教材习题答案科学出版社...
第 1 页程序设计基础-C 语言(科学出版社教材)第三章-程序结构教材习题答案1.0 编写程序使整形变量:a=3,b=4,c=5,p=0xfffe,q=0xffff;浮点型变量:x=1.2,y=2.4 ...
- 电大java语言与面向对象程序设计基础_6406Java语言与面向对象程序设计基础A卷...
6406Java语言与面向对象程序设计基础A卷 试卷编号:6406 座位号 浙江广播电视大学2006年春季学期开放教育专科期末考试 <Java语言与面向对象程序设计基础>试题 2006年7 ...
- c程序设计语言 qsort,【程序设计基础_C语言】北理工的恶龙(附qsort范例)
[程序设计基础_C语言]北理工的恶龙(附qsort实例) 北理工的恶龙(附qsort实例) 背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集 ...
- 程序设计基础c语言上机考试,程序设计基础C语言上机考试题第一套.DOC
程序设计基础(C语言)上机考试题 ( 第一套A卷 ) 2006~2007学年冬学期 2007年1月 应试人声明: 我保证遵守<上海大学学生手册>中的<上海大学考场规则>,如有考 ...
- c语言考试系统程序,二级c语言模拟考试软件下载
无忧考吧二级c语言考试系统是一款非常专业的计算机二级C语言模拟考试软件,可以帮助用户朋友们对全国计算机二级C语言考试进行模拟测试学习,如果您对这一门课程并没有什么把握需要练习,这款考试模拟系统一定是你 ...
- c语言闪烁灯程序,单片机c语言闪烁灯程序
<单片机c语言闪烁灯程序>由会员分享,可在线阅读,更多相关<单片机c语言闪烁灯程序(3页珍藏版)>请在人人文库网上搜索. 1.1 闪烁灯1 实验任务如图4.1.1 所示:在P1 ...
- c语言ad采样程序思路,单片机AD采样程序及其寄存器讲解
描述 ad采样的步骤:首先将外部的信号,通过电路或者已有的AD芯片转换成 主CPU能接受的电压 信号.但是此电压信号必须转换成8.10 .12位或更高位数的数字才能进一步做计算.另外转换成位数多少表明 ...
最新文章
- rsync 同步数据
- 分布式理论:CAP是三选二吗?
- Android 首页图片轮播
- JavaScript字符串方法终极指南-拆分
- linux中gedit中定义变量,linux中的gedit
- C#中跨工程跨项目注释的显示
- 【深入理解webpack】library,libraryTarget,externals的区别及作用
- (2)海思烧写工具Hitool工具使用
- SVM支持向量机原理(一) 线性支持向量机
- reduce具体使用以及使用reduce,toString,flat进行数组降维
- 在 100% 鲜活的时间,请让我遇见你
- wordpress 通过get_the_excerpt和the_excerpt函数获取文章摘要
- Android出现没有资源包问题,Android打包出现的小问题汇总
- c语言单片机温度调节系统设计,基于单片机的温度控制器系统总体设计方案
- openstack restful api 使用
- 实例 | 能源区块链、物联网技术在智能电网中的趋势及前沿应用
- 为什么样本方差的分母是 n-1
- 《口吃者的自我治疗》(4. 影响治疗的因素)
- 《Concurrency in Go》阅读笔记 -- 第三章:Go语言并发组件
- Utube的Youtube烦恼