基于C++实现惊险刺激的Flappy Bird设计

资源下载地址:https://download.csdn.net/download/sheziqiong/85941853
资源下载地址:https://download.csdn.net/download/sheziqiong/85941853
目录
1、 题目描述和题目要求 2
2、 需求分析 2
3、总体设计 5
3.1 功能模块设计 5
3. 状态信息栏:页面上方显示最近一次选择的菜单按钮; 7
• 结束页面模块 7
3. 得分显示:显示游戏得分。 8
• 游戏主体——小鸟模块 8
3. 小鸟碰撞控制:见游戏主体——小鸟模块 8
• 游戏主体——水管模块 10
• 游戏主体——背景模块 11
• 排行榜模块 11
• 实时计分显示模块 12

  1. 需要在游戏界面上显示实时分数。 12
    3.2 数据结构设计 12
    3.3 函数功能描述 13
    void DrawGameEnd() 14
    void Main() 15
    void DrawBackground() 16
    void DrawBird(int state, double bx, double by) 16
    void DrawPipe(double PipeLocation, double PipeHeight) 17
    void DrawRanking() 17
    void PrintRanking() 17
    void DrawIntroduction() 18
    void DrawScore() 19
    void displaymenu() 19
    void displaygame() 19
    void displaygameend() 20
    void CharEventProcess(char ch) 20
    void KeyboardEventProcess(int key, int event) 21
    void MouseEventProcess(int x, int y, int button, int event) 21
    void TimerEventProcess(int timerID) 21
    void readfile() 22
    void sortlinkedlist() 22
    void putfile() 23
    void initfile() 24
    3.4 程序文件结构 24
    (1) Sourcefiles 24
    (2) Headfiles 25
    (3) Libgraphics 与 simpleGUI 27
    4.部署与运行 28
    4.1 编译安装运行说明 28
    1.下载压缩包,解压 28
    4.2 典型测试情况 28
    5.组内分工 29
    5.1 组内分工情况 29
    5.2 个人实践过程中遇到的难点及解决方案 30
    (2) 难点:如何让小鸟动起来 30
    (1) 问题:按钮在编写完成后点下,清屏却不完全。 32
    (2) 问题:按钮的位置在不同电脑看会有些许误差。 32
    (3) 问题:画面及颜色偏单调。 33
    6.合作纪要 33
    7.总结 36
    7.1 程序亮点或创新之处 36
    7.2 应用知识点 36
    7.3 心得体会 37
    8、参考文献和资料 40
    1、 题目描述和题目要求
    Flappy Bird 游戏是一款鸟要尽量穿过越多的水管的游戏,游戏开始后不得暂停,鸟的移动由鼠标右键,键盘空格键以及键盘向上方向键决定,每按一次上升固定高度,否则则加速掉落。游戏目标让鸟通过越多的水管,每通过一个分数加一,一但碰到水管或地面游戏结束。游戏过程中会有状态栏显示当前得分。不同于最原始版的游戏,我们增加了难易度选项,三者的水管生成速度依次加快。其他功能有在设置中的引导指示,即最终的排行榜。在游戏中排名前十的玩家将会被列在排行榜中,输入姓名方式为姓名数入,最后添加一个’#’登入资料。排行榜的内容亦可以清空。
    2、 需求分析
    在开始制作游戏之前,我们无数次的挑战了正版的 Flappy Bird 游戏,经过数次讨论,列出了以下的需求,以进行分工。
    在思路的部份列出以下四个大方向,包含图片素材(声音素材)、启动界面、游戏界面,及分数界面。在这些模块内,我们又继续细分列点,以大致掌握整体工作量。
    图片素材中包含我们所有的角色(鸟、水管)及背景,然而最终金币级怪物功能未能实现。原先的设定是使金币随机分布,碰触到一个金币等同于经过一个水管的得分;而怪物原先的用途则是为了增加游戏难度,以上两功能都并非原版游戏拥有,而是当时我们自己添加的。
    在启动界面的部份,除了参考原始界面,我们加入新的难易度功能,包含选
    择难易度等等。我们希望可以透过难易度的不同,达到能够提高用户广度的功能。在讨论中的我们,还抱有极大的梦想,希望可以在添加商店的功能,让玩家可以自由选择鸟的皮肤,换上自己喜欢的颜色。
    分数界面的部份则就希望能做出用链表实现的排行榜界面,包含玩家姓名分数及名次,比较没有太多的花样。
    最后游戏界面的部份是一开始我们就知道将会最困难的部份,不只是界面的样式,还有许多功能函数的需求。我们罗列了以下,在对象方面包含绘制的函数、鸟的移动、背景图片(水管)的移动及随机生成,还有原先设有的金币及怪物的移动等等;在游戏进行方面则有碰撞的判断函数、控制小鸟飞行的回调函数、控制速度的计时器等等;功能方面更设置随时统计分数的状态栏以及最终显示玩家排名的排行榜等功能。
