失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言控制台小游戏 | 打飞机

C语言控制台小游戏 | 打飞机

时间:2019-10-26 20:28:42

相关推荐

C语言控制台小游戏 | 打飞机

开飞机打飞机

极度简陋版,做着玩

/20.3.27/

基本描述

玩家控制一架飞机,用*表示;敌机只有一架,随机位置飞来,用@表示;子弹能发一颗 ,用|表示;//暂且叫做子弹吧,要不然叫导弹?感觉叫啥都行子弹击中敌机后,子弹和敌机消失,得一分;被敌机撞到后,游戏结束上下左右由WSAD控制,空格发射子弹;

存在缺陷

只有一架飞机,飞完就没了只有一颗子弹,打完了再打,之前的就没了有几率打不中,飞机和子弹恰好遇到,下一个循环恰好错过时,miss

C语言源代码

#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <windows.h>int high, wid; //游戏场景的高和宽int plane_h, plane_w; //飞机位置int bullet_h, bullet_w;//子弹位置int enemy_h, enemy_w; //敌机位置int interval; //同个计次来模拟时间间隔int itv_enemy; //敌机移动的时间间隔int score; //分数void Startup(); //游戏数值初始化void Show(); //游戏界面输出void UpdateInput(); //与输入无关的游戏状态更新void UpdateNormal(); //因输入导致的游戏状态更新int main(){Startup(); //初始化while(1){//游戏循环Show();UpdateInput();UpdateNormal();}return 0;}void Startup(){score=0;high=25; //初始化场景高度wid=60; //初始化场景宽度plane_h=15; //初始化飞机竖直坐标plane_w=10;//初始化飞机水平坐标bullet_h=-1; //初始化子弹竖直坐标bullet_w=10; //初始化子弹水平坐标enemy_h=-1;//初始化敌机竖直坐标srand(time(NULL));enemy_w=rand()%wid; //初始化敌机水平坐标interval=0;//初始化时间间隔计数itv_enemy=5;//初始化敌机移动时间间隔}void Show(){HideCursor(); //隐藏光标gotoxy(1,1); //回调光标、刷新画面for(int i=0;i<high;i++){for(int j=0;j<wid;j++){if( i==plane_h && j==plane_w ){//当前位置为飞机位置printf("*");}else if( i==bullet_h && j==bullet_w ){//当前位置为子弹位置printf("|");}else if( i==enemy_h && j==enemy_w ){//当前位置为敌机位置printf("@");}else if( i<high && j<wid ){//当前位置无物,且在边界内printf(" ");}}printf("|\n"); //输出右边界}for(int i=0;i<wid;i++){//输出下边界printf("-");}printf("*\n\n得分:%d",score);}void UpdateInput(){char key; //检测按下的键if(kbhit()){//当键按下key=getch(); //获取键值if(key=='w'||key=='W'){//当按下w键,上移if(plane_h>0)plane_h--;}if(key=='s'||key=='S'){//当按下s键,下移if(plane_h<high-1)plane_h++;}if(key=='a'||key=='A'){//当按下a键,左移if(plane_w>0)plane_w--;}if(key=='d'||key=='D'){//当按下d键,右移if(plane_w<wid-1)plane_w++;}if(key==' '){//当按下空格键,发射子弹bullet_h=plane_h-1;bullet_w=plane_w;}}}void UpdateNormal(){if(bullet_h>-1&&bullet_h<high){//子弹未到边界时,向上移动bullet_h--;}if(enemy_h<high && interval%itv_enemy==0){//敌机未到下边界时,向下移动,/每次移动的时间间隔为itv_enemyenemy_h++;}if(bullet_h==enemy_h && enemy_w==bullet_w){//子弹打到敌机,两两消失enemy_h=high;bullet_h=-1;printf("\a"); //击中响铃score++;}if(plane_h==enemy_h && plane_w==enemy_w){//敌机撞到玩家飞机,游戏结束printf("\t游戏结束!");exit(0);}if(interval<=100){//时间间隔计次interval++;}else{interval=0;}}void gotoxy(int x,int y){//回调光标COORD pos;pos.X=x-1;pos.Y=y-1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void HideCursor(){//隐藏光标函数CONSOLE_CURSOR_INFO cursor;cursor.bVisible = FALSE;cursor.dwSize = sizeof(cursor);HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);SetConsoleCursorInfo(handle, &cursor);}

参考

河海大学童晶老师的课程(做游戏,学编程)

如果觉得《C语言控制台小游戏 | 打飞机》对你有帮助,请点赞、收藏,并留下你的观点哦!

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