700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言实现【小游戏——飞机大战】

C语言实现【小游戏——飞机大战】

时间:2021-07-31 13:07:41

相关推荐

C语言实现【小游戏——飞机大战】

目录:

1.目标要求:2.C语言代码:3.运行结果:
1.目标要求:

1.可以控制飞机上下左右移动和发射子弹

2.有计分,射中靶子分数加一

3.有子弹数,子弹数为0时结束游戏

2.C语言代码:

#include<stdio.h>#include<stdlib.h> #include<conio.h> #include<time.h>/*《飞机大战》by:你最珍贵—————————————————————————————————————— |控制信号:| 上 | 下 | 左 | 右 | 开火 |—————————————————————————————————————— | 键盘:| i| k |j |l | 空格 | —————————————————————————————————————— 1.最初10颗子弹2.开火:子弹-1;3.击中:分数+1;子弹+3;4.子弹:超过2秒未被击中,子弹会更新位置 5.子弹=0时,游戏结束 */int main(){int Line=8,Column=20,aim_pt = rand()%70+5; //设定默认值:行=8;列=20;靶子位置随机取 int i,j;//i;j; char contr;//控制信号 int isFired=0,aim=1,cnt=0,bullets=10,time_i=1;// 是否开火;靶子状态:aim=0显示满天星aim=1显示靶子;//计分器;时间标记,为1重新计时间起始值 time_t time_begin,time_end;//时间开始终止变量 ,time_t是时间的单位long型 double time_cost; //时间差,如果>固定值则更新靶子位置 while( bullets>0 ){//子弹数>0时,保持程序一直循环system("cls");//清屏,每更新一次屏幕,清除上一次屏幕 time(&time_end);//时刻计算时间终止值 time_cost = difftime(time_end,time_begin);//计算时间差(靶子位置不动的时间差) if( aim==1 && Column+2==aim_pt+2 && isFired==1){//【如果击中】(靶子显示状态+位置对+且开火)//aim不显示靶子+更新靶子位置+重新计时+计分器加1+子弹加3 aim = 0;//击中的话下一状态输出满天星,不输出靶子 aim_pt = rand()%70+5;//靶子位置取随机,随机数为整数,取余70再加5,随机数范围就是(5,75) time_i=1;//重新计时 cnt++;//计分器加一 bullets+=3;//子弹+3 } else if( time_cost>2 ){//【如果没击中】&&时间长//更新靶子位置+重新计时 aim_pt = rand()%70+5;//靶子位置取随机time_i=1;//重新计时 }//下面【输出飞机前页面信息】 printf("【子弹数:%3d】游戏\:《飞机大战》 【分数:%3d】\n",bullets,cnt); printf("———————————————————————————\————————————\n");if( aim==0 ){//【aim=0时】,显示满天星 ,下一状态aim置为1显示靶子 printf("**********************************子弹数+3\*************************************\n");printf("\a");//击中提示声音 aim++;}else if( aim!=0 ){//【aim为1时】,显示靶子 for( j=1; j<=aim_pt; j++)//输出靶子前包含位置信息的的空格 putchar(' ');printf(" *\n");//输出靶子if( time_i ==1){//time_i=1即重新计时,重新取时间起始值,为使起始值固定time_i再置为0,保证起始值不变 time(&time_begin);time_i=0;} }if( isFired==1 ){//如果开火信号为1,在飞机上方【输出子弹图案】 for( i=1; i<=Line; i++){//输出飞机上方带子弹的行数 for( j=1; j<=Column; j++){//输出每行内容前相同的空格 putchar(' ');}printf(" |\n");//输出空格后的子弹形状 }isFired = 0;//开火信号不可一直维持,每一次开火之后开火信号被设为0 } else if( isFired==0 ){//如果开火信号为0飞机上方只输出空白图案 for( i=1; i<=Line; i++){//输出飞机上方空的行数 putchar('\n');}}//输出【飞机图案】 for( i=1; i<=Column; i++){//输出飞机图像第一行内容前相同的空格 putchar(' ');}printf(" *\n");//输出飞机图像第一行内容for( i=1; i<=Column; i++){//输出飞机图像第二行内容前相同的空格putchar(' ');}printf("*****\n");//输出飞机图像第二行内容for( i=1; i<=Column; i++){//输出飞机图像第三行内容前相同的空格putchar(' ');}printf(" * *\n");//输出飞机图像第三行内容//判断【输入信号】 if( contr = getch() ){//如果有输入则改变相应的变量值,控制飞机 。无输入则维持原先位置 //获得输入的控制字符,getch()不回车即可接受 if( contr=='j'){//输入j向左移动 ,遇边界不动 Column = (Column==0)? 0:Column-1; }else if( contr=='l'){//输入l向右移动 ,遇边界不动 Column = (Column==73)? 73:Column+1; }else if( contr=='i'){//输入i向上移动 ,遇边界不动Line = (Line==0)? 0:Line-1;}else if( contr=='k'){//输入k向下移动 ,遇边界不动Line = (Line==18)? 18:Line+1;}else if( contr==' '){//输入为空格,开火信号为1 isFired = 1;bullets--;}}}//输出失败页面system("cls");//清屏 for( j=1; j<=8; j++) putchar('\n'); for( j=1; j<=30; j++)putchar(' ');printf("GAME OVER!\n");for( j=1; j<=8; j++)//输出空白行 putchar('\n'); system("pause");//暂停一次system("pause");//暂停一次 return 0;}

3.运行结果:

小游戏玩法:

《飞机大战》by:你最珍贵—————————————————————————————————————————————————————————————————— | 控制信号:| 上 | 下 | 左| 右 | 开火 |—————————————————————————————————————————————————————————————————— | 键盘:| i| k |j |l | 空格 | ——————————————————————————————————————————————————————————————————

VS

——————不发射子弹时———————————发射子弹时——————

VS

——————子弹击中时—————————————游戏结束时——————

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。