3.4程序文件结构1)文件函数结构 
首先,在大文件价下包含的是 DevProject,其中放的是我们的主函数,命名为 Our Flappy Bird。而在这在大文件下又分为四个子文件: 
(1)Sourcefiles
i.draw.c
void DrawBird(int state, double bx, double by) void	DrawPipe(double	PipeLocation,	doublePipeHeight)
void DrawRanking() void printsort()
void DrawIntroduction() void DrawScore()
void DrawMenu() void DrawGameEnd()
ii.event.c
void displaymenu() void displaygame() void displaygameend()
void CharEventProcess(char ch)
void KeyboardEventProcess(int key, int event)
void MouseEventProcess(int x, int y, int button, int event) void TimerEventProcess(int timerID)
iii.file.c
void readfile()
void sortlinkedlist() void putfile()
void initfile()
iv.flappy bird.c
void Main()
(2)Headfiles
i.definition.h /*此头文件定义一些全局用到的宏、变量、结构等*/
#define WindowWidth 5.0	//窗口宽
#define WindowHeight 7.0	//窗口高
#define BlankHeight 1.8	//上下水管之间空档的大小
#define GroundHeight 1.6	//地面高度
#define BlankHeight 1.8	//上下水管之间空档的大小
#define GroundHeight 1.6	//地面高度
#define Pipe_Speed 0.12//定时器 ID 选择:
#define SHOW_GAME_EASY 1
#define SHOW_GAME_MEDIUM 2
#define SHOW_GAME_HARD 3
#define SHOW_MENU 4//翅膀状态:
#define	WINGUP	1#define
#define	WINGMID
WINGDOWN		2	
3
//难度:				
#define	Easy	1		
#define	Medium		2	
#define	Hard	3		static int enable_move_pipe=1;	//允许移动//动画间隔时间 (可用于调整游戏难度): static int timer_interval_easy=35;
static int timer_interval_medium=32; static int timer_interval_hard=25;static int timer_interval_menu=50;	//开始界面刷新间隔时间(防止界面闪烁) static int	show_more_buttons1 = 0;
static int	show_more_buttons2 = 0; static int	show_more_buttons3 = 0;typedef struct{	//定义水管结构double cx;
double cy;
} Pipe;
Pipe Pipe_1, Pipe_2, Pipe_3;typedef struct {	//定义玩家结构char name[100];
int score;
}Player;struct Toptenplayer { //构造排行榜上玩家信息的链表char name[100];
int score;
struct Toptenplayer *next;
};
ii.draw.h /*此头文件声明一些绘制界面过程中用到的函数*/
void DrawBird(int state, double bx, double by);
void DrawPipe(double PipeLocation, double PipeHeight); void DrawMenu(void);
void DrawGameEnd(void); void DrawBackground(void); void DrawIntroduction(void);void DrawScore(void); void DrawRanking(void);
iii.event.h /*此头文件声明事件处理中需要用到的函数*/
void KeyboardEventProcess(int key, int event);
void MouseEventProcess(int x, int y, int button, int event); void TimerEventProcess(int timerID);
void CharEventProcess(char c);
void DisplayClear(void);	//清屏函数
void startTimer(int id, int timeinterval);	//计时器启动函数
iv.library.h /*此头文件在于简化主函数使之不显冗杂*/
#include "graphics.h"
#include "extgraph.h"
#include "genlib.h"
#include "simpio.h"
#include "conio.h"
#include "imgui.h"
#include "random.h"
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <math.h>
#include <windows.h>
#include <olectl.h>
#include <mmsystem.h>
#include <wingdi.h>
#include <ole2.h>
#include <ocidl.h>
#include <winuser.h>
(3)Libgraphics 与 simpleGUI
此二资料夹为老师提供的库。2)多文件构成机制 使用library.h 简化主函数使之不显冗杂,使用definition.h 定义一些全局用到的宏、变量、结构等,使用 draw.h 声明一些绘制界面过程中用到的函数,使用 
event.h 声明事件处理中需要用到的函数。 
采用多个.c 文件,flappybird.c 是主源文件,另外组织了 event.c,draw.c,
file.c,分别放置事件处理相关函数,绘制界面相关函数,以及文件处理相关函数,便于修改。 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
资源下载地址:https://download.csdn.net/download/sheziqiong/85941853
资源下载地址:https://download.csdn.net/download/sheziqiong/85941853

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33917.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[COGS 2897] [THUPC 2017] 天天爱射击

