【C语言】简易版_飞机小游戏
目录
前言
正文
一、利用scanf控制飞机移动
二、getch控制飞机移动
三、显示复杂的飞机图案
四、发射激光
五、打靶练习
写在最后
前言
在前面弹跳小球 的基础上实现一个简单的飞机游戏,主要包括飞机的显示、控制移动、显示复杂图案、发射激光、打靶练习等功能。
目前的飞机还很简单,大家不要着急,一步一步来,在后面会实现更复杂的飞机游戏效果。比如
- 如何让靶子移动起来?
- 如何统计和显示击中得分?
- 如何实现子弹散弹效果?
正文
一、利用scanf控制飞机移动
第一步利用scanf输入不同的字符,按a、s、d、w键后改变坐标2、y的值,从而控制飞机*字符上下左右移动,如图
最基础的代码如下
#include<stdio.h>
#include<stdlib.h>
int main()
{int i,j;int x=5;int y=10;char input;while(1){system("cls");//输出飞机上面的空行for(i=0;i<x;i++)printf("\n");//输出飞机左边的空格 for(j=0;j<y;j++)printf(" ");printf("*");//输出飞机 printf("\n");scanf("%c",&input);if(input=='a');y--;if(input=='d');y++;if(input=='w');x--;if(input=='s');x++;}return 0;}
二、getch控制飞机移动
scanf()函数要求每输入一个字符按回车键后才能执行,交互效果不好,因此第二步使用一个新的输入函数getch()(#include<conio.h>),不需要回车就可以得到输入的控制字符。另外,kbhit()函数在用户有键盘输入时返回1,否则返回 0;在没有键盘输入时 if(kbhit())下面的语句不会运行,从而避免出现用户不输入,游戏就暂停的情况。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{int i,j;int x=5;int y=10;char input;while(1){system("cls");for(i=0;i<x;i++)printf("\n");//输出飞机上面的空行for(j=0;j<y;j++)printf(" ");//输出飞机左边的空格 printf("*");//输出飞机 printf("\n");#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{int i,j;int x=5;int y=10;char input;while(1){system("cls");for(i=0;i<x;i++)printf("\n");//输出飞机上面的空行for(j=0;j<y;j++)printf(" ");//输出飞机左边的空格 printf("*");//输出飞机 printf("\n");if(kbhit()) // 判断是否有输入{input = getch(); // 根据用户的不同输入来移动,不必输入回车if (input == 'a') y--; // 位置左移if (input == 'd')y++; // 位置右移if (input == 'w')x--; // 位置上移if (input == 's')x++; // 位置下移}} return 0;} }return 0;}
三、显示复杂的飞机图案
四、发射激光
按空格键后让飞机发射激光子弹,即在飞机上方显示一列竖线'|'。第四步定义变量isFire,用来记录飞机是否处于发射子弹的状态。
- 当isFire等于1时,将在飞机的正上方输出激光竖线。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{int i,j;int x=5;int y=10;char input;int isFire;while(1){system("cls");if(isFire==0){for(i=0;i<x;i++)printf("\n");}else{for(i=0;i<x;i++){for(j=0;j<y;j++)printf(" ");printf(" |\n");} isFire=0;} //下面输出一个复杂的飞机图案for(j=0;j<y;j++)printf(" ");// 输出飞机上面的空行 printf(" *\n");//头for(j=0;j<y;j++)printf(" ");//头下一行左边的空格 printf("*****\n");//身子 for(j=0;j<y;j++)printf(" ");printf(" * * \n"); if(kbhit()) // 判断是否有输入{input = getch(); // 根据用户的不同输入来移动,不必输入回车if (input == 'a') y--; // 位置左移if (input == 'd')y++; // 位置右移if (input == 'w')x--; // 位置上移if (input == 's')x++; // 位置下移if (input == ' ')isFire = 1;}}return 0;}
五、打靶练习
第五步在第一行通过定义一个变量ny,增加一个靶子‘十‘,控制飞机发射激光击中它,变量isKilled 用来存储是否被击。
- isKilled 等于0显示靶子;
- isKilled 等于1时不再显示靶子
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{int i,j;int x = 5; int y = 10;char input;int isFire = 0;int ny = 5; // 一个靶子,放在第一行,ny列上int isKilled = 0;while (1){system("cls"); // 清屏函数if (!isKilled) // 输出靶子{for (j=0;j<ny;j++)printf(" ");printf("+\n");}if (isFire==0) // 输出飞机上面的空行{for(i=0;i<x;i++)printf("\n");}else // 输出飞机上面的激光竖线{for(i=0;i<x;i++){for (j=0;j<y;j++)printf(" ");printf(" |\n");}if (y+2==ny) // +2是因为激光在飞机的正中间,距最左边2个坐标isKilled = 1; // 击中靶子isFire = 0;}// 下面输出一个复杂的飞机图案for (j=0;j<y;j++)printf(" "); printf(" *\n");for (j=0;j<y;j++)printf(" ");printf("*****\n");for (j=0;j<y;j++)printf(" ");printf(" * * \n");if(kbhit()) // 判断是否有输入{input = getch(); // 根据用户的不同输入来移动,不必输入回车if (input == 'a') y--; // 位置左移if (input == 'd')y++; // 位置右移if (input == 'w')x--; // 位置上移if (input == 's')x++; // 位置下移if (input == ' ')isFire = 1;}} return 0;
}
写在最后
【C语言】简易版_飞机小游戏相关推荐
- 【C语言】进阶版_飞机小游戏
目录 前言 一.代码重构 二.新式子弹代替激光 三.优化敌方战机 四.增加积分模块 五.更好的清屏功能 写在最后 前言 没有学习函数,以上功能都在main()中实现是有点痛苦的.在学了函数之后会模块化 ...
- 【C语言】豪华版_飞机小游戏
目录 前言 一.飞机显示与控制 二.发射子弹 三.击中敌机 四.多台敌机 五.发射散弹 写在最后 前言 这是飞机游戏的第三版,我们已经实现了基础版和进阶版的飞机游戏 ,但是存在的问题很明显:已经发射 ...
- C语言射击类打飞机小游戏
使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,击中敌机可获得积分,被敌机撞中死亡一次,每次游戏有3次机会. 在网上查询资料并且和同学讨论之后,对原来的代码有了一些改进, 改进:增加了颜色函数 ...
- c语言射击类打飞机小游戏感悟
c语言:简单飞机射击小游戏 使用c语言编写一个打飞机小游戏,使用键盘按键来进行游戏,操作方法是"a""d""w"或者"←" ...
- Java版打飞机小游戏
放假写的一个Java端打飞机小游戏. 复习到的知识点有:java图形界面,多线程,集合框架等. 主要的收获是知道了处理图层的方式,即JLayeredPane层次面板,主要思路 如下: 1. ...
- 基于JAVA实现简易版泡泡堂小游戏
一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...
- [源码和文档分享]基于JAVA实现简易版泡泡堂小游戏
一.简介--童年记忆 <泡泡堂>是由韩国游戏公司Nexon开发的一款休闲游戏(Casual Game),于2003年在中国大陆上线,由盛大网络运营.游戏讲述了在哈巴森林的一个村落的村民们利 ...
- JavaGUI简易版贪吃蛇小游戏
做这个小游戏,主要是学习一下游戏制作的基本逻辑,加深对面向对象的理解. 游戏引擎: /*** 大牛程序员写的游戏的公共类 * 使用Game.init()方法初始化游戏* 使用Game.gameOver ...
- JS自制简易版数字华容道小游戏
最近复习了下前端基础知识HTML+JS(是真的非常基础那种,久不用,基本忘完了). 复习了一小部分内容,闲暇之余打算利用刚复习的js基础知识做个小游戏,刚好手机上下载的游戏集中就有一个数字益智游戏-- ...
最新文章
- 使用Axure制作App原型的尺寸设置
- SpringCloud微服务注册调用入门-路由网关
- cmd命令不识别exp_GRAT2:一款功能强大的命令amp;控制(C2)工具
- quartz定时任务配置
- linux压缩zip下载,linux下wget下载文件到指定目录,解压zip文件,解压与压缩总结...
- 103页PPT带你从浅到深了解什么是PMP项目管理(全)
- wps算账怎么用计算机,WPS教程--基本编辑功能的使用--操作界面
- 小米盒子 android 投影仪,小米盒子连接投影仪方法
- Android直接回复通知
- librosa提取mel_fbank
- Android系统开发篇(二) —— 建立Android系统开发环境之Ubuntu 20.04.4 LTS
- 记录一下近期自己的顿悟
- MacOS 下恢复使用谷歌浏览器翻译功能
- android版本低无法安装微信,解决低版本安卓4.4.4无法安装微信的问题
- Android WiFi系统
- opcclient源码OPC客户端DA源码(c#开发)
- ora_arc0_oracle是啥,什么是Oracle数据库的ORA?
- 志汇同城-同城小程序8.6开源版源码赠送米花同城6.6.6+微同城模板
- windows 下.bat 文件双击无法运行
- 现在的年轻人,都欠债吗?
热门文章
- Python中随机数种子的作用及使用
- 第55天:三战easy-dex
- 批量发工资条小工具使用说明
- vue通过自定义指令 v-py 将名字转拼音
- 4.2 Hive SQL
- 【贪玩巴斯】带你一起攻克英语语法长难句—— 第三章——名词(短语)和名词性从句{主语、宾语、表语和同位语}全解 ——2022年2月6日-16日
- CDR中人民币符号怎么打
- 水生植物拉丁文及缩写
- 在 sys.servers 中找不到服务器 '******'。请验证指定的服务器名称是否正确。
- python123作业怎么提交_使用python提交作业