项目: flappy bird
目录
- 一、项目描述和最终项目展示
- 二、实现下落的小鸟
- 三、显示小鸟和障碍物
- 四、障碍物移动
- 五、循环移动多个障碍物
一、项目描述和最终项目展示
通过按空格来控制小鸟的高度,来通过障碍物。
二、实现下落的小鸟
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物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 startup()//数据的初始化
{high = 15;width = 20;bird_x = 0;bird_y = width/3;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟elseprintf(" ");//输出空格}printf("\n");}
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}
效果图如下:
三、显示小鸟和障碍物
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物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 startup()//数据的初始化
{high = 15;width = 20;bird_x = 0;bird_y = width/3;bar1_y=width/2;bar1_xDown = high/3;bar1_xTop = high/2;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop)))printf("*");elseprintf(" ");//输出空格}printf("\n");}
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}
效果图如下:
四、障碍物移动
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物
int score;//得分,经过障碍物的个数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 startup()//数据的初始化
{high = 15;width = 20;bird_x = high/2;bird_y = width/3;bar1_y=width;bar1_xDown = high/3;bar1_xTop = high/2;score=0;
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop)))printf("*");elseprintf(" ");//输出空格}printf("\n");}printf("得分: %d\n",score);
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;bar1_y--;if( bird_y == bar1_y ){if( (bird_x >= bar1_xDown)&& (bird_x<=bar1_xTop) )score++;else{printf("游戏失败\n");system("pause");exit(0);}}Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}
效果图如下:
五、循环移动多个障碍物
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>//全局变量
int high,width;//游戏画面大小
int bird_x,bird_y;//小鸟的坐标
int bar1_y,bar1_xDown,bar1_xTop;//障碍物1
int bar2_y,bar2_xDown,bar2_xTop;//障碍物2
int score;//得分,经过障碍物的个数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 startup()//数据的初始化
{high = 15;width = 50;bird_x = high/2;bird_y = width/3;bar1_y=width-20;bar1_xDown = high/3;bar1_xTop = high/2;bar2_y=width-1;bar2_xDown = high/3;bar2_xTop = high/2;score=0;system("color 09");system("title 游戏中");
}void show()//显示画面
{gotoxy(0,0);//光标移动到原点位置,以下重画清屏int i,j;for(i=0;i<=high;i++){for(j=0;j<width;j++){if((i == bird_x)&&(j == bird_y))printf("@");//输出小鸟else if( (j == bar1_y) && ((i<bar1_xDown) || (i>bar1_xTop && i<high)))//输出挡板1printf("*");else if( (j == bar2_y) && ((i<bar2_xDown) || (i>bar2_xTop && i<high)))//输出挡板2printf("*");else if( i == high)printf("-");elseprintf(" ");//输出空格}printf("\n");}printf("得分: %d\n",score);
}void updateWithoutInput()//与用户输入无关的更新
{bird_x++;bar1_y--;bar2_y--;if( bird_y == bar1_y ){if( (bird_x >= bar1_xDown)&& (bird_x<=bar1_xTop))score++;else{printf("游戏失败\n");system("pause");exit(0);}}if( bird_y == bar2_y ){if( (bird_x >= bar2_xDown)&& (bird_x<=bar2_xTop))score++;else{printf("游戏失败\n");system("pause");exit(0);}}if( bird_x==0 || bird_x == high )//挨着底部或顶部,游戏结束{printf("游戏失败\n");system("pause");exit(0);}if(bar1_y<=0){bar1_y=width;int temp = rand()%(int)(high*0.8);bar1_xDown = temp-high/10;bar1_xTop = temp+high/10; }if(bar2_y<=0){bar2_y=width;int temp = rand()%(int)(high*0.8);bar2_xDown = temp-high/10;bar2_xTop = temp+high/10; }Sleep(150);
}void updateWithInput()//与用户输入有关的更新
{char input;if(kbhit())//判断是否有输入{input = getch();//根据用户得不同输入来移动if(input == ' ')bird_x =bird_x -2;}
}
int main()
{startup();//数据的初始化while(1){show();//显示画面updateWithoutInput();//与用户输入无关的更新updateWithInput();//与用户输入有关的更新}
}
效果图如下:
项目: flappy bird相关推荐
- Unity快速入门之傻瓜小鸟“Flappy Bird”(三)
目的:掌握基本2D游戏开发技巧 知识点: 1.学习UI界面的开发(UGUI) 2.循环往复简单算法 3.脚本之间的常用数据传值 4.2D游戏开发环境 5.2D精灵动画与层的设置 开发步骤 建立良好的目 ...
- LibGDX_8.2: LibGDX 项目实战: 开发跨平台 Flappy Bird(像素鸟)游戏
本文链接: http://blog.csdn.net/xietansheng/article/details/50188319 LibGDX 基础教程(总目录) 声明: 游戏中使用到的图片和音频资源来 ...
- 【源码+图片素材】Java开发经典游戏飞翔的小鸟_Java游戏项目Flappy Bird像素鸟游戏_Java小游戏_Java初级项目_Java课程设计项目
开发环境: jdk1.8 开发工具: IDEA JavaEE基础: 变量.数据类型.判断语句.循环结构.数组.集合.简单窗口创建.图形图片绘制.双缓存技术.事件-键盘事件.物体的碰撞检测.File [ ...
- Flappy Bird项目代码
学了一段时间的Canvas 有必要实战一下,这是一套视频课程中的项目,拿来练练手,毕竟编程只看不写等于不会.就好像学汉字,总共常用的也就那几千个,每个字也都认识,学霸们能够写出大作,学渣们却连一篇像样 ...
- JAVA项目:Java实现飞扬的小鸟(Flappy Bird)
飞扬的小鸟(Flappy Bird) 需求描述 游戏加载完毕点击界面即可开始游戏. 鼠标点击控制小鸟飞行,或者通过键盘控制小鸟的前后上下也可以,不要撞到管道哦! 控制好小鸟越过障碍飞得更远,获得更高的 ...
- 人形图案c语言程序_做游戏,学编程(C语言) 7 学习EasyX图形交互功能----flappy bird源代码...
经过之前的学习,我们基本掌握了开发小游戏所需要的语法知识和搭建方法,但是基础C语言的可视化与交互功能实在是太弱了 . 利用免费的EasyX插件,我们可以快速上手,简单实现很酷的视觉效果 . EasyX ...
- flappy bird游戏源代码揭秘和下载后续---移植到android真机上
前言: 上一篇博客 flappy bird游戏源代码揭秘和下载,源码是运行在window或者mac系统上的,现在我们需要把代码移植到android真机上,让小鸟在手机里飞起来! ps: ...
- 【教程】HTML5+JavaScript编写flappy bird
作者: 风小锐 新浪微博ID:永远de风小锐 QQ:547953539 转载请注明出处 PS:新修复了两个bug,已下载代码的同学请查看一下 大学立即要毕业了. ...
- Flappy bird需求规格说明书
1.引言 1.1.编写目的 该需求分析为说明书通过对<flappy bird>游戏软件的客户需求分析,明确了所要开发的游戏软件的功能以及界面等的处理,从而使小组成员更清楚的了解用户 ...
最新文章
- Javascript 获取Url值 --转
- 自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
- logincontroller.java_使用HuTool工具类,实现登录验证码
- 【任务脚本】2020双十一活动小结,京东活动依旧始终良心
- php socket传递cookie,PHP Websocket在测试中验证用户(传递会话cookie)
- (十二)深入浅出TCPIP之Nagle算法
- ncl 添加点shp文件_基于Arcgis绘制采样点地图
- Ngrok让你的本地Web应用暴露在公网上
- 别忘了我的世界有你存在
- #879273#基于django/neo4j的通讯录与QQ好友关系管理系统
- java项目调用webservice_JAVA程序调用Webservice接口
- MATLAB学习笔记(二)——M文件
- 华为存储iscsi配置_使用华为存储配置ISCSI存储方法和iSCSI建立连接提示目标错误...
- 【电商界的屠龙者-拼多多】——“拼多多”竞品分析
- LED屏幕上轮流显示三色条纹、彩虹、四叶草(数组与内存映射的采用)
- libusb函数说明
- 查看表空间已使用和剩余空间大小
- 如何长高青春期后 - 两个简单而成功的方法
- 嵌入式linux开发,交叉编译qt4.8.5报错:not found (try using -rpath or -rpath-link)/home/ms/work/code/qt/opensourc
- 马斯克将于8月推出Autopilot新版本,实现全自动驾驶
热门文章
- WebStorm 使用经验
- 【bzoj3884】上帝与集合的正确用法 扩展欧拉定理
- C#, CLR, and .NET Framework versions
- Java解析HTML
- Oracle 游标(cursor) 说明
- 关于VC单选按钮不能设置变量以及Group属性的设置问题
- STM8L编程环境官方库+STVD+COSMIC+ST-Link
- AB1601安装新版本IDE后工程编译可以通过单无法连接的问题排查解决过程
- AB1601中volatile的使用
- Developing a blockchain framework for the automotive supply chain: A systematic review 汽车供应链区块链