资源下载地址: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

基于C++实现惊险刺激的Flappy Bird设计相关推荐

  1. Python详细了解强化学习算法并基于强化学习Q_learning让电脑玩flappy bird游戏

    完整代码:https://github.com/Connor666/flappy_bird-RL 首先,如果你是为了追求一个非常高的强化学习效果,也就是flappy bird的分数,那么建议出门右拐选 ...

  2. 一步步分析AI如何玩Flappy Bird

    一.Flappy Bird 游戏展示 在介绍模型.算法前先来直接看下效果,上图是刚开始训练的时候,画面中的小鸟就像无头苍蝇一样乱飞,下图展示的是在本机(后面会给出配置)训练超过10小时后(训练步数超过 ...

  3. flappy bird游戏源代码揭秘和下载后续---移植到android真机上

    前言:         上一篇博客 flappy bird游戏源代码揭秘和下载,源码是运行在window或者mac系统上的,现在我们需要把代码移植到android真机上,让小鸟在手机里飞起来! ps: ...

  4. Flappy bird需求规格说明书

    1.引言     1.1.编写目的 该需求分析为说明书通过对<flappy bird>游戏软件的客户需求分析,明确了所要开发的游戏软件的功能以及界面等的处理,从而使小组成员更清楚的了解用户 ...

  5. 【玩转cocos2d-x之三十六】Flappy Bird大集结

    前几天看到cocos2d-x官网论坛让各种姿势的flappy bird霸占了,矮油真受不鸟,你们够啦!!! 今天准备用一个贴来 秒杀 你们.准备好了么...放图镇楼: 1.C++版 先来个传统版,@O ...

  6. cmd小游戏_使用pygame制作Flappy bird小游戏

    原文链接: [Python]使用Pygame做一个Flappy bird小游戏(一)​mp.weixin.qq.com 最近看到很多大佬用强化学习玩Flappy bird.所以打算也上手玩一玩,但是苦 ...

  7. 第3章 flappy bird作业、SVN、GIT、码云

    第3章别碰白块讲解后(童晶:3 别碰白块(<C和C++游戏趣味编程>配套教学视频)),请同学们做了一个flappy bird的练习: 在别碰白块代码基础上,实现flappy bird游戏效 ...

  8. 强化学习七日打卡营终极复现之flappy bird

    7天的实战很快就过去了,在调参调到怀疑人生时,"标准答案"却出奇的简单,另外每次训练时间都非常长,要是有加快训练的方法就好了.最后有一个终极复现可以自由发挥,这就来实现曾经想玩的f ...

  9. 使用神经网络和遗传算法玩转 Flappy Bird

    阅读原文请点击 摘要: 本文展示了针对Flappy Bird游戏设计的机器学习算法.本实验的目标是使用神经网络和遗传算法编写一个人工智能游戏控制器,打出游戏最高分,不服的来挑战! 我们创建一个人工智能 ...

  10. 使用cocos2d-x实现一款类似《Flappy Bird》的游戏

    最近,一只8比特位像素的小鸟霸占了IOS免费游戏排行榜的第一名,这款<Flappy Bird>游戏可谓是一夜爆红,简单并不粗糙的画面.超级玛丽游戏中的绿色通道.眼神有些呆滞的小鸟和几朵白云 ...

最新文章

  1. hdu 1003 Max Sum 解题报告
  2. boost::incremental_components用法的测试程序
  3. Machine Learning On Spark——基础数据结构(一)
  4. 深度学习(二)——深度学习常用术语解释, Neural Network Zoo, CNN, Autoencoder
  5. 设计模式总结(Java)—— 单例模式
  6. Poj_2536 Gopher II -二分图建图
  7. laytpl语法_浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
  8. 《Asp.Net 2.0 揭秘记(十四)
  9. Scrapy框架结合Spynner采集需进行js,ajax动态加载的网页并提取网页信息(以采集微信公众号文章列表为例)
  10. ML Mastery 博客文章翻译 20220116 更新
  11. 系统学习深度学习(十六)--Overfeat
  12. H5表单中时间日期控件
  13. 基因家族鉴定分析实战操作手册
  14. 哥德巴赫猜想python
  15. 华为手机时间用长了会卡吗?
  16. 一个几乎对英语零基础的人,该如何有效,且高效的学习英语?
  17. 园艺智慧_园艺日:如何在完全远程的情况下运行技术债务清理日
  18. 准备VB或C#开发环境(Visual Studio)
  19. 权限管理之文件权限管理
  20. 多伦多大学好吗_多伦多大学多伦多大学生命科学好吗?

热门文章

  1. siri中文语音助理_智能语音应用在哪些场景?
  2. Android Studio实现记单词App,背完四六级一次过~
  3. ansible:jinja2对特殊符号的处理
  4. PAT 1082 射击比赛 python
  5. (25)TracerWarning: Output nr 1. of the traced function does not match the corresponding output of ..
  6. Luogu P1530 分数化小数 Fractions to Decimals(模拟)
  7. linux发送短信的脚本,shell监控系统资源并通过短信报警的脚本
  8. 能“干掉”苹果的中国“黑客”
  9. fatal: unable to auto-detect email address (got ‘...@...(none)‘)
  10. 【基本数据结构】python array数组 [easy] leetcode1,53,88,118,121,217,350,566