目录
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 游戏,经过数次讨论,列出了以下的需求,以进行分工。
在思路的部份列出以下四个大方向,包含图片素材(声音素材)、启动界面、游戏界面,及分数界面。在这些模块内,我们又继续细分列点,以大致掌握整体工作量。
图片素材中包含我们所有的角色(鸟、水管)及背景,然而最终金币级怪物功能未能实现。原先的设定是使金币随机分布,碰触到一个金币等同于经过一个水管的得分;而怪物原先的用途则是为了增加游戏难度,以上两功能都并非原版游戏拥有,而是当时我们自己添加的。
在启动界面的部份,除了参考原始界面,我们加入新的难易度功能,包含选
择难易度等等。我们希望可以透过难易度的不同,达到能够提高用户广度的功能。在讨论中的我们,还抱有极大的梦想,希望可以在添加商店的功能,让玩家可以自由选择鸟的皮肤,换上自己喜欢的颜色。
分数界面的部份则就希望能做出用链表实现的排行榜界面,包含玩家姓名分数及名次,比较没有太多的花样。
最后游戏界面的部份是一开始我们就知道将会最困难的部份,不只是界面的样式,还有许多功能函数的需求。我们罗列了以下,在对象方面包含绘制的函数、鸟的移动、背景图片(水管)的移动及随机生成,还有原先设有的金币及怪物的移动等等;在游戏进行方面则有碰撞的判断函数、控制小鸟飞行的回调函数、控制速度的计时器等等;功能方面更设置随时统计分数的状态栏以及最终显示玩家排名的排行榜等功能。