logo资料库

C++课程设计-Flappy Bird.doc

第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
资料共24页,剩余部分请下载后查看
课 程 设 计 设计题目 《 Flappy Bird 》 学生姓名 学 号 专业班级 指导教师 年 月 日
目录 一. 课程设计选题及简介 1.选题缘由 2.游戏简介 二. 课程设计方案及算法 1.设计思路 2.关键点说明 三. 代码及实验测试结果 四. 难点和心得体会
设 计 题 目 Flappy Bird 成绩 一、课程设计选题及简介 1.选题缘由 这是一个十分简单的操作游戏游戏——Flappy Bird,我 之所以选择设计这个游戏,是因为在学 C++之前就接触过这 个游戏 C 语言版的,之后在学 C++这门课的时候又有同学跟 我说,你可以用 C++来编程,而且比 C 语言更精炼。于是我 便借此次课程设计来做这个游戏。 课 程 设 计 主 要 内 容 2.游戏简介 游戏很简单,Flappy——飞扬的,顾名思义,控制 Bird 飞翔。玩家只需要通过按“上箭头”来控制小鸟的位置,穿 越障碍物,不触碰障碍物即可。每穿过一个障碍分数 Score 便会加 1,穿过的障碍物越多,后面难度就会加大。 二、课程设计方案及算法 1.设计思路 关于这个游戏,主要分三个类,一个是与背景相关的 Bg 类,一个是和小鸟相关的 Birds 类,还有一个是关于位置的 Position,因为游戏主要涉及到的就是鸟、背景和位置这三个 因素。
首先,游戏需要一个背景,所以先设置一个类 Bg,用来 打印背景,在控制台上进行修改打印,打印边界和柱子(障 碍物); 然后是玩家需要控制的主体,鸟。在 Birds 类中设置函 数来控制鸟,设置按一下向上键鸟会上移几个单位,再设置 判断游戏是否结束的函数; 最后的 Position 类,负责输出坐标,利用 Windows 和 conio 函数,来对控制台进行操作。 把后两个类都设置为 Bg 类的友元类,这样互相调用会很 方便。 以上便是整个程序的大致思路。 2.关键点说明 首先需要说明的是对控制台的操作,这需要用到 Windows 的相关知识。即 Position 类的一个最主要的成员函数: void Position::show(int x, int y) //(光标)移动到坐标(x,y) { COORD pos = { x - 1, y - 1 }; //定义 COORD 结构的实例 pos,初始化 参数用 x 和 y,即 pos.x=x; pos.y=y; HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE); //获得输 出设备的句柄 //输出设备的设备号是 STD_OUTPUT_HANDLE SetConsoleCursorPosition(Out, pos); //设置控制台光标位置 //参数 1:控制台句柄;参数 2:COORD 结构存放的坐标}
其次就是对判断游戏是否结束的函数的说明,鸟碰到柱子 便被判定游戏结束,同样,鸟下降到底端也会被判定游戏结束, 又由于柱子是向左移动,不断刷新,所以只有鸟碰到上端柱子 左侧、碰到下端柱子左侧、碰到上端柱子最下端和下端柱子最 上端的可能,具体即下面这个函数: int Birds::CheckYN(Bg *q) //判定游戏是否结束 { Bg *p=q; int i=0; while(++i<=5) { if(y>23) return 0; //鸟的纵坐标到底,游戏结束 if(x==p->x&&y<=p->y) return 0;//鸟撞到上方柱子的左侧,游戏 结束 if((x==p->x||x==p->x+1||x==p->x+2)&&y==p->y) return 0; // 鸟 撞到上方柱子最下端,游戏结束 if(x==p->x&&y>p->y+p->l_blank) return 0; //鸟撞到下方柱子左 侧,游戏结束 if((x==p->x||x==p->x+1||x==p->x+2)&&y==p->y+p->l_blank) return 0; //鸟撞到下方柱子的最上端,游戏结束 p=p->next; //从第一个柱子检测到最后一个柱子} return 1; } 两处关键点简单的说明即上面那些,下面附上详细代码。
三、代码及实验测试结果 //控制台初始大小 80*25 //控制台坐标原点是最左上的点,自上而下、自左而右增加 #include #include #include //把日期和时间转换为字符串 #include //通过控制台进行输入输出 #include #define PR_Box cout << "*" #define PR_Gold cout << "*" #define PR_Ag cout << "*" #define PR_FBird cout << "Ф" #define PR_DBird cout << "*" #define PR_Land cout << "=" #define PR_Bg_X cout << "=" #define PR_Bg_Y cout << "*" #define PR_Blank cout << " "
using namespace std; int Grade = 1, Score = 0, Max_blank=9,Distance=18; class Bg { private: friend class Birds; friend class Position; int x; int y; int l_blank; Bg *pri; Bg *next; public: Bg(); void CreatBg(Bg* Bg1); void PrtBg(); void InsertBg(Bg* p); void Check_Bg(Bg *q); void Prt_Bg(Bg *q); };
class Birds { private: int x; int y; int condition; friend class Position; public: Birds(); void PrtBird() ; void Loop_Bg(Bg *q); int CheckYN(Bg *q); void calc(int i); }; class Position { private: int x; int y; public: Position(){x=0;y=0;}
分享到:
收藏