用C实现每天一个小游戏——第一天(飞机大战)
目录
前言
一、如何用scanf控制飞机的移动?
二、用getch()来代替scanf
三、显示复杂的飞机图案
总结
前言
针对c基础薄弱的同学,我想着可以不可以用编写游戏的形式来认识c语言
这是我们第一天的任务,仅仅用到了printf,scanf,for_for循坏,轻易上手
如果小伙伴们还不懂这些,或者0基础请私信告诉我,等到下一节后我会详细讲一下这些简单的语法,从而让大家真正的0基础通过编写游戏来学习C语言
作者水平有限,若遇到问题请指出
一、如何用scanf控制飞机的移动?
利用scanf输入不同的字符a,s,d,w键后改变坐标x,y的值,从而控制飞机*(这里先用*来表示飞机)上下左右的移动
如图:
接下来我们用到了一个清屏函数system(“cls”);
然后我们实现代码如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{int i;int 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=='w') x--;if(input=='s') x++;if(input=='d') y++;}return 0;}
同学们可自行尝试一下
二、用getch()来代替scanf
经过上述代码同学们的亲自的演练后,细心的小伙伴们可能就会发现,我们用scanf来输入一个字符后必须回车一下才能执行,这样交互的效果并不理想,那么仔细想一想我们是否还学过一种新的输入方式呢?
没错就是getch();
在这里我们还要再介绍一个函数kbhit():
在用户有键盘输入时返回1,否则返回0;而在键盘没有输入时(kbhit())下面的语句则不会执行,从而避免用户不输入 游戏就暂停的情况
前言万语不如直接给大家上代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{int i;int 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=='w') x--;if(input=='s') x++;if(input=='d') y++;}}return 0;}
三、显示复杂的飞机图案
前文学到只用*来表示飞机未免有点枯燥,乏味
那么我们是否可以用一种复杂的方式来表示飞机呢?
像这种:
这样:
搞错了,像这种:
什么,你说还是很low?
鲁迅的事,你找我周树人干什么?(美工的事,找我写开发的干什么!)
废话不多说,给观众老爷上代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main()
{int i;int 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("*\n");for(j=2;j<y;j++)printf(" ");printf("** **\n");for(j=2;j<y;j++)printf(" ");printf("* *\n"); if(kbhit()){input=getch();if (input=='a') y--;if(input=='w') x--;if(input=='s') x++;if(input=='d') y++;}}return 0;}
然后显示如下:
总结
我们今天要讲的内容就到此结束了,相信可能很多人会感到意犹未尽,或者没人看!!!
然后到了明天我们再来实现打靶练习,和发射激光的功能
以及到了后期,学习封装函数将这些功能进行模块化处理
好了,今天的课程就到此结束了,同学们再见!
喜欢博主,不如点个
用C实现每天一个小游戏——第一天(飞机大战)相关推荐
- python轰炸敌机小游戏_python实现飞机大战微信小游戏
0.前言 我学一种语言,可以说学任何东西都喜欢自己动手实践,总感觉自己动手一遍,就可以理解的更透彻,学python也一样,自己动手写代码,但更喜欢做点小东西出来,一边玩一边学.下面我就展示一下我最近做 ...
- 飞机大战小游戏源码---飞机大战初体验
开发环境: Windows10,pycharm,python3 源码使用教程: 打开pycharm,创建一个新的项目,文件-->新建项目 项目命名:飞机大战初体验,基本解释器选择python3版 ...
- html5飞机大战小游戏开发,html5 飞机大战
[实例简介]自定义飞机图片数量,子弹图片,速度 [实例截图] [核心代码] var canvas=document.getElementById("myCanvas"); var ...
- 用Python做的小游戏合集——飞机大战
导语:✈✈✈✈✈✈✈✈✈✈✈✈✈
- python手机版做小游戏代码大全-Python大牛手把手教你做一个小游戏,萌新福利!...
原标题:Python大牛手把手教你做一个小游戏,萌新福利! 引言 最近python语言大火,除了在科学计算领域python有用武之地之外,在游戏.后台等方面,python也大放异彩,本篇博文将按照正规 ...
- Pygame:编写一个小游戏
大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...
- “树人杯”暨第三届辽宁科技大学校园程序设计竞赛正赛G 又是一个小游戏(蓝)...
G 又是一个小游戏(蓝) Time Limit:1000MS Memory Limit:65536K Total Submit:9 Accepted:0 Description L和F两个人正在做这 ...
- 虚幻4学习笔记(8)动手制作一个小游戏
动手制作一个小游戏 新节点介绍 前期准备 搭建场景 门蓝图 灯蓝图 创建关卡蓝图 B站UP谌嘉诚课程:https://www.bilibili.com/video/BV164411Y732 新节点介绍 ...
- 学完javaee基础,编的一个小游戏—太阳系的八大行星
项目完整代码已放到码云上 自行下载: https://gitee.com/tutu_57893_7590/planets 学完javaee基础,编的一个小游戏-太阳系的八大行星 要使太阳系的八大行星, ...
最新文章
- 小模型实现大一统!FBNetV5一举包揽CV任务3个SOTA
- 大规模落地:AI安防仍存两大痛点
- 【C/C++开发】C++实现简单的线程池
- Quzrtz.net 示例
- 有关OVM社区产品经理对OVM的29个问题解答!
- Exception Handling Best Practices in .NET
- CCF关于暂停NOIP竞赛的公告
- 内存泄漏(OOM)产生原因
- SAP Commerce Cloud (电商云) UI 的懒加载功能
- AopContext.currentProxy();为什么能获取到代理对象
- 区分'方法'和'函数'
- UNIX(多线程):28---双buffer “无锁” 设计
- Spark精华问答 | Spark的三种运行模式有何区别?
- ST_Geometry效率的测试与分析
- 二叉树的非递归遍历,还有一点黑科技
- 在已有的服务器上如何部署网站,如何在云服务器上部署网站
- 服务器上安装python anaconda最简明教程
- java中Map,List与Set的区别
- 千万级中文公开免费聊天语料数据分享
- CSS中的BFC规范(块级格式化上下文)