#打飞机游戏

news/2024/12/22 13:05:06/

打飞机游戏

  这个游戏的原理比较简单,我们要实现这个游戏,首先要实现的就是怎么打印出飞机,和怎么操控飞机的移动,显然这些用简单的循环语句和分支语句就能实现。而敌机出现的话就更简单了,只要随机生成敌机的水平坐标,竖直坐标就让敌机从顶部落下(当然,你也可以随机生成竖直坐标),我们只需要控制随机数的范围就好了  例如 rand()%30; 随机生成0-29范围内的随机数。其次,我们要做的就是如何攻击,当飞机发射子弹时,bullet_x会等于plane_x,bullet_y = plane_y - 1;我们要想子弹往上移动,只需要bullet_y --,就能实现。最后,我们就只需要判断,子弹攻击到敌机,和飞机碰到敌机。当子弹坐标等于敌机坐标时,敌机死亡,当飞机碰到敌机时,游戏结束。原理很简单,这里就不多做解释了,上代码。
#include<stdio.h>
#include<windows.h>
#include<conio.h>int plane_x, plane_y;			//飞机坐标
int bullet_x, bullet_y;			//子弹坐标
int target_x, target_y;			//靶子坐标
int height = 21;	//界面尺寸
int width = 41;	
int speed;			//控制敌机下降速度
int kill;			//判断靶子是否被击中
int score;			//得分
int flag;			//判断是否死亡void start() {		//初始化int i;for (i = 0; i < height - 3; i++) {if (i == height / 2 - 1) {printf("     WASD分别控制\n");printf("     上下左右移动\n");printf("       空格射击\n");printf("    (按任意键继续)");}elseprintf("\n");}plane_x = width / 2;plane_y = height / 2;target_x = rand() % 41;target_y = 0;speed = 15;kill = 0;score = 0;flag = 0;_getch();
}
void hideCursor() {CONSOLE_CURSOR_INFO cursor_info = { 1,0 };//第二个值表示隐藏光标SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
void gotoxy(int x, int y) {//光标移动到(x,y)位置HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);COORD pos;pos.X = x;pos.Y = y;SetConsoleCursorPosition(handle, pos);
}
void show() {			//展示界面int i, j;gotoxy(0, 0);for (j = 0; j < height; j++) {			//打印出游戏界面for (i = 0; i < width; i++) {if (i == plane_x && j == plane_y)	//判断在什么位置输出飞机printf("*");else if (i == target_x && j == target_y)	//输出敌机printf("@");else if (i == bullet_x && j == bullet_y) {	//输出子弹printf("|");							bullet_y--;					}	elseprintf(" ");}printf("|\n");}for (i = 0; i <= width / 2; i++) {printf(" ̄");}printf("\n");printf("当前得分:%d\n", score);
}
void updateWithInput() {		//飞机移动和射击char input;if (_kbhit()) {input = _getch();switch (input) {case 's':case 'S': plane_y++;break;case 'w':case 'W': plane_y--;break;case 'a':case 'A': plane_x--;break;case 'd':case 'D': plane_x++;break;case ' ':bullet_x = plane_x;bullet_y = plane_y - 1;break;}if (plane_x < 0)		//判断飞机是否超出界面plane_x = 0;else if (plane_x > width - 1)plane_x = width - 1;if (plane_y < 0)plane_y = 0;else if (plane_y > height - 1)plane_y = height - 1;}
}void updateWithoutInput() {	//子弹和靶子移动if (plane_x == target_x && plane_y == target_y)		//飞机碰到敌机,死亡flag = 1;if (bullet_x == target_x && bullet_y == target_y) {	//子弹碰到敌机score += 5;kill = 1;bullet_y = -1;}if (kill == 1) {				//敌机死亡,重新生成敌机target_x = rand() % 20;target_y = 0;kill = 0;}static int t = 0;				//静态常量,用来控制敌机的速度if (t == speed) {target_y++;t = 0;}elset++;if (target_y > height)kill = 1;
}int main() {system("color 0A");hideCursor();char input;int k = 1;while (1) {if (k == 1) {start();k = 0;}else {gotoxy(0, 0);for (int i = 0; i < 10; i++) {printf("\n");}printf("游戏结束,最终得分:%d(按任意键继续)", score);_getch();system("cls");		//清屏start();}while (!flag) {show();updateWithoutInput();updateWithInput();}}return 0;
}

http://www.ppmy.cn/news/922241.html

相关文章

日本小哥“自虐神器”一夜爆火:用手柄控制自己的脸,代码自取,后果自负...

鱼羊 丰色 发自 凹非寺量子位 | 公众号 QbitAI 用游戏手柄控&#xff08;wan&#xff09;制&#xff08;huai&#xff09;面部表情&#xff0c;是一种怎样的体验&#xff1f; 按下LB键眨左眼&#xff0c;按下RB键眨右眼&#xff0c;还可以左右左右走一套连击。&#xff08;画面…

游戏打飞机

功能实现 当实现可以使用进行调整左边和右边进行调用&#xff0c; 将数据进行传递出去了呢&#xff0c;将数据融合将在页面进行&#xff0c;用鼠标进行调用方向&#xff0c;还有一个特点就是&#xff0c;将页面进行调不规整进行调出不同小方格进行阻挡&#xff0c;然后飞机就头…

宁做创业狼,不做打工狗

结帖率&#xff1a;75.40% 楼主发表于&#xff1a;2009-09-19 20:30:50  在天涯&#xff0c;发现很多朋友创业的心里很矛盾&#xff0c;既有创业单干的激情&#xff0c;同时又有担心失败后悲惨的命运&#xff01;所以很多朋友思考了很长时间&#xff0c;最后还是决定等等再看…

祭奠高考

只是一个偶然~看了一下日期~6月6日~觉得有点特别,难道是要在这个66的日子注册个马甲? 6月7呢,这个不吉利的日子在炎热的六月带来一丝凉意,有点像台风,~心理阴影了,没办法~yy聊以自尉~ 努力請從今日始&#xff01; 高 考 艾~~明天又是高考了 ~祝那些孩子们好运…

四川大学计算机考研分析

关注我们的微信公众号 姚哥计算机考研 更多详情欢迎咨询 四川大学&#xff08;B&#xff09;考研难度&#xff08;☆☆☆☆&#xff09; 四川大学计算机考研招生学院是计算机学院、网络空间安全学院和视觉合成图形图像技术国防重点学科实验室。目前均已出拟录取名单。 四川…

服务器如何安装虚拟声卡,虚拟声卡如何运作起来 分享介绍虚拟声卡安装使用方法...

虚拟声卡怎么用?当我们在电脑中开启了虚拟声卡之后&#xff0c;该如何进行设置才能让虚拟声卡正常使用呢?虚拟声卡是一个软件&#xff0c;通过这个软件我们可以让电脑中发出各种好玩有趣的声音。那么我们该如何让虚拟声卡运作起来呢?本文中给大家分享介绍下虚拟声卡的使用方…

蓝牙驱动卸载后自动安装_声卡安装后又出问题了?驱动人生来帮你!

最近&#xff0c;因为服务器安全排查&#xff0c;好多用户来咨询驱动哥电脑问题&#xff0c;驱动哥都没办法回复。 现在驱动人生软件客户端相关的驱动查询、下载及安装服务也已恢复正常&#xff0c;驱动哥的解决方案也来了。 近期&#xff0c;收到大家反馈最多的问题是&#xf…

Modbus协议理论基础

1、Modbus协议基础 Modbus协议出现于1979年&#xff0c;协议是不区分接口的&#xff0c;Modbus协议可应用于串口&#xff0c;也可应用于网口。 &#xff08;1&#xff09;、Modbus协议分为Modbus-RTU、Modbus-ASCII、Modbus-TCP&#xff1b; &#xff08;2&#xff09;、通信方…