COGS传送门 题目描述 小C爱上了一款名字叫做《天天爱射击》的游戏&#xff0c;在这款游戏中可以用子弹将木板打碎。如图所示&#xff0c;这个游戏有一些平行于x轴的木板。现在有一些子弹&#xff0c;按顺序沿着y轴方向向这些木板射去。第 i i i块木板被 S i S_i Si​个子弹击…

【选恐症安利】小熊猫C++原创配色

【选恐症安利】小熊猫C原创配色! 本人是超级强迫症和选择恐惧症&#xff01;经过三天的调色&#xff0c;成就了下面的情景&#xff1a; 哇&#xff0c;绝了&#xff01; 你可以在这里导入配色&#xff1a; 好了&#xff0c;放链接&#xff01; wwt.lanzoum.com/iv4VW0cbkep…

[day2]python网络爬虫实战:爬取美女写真图片(增强版)

l> 我的新书《Android App开发入门与实战》已于2020年8月由人民邮电出版社出版&#xff0c;欢迎购买。点击进入详情 文章目录 1.开发环境2.第三方库3.实现1.分析url格式2.分析图片格式3.保存图片到本地4.输入页数 4.优化1.防止被封2.多线程下载3.便捷获取图片地址 5.效果6.G…

Python写网络爬虫(一)

文章目录 网络爬虫简介爬虫在使用场景中的分类爬虫的矛与盾需要知道的协议常用请求头信息常用响应头信息requests模块如何使用requests&#xff1a;&#xff08;requests模块的编码流程&#xff09;新手实战演练正式入门爬虫get 方法的常用参数&#xff1a;简易网页采集器 首先…

那个顶撞雷军还爱在办公室打乒乓的副总裁——周光平

文章原创来自洞见网&#xff1a;http://www.localonline.com.cn/start/people/712.html&#xff0c;转载请注明出处。 近日&#xff0c;东南大学(原南京工学院)1977级校友周光平、严星夫妇捐资2000万元&#xff0c;在母校设立“平星基金”&#xff0c;用于支持信息科学与工程学…

雷军—我十年的程序员生涯

内容转自&#xff1a;http://blog.sina.com.cn/s/blog_4b0e23c90100b2qf.html 最近&#xff0c;和UCWEB同事讨论&#xff0c;怎么才能把我们的UCWEB做到极致。我说&#xff0c;“手机上的平台非常多&#xff0c;如果想做好&#xff0c;需要足够多、足够优秀的程序员。优秀的程序…

雷军谈人生三段低谷:站店卖货、泡吧泡论坛、错失互联网第一波浪潮!

自2020年小米十周年雷军进行了人生首次公开演讲以来&#xff0c;他似乎想要养成一种习惯&#xff0c;每年都举办一次年度演讲。 继2020年“相信自己&#xff0c;一往无前”和2021年“我的梦想&#xff0c;我的选择”两场年度演讲后&#xff0c;这不&#xff0c;在小米迎来12周…

中国第一程序员求伯君,WPS之父,雷军也佩服的人

中国第一程序员求伯君&#xff0c;WPS之父&#xff0c;最强码农的传奇经历 转载知乎冷冷读书 https://www.zhihu.com/people/leng-leng-80-6 2018年底&#xff0c;金山举办创业三十年庆典&#xff0c;三位创始人&#xff0c;求伯君、雷军和张旋龙相继到场。庆生中&#xff0c;雷…

用互联网思想武装自己---雷军

两年前的4月6日&#xff0c;我们几个人&#xff0c;在北四环的银谷大厦静悄悄的创办了小米公司&#xff0c;一起喝了碗小米粥&#xff0c;就开始艰难的创业之旅。仅仅两年时间&#xff0c;小米在百度手机品牌排行榜排在前五名&#xff0c;也在淘宝销售排行榜名列前茅&#xff0…

身价10亿的程序员 雷军当年也为他打工——WPS之父 求伯君

他的前半生&#xff0c;值得我们每一个人深思。 在普通人眼里&#xff0c;他寂寂无名&#xff0c;只有年岁稍长的文化人&#xff0c;才听说过他传奇般的存在。 在IT人眼里&#xff0c;他是块活化石&#xff0c;中国第一的大旗除了他&#xff0c;没人敢抗&#xff01; 他是求…

雷军主导小米管理层变革:创业派隐退 职业经理人上位

雷递网 雷建平 12月23日 岁末之际&#xff0c;在京东零售大幅调整后&#xff0c;小米也进行了一轮大调整。 小米集团内部邮件所示&#xff0c;小米总裁王翔将在月底卸任集团总裁职务退休&#xff0c;同时&#xff0c;继续作为高级顾问为公司服务。 小米集团总裁一职将由2019年加…

雷军与周鸿祎:两个九头鸟的战争

一场 智能手机 的口水大战将雷军和周鸿祎推到风口浪尖。有一句俗话叫“天上九头鸟&#xff0c;地上湖北佬”&#xff0c;来形容湖北人的精明、睿智。 小米科技董事长兼CEO雷军、奇虎360董事长周鸿祎同是湖北人。雷军1969年12月16日于湖北仙桃&#xff0c;一个教师家庭&#…

雷军的演讲以及产品发布

8月11号是小米的发布会&#xff0c;还有雷军的年度演讲。 因为工作冲突我没看直播&#xff0c;晚上回来看了公众号文章和知乎上的内容讨论&#xff0c;也看了发布的新产品。 雷军那个年代能够做上程序员一定是非常牛逼的人&#xff0c;而雷军是这些牛逼人的公司总经理&#xff…

雷军写代码水平如何?

3月30日&#xff0c;小米集团发布公告&#xff0c;公司拟成立一家全资子公司&#xff0c;负责智能电动汽车业务。首期投资为100亿元人民币&#xff0c;预计未来10年投资额100亿美元&#xff0c;而智能电动汽车业务的首席执行官依然由雷军担任。 雷军说&#xff1a;我愿意押上我…

雷军 1994 年写的代码

&#xff08;给程序员的那些事加星标&#xff09; 整合整理&#xff1a;程序员的那些事&#xff08;id&#xff1a;iProgrammer&#xff09; 前些天&#xff0c;「程序员的那些事」在趣图栏目中分享了《趣图&#xff1a;雷军的代码像诗一样优雅》。 有些网友在评论中质疑&#…

从小米科技的创始人、董事长、首席执行官雷军的代码水平说起

作为小米科技的创始人、董事长和首席执行官&#xff0c;雷军的名字如雷贯耳。那么作为技术员出身的雷军&#xff0c;他的代码水平如何&#xff0c;最近也成为网上的一个热点议题。 伴随这个热点议题一起出现的是雷军写于1994年的RAMinit程序源码。 ; &#xff08;完整代码附后…

雷军 1994 年写的代码,你见过吗?厉害了!

作为小米科技的创始人、董事长和首席执行官&#xff0c;雷军的名字如雷贯耳。网上出现一篇“刘强东的代码水平如何”的文章&#xff0c;有网友在下面回复“代码只服雷军”。雷军的代码水平真的很牛吗? 原来雷军年轻的时候&#xff0c;也是一名程序员&#xff0c;而且一干就是…

Verilog面试题(一)——2020乐鑫科技数字IC(串转并、饮料售卖机)

文章目录 题目一&#xff1a;将一个串行执行的C语言算法转化为单拍完成的并行可综合verilog。思路代码知乎数字芯片实验室牛客讨论区 题目二&#xff1a;饮料售卖机思路E课网代码&#xff08;牛客讨论区&#xff09; 题目一&#xff1a;将一个串行执行的C语言算法转化为单拍完成…

乐鑫科技2022提前批-数字IC类6.29

1/10&#xff3b;单选&#xff5c;3分&#xff3d; 十六进制数0x12345678为big-endian格式&#xff0c;对应的little-endian格式是&#xff1a; 0x87654321 0x78563412 0x56781234 其他都不正确 2/10&#xff3b;单选&#xff5c;3分&#xff3d; X,Y是两个无符号定点小数&…