收藏 分享(赏)

flappy bird源程序设计.doc

上传人:tangtianxu1 文档编号:2978813 上传时间:2018-10-01 格式:DOC 页数:31 大小:394.50KB
下载 相关 举报
flappy bird源程序设计.doc_第1页
第1页 / 共31页
flappy bird源程序设计.doc_第2页
第2页 / 共31页
flappy bird源程序设计.doc_第3页
第3页 / 共31页
flappy bird源程序设计.doc_第4页
第4页 / 共31页
flappy bird源程序设计.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、四川师范大学成都学院高级语言程序课程设计Flappy bird 游戏程序设计学生姓名 彭 强学 号 2012101221所在学院 通信工程学院专业名称 移动通信班 级 2012 级移动通信方向 1 班指导教师 周小丽成 绩四川师范大学成都学院二一四年十二月四川师范大学成都学院课程设计报告II课程设计任务书学生姓名 彭强 学生学号 2012101221学生专业 通信工程 学生班级 2012 级移动通信方向 1 班指导教师 周小丽 职 称 助教发题日期 2014 年 10 月 20 日 完成日期 2014 年 11 月 3 日设计题目 Flappy bird 游戏程序设计设计目的:1、掌握 c 语

2、言编程2、了解简单游戏设计思路及方法3、学习用 c 语言编写简单程序4、了解用 c 语言处理图片具体任务及要求:1、用 c/c+完成 flappy bird 程序设计2、游戏包括加载、引导、开始、游戏、结束环节3、记分牌、记录等设计4、游戏分为白天和黑夜两个场景课程设计进度安排:序号 内容安排 时间1 图片素材下载 10.20-11.32 大概实现框架 11.4-11.103 开始界面设计 11.11-11.204 游戏画面设计 11.21-12.15 结束画面设计 12.2-12.10课程设计参考文献:1 仇芒仙、朱蓉:C/C+程序设计案例教程,清华大学出版社,2012.8,P20-P100

3、2 钱能等:C+程序设计教程(第 2 版),北京邮电大学出版社,2005.1,P65-P773 赵真、刘文:C 语言简易动画设计,陕西电子科技大学出版社,2008.4,P201-P264指导教师签字院长审核签字四川师范大学成都学院课程设计报告III四川师范大学成都学院课程设计报告IIIFlappy bird 游戏程序设计内容 摘要:flappy bird 是一款形式简易但难度极高的休闲游戏。玩家需要不断控制点击屏幕的频率来调节小鸟的飞行高度和降落速度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟不小心擦碰到了管子的话,游戏便宣告结束。本设计介绍了电脑版的该游戏的大概框架以及具体源程序代码。关键词

4、:游戏 设计 程序Flappy bird game programmingAbstract: Flappy bird is a form of simple but very casual games. Players need to keep control of the frequency of the click on the screen to adjust the flying height of the birds and landing speed, and let the bird pipe aperture pass the picture to the right. If

5、the bird accidentally brush against the pipe, the game has ended.This design introduced the computer version of the game about framework and specific source program code.Keywords:Game Design Program 四川师范大学成都学院课程设计报告IV目 录前言 .11 图片素材下载 .22 加载界面设计 .33 主页面设计 .34 游戏界面设计 .54.1 游戏前界面 54.2 游戏中界面 54.3 游戏结束界面

6、 65 各步骤图片 .96 结束语 10附录 11参考文献 24四川师范大学成都学院课程设计报告1Flappy bird 游戏程序设计前言flappy bird是由来自越南的独立游戏开发者 Dong Nguyen 所开发的作品,该游戏于 2013 年 5 月上线,2014 年年初迎来火爆之势。目前,该游戏全球下载或已超过 5 千万次。由于本游戏的成功受到质疑,研发者迫于压力,于 2014年 2 月 8 日意外宣布游戏下线。游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的

7、时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。该程序由 c-free 编程软件编写,用到了网上下载的 EGG 库函数。C-Free 是一款支持多种编译器的 C/C+集成开发环境(IDE) 。利用 C-Free,使用者可以轻松地编辑、编译、连接、运行、调试 C/C+程序。C-Free 是一款C/C+集成开发环境(IDE) 。目前有两个版本,收费的 C-Free 5.0 专业版和免费的 C-Free 4.0 标准版。C-Free 中集成了 C/C+代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提示。C-Free 提供了对目前业界主流 C

8、/C+编译器的支持,你可以在 C-Free 中轻松切换编译器。可定制的快捷键、外部工具以及外部帮助文档,使你在编写代码时得心应手。完善的工程/工程组管理使你能够方便的管理自己的代码。EGE1(Easy Graphics Engine) ,是 windows 下的简易绘图库,是一个类似BGI(graphics.h)的面向 C/C+语言新手的图形库,它的目标也是为了替代 TC 的BGI 库而存在。它的使用方法与 TC 中的 graphics.h 相当接近,对新手来说,简单,友好,容易上手,免费开源,而且因为接口意义直观,即使是之前完全没有接触过图形编程的,也能迅速学会基本的绘图。 目前,EGE 图

9、形库已经完美支持VC6, VC2008, VC2010, C-Free, DevCpp, Code:Blocks, wxDev, Eclipse for C/C+等 IDE。四川师范大学成都学院课程设计报告21 图片素材下载在编写程序之前,我们必须搜集相应的素材。可以在网上收索,当然也可以自己画。完整的 flappy bird 游戏需要图片有:背景 2 张(黑白场景) 、小鸟、地面、上下管道以及记分牌等。注:为了让画面像素更高,须收集更多的运动的小鸟照片。在我们建的主文件夹下建一个新文件夹,并命名为“依赖包” ,然后将收集到的照片分类命名放在新建的依赖包下备用,具体素材如下图所示: 图 1-1

10、 背景和正反管道图 1-2 奖牌图 1-3 小鸟四川师范大学成都学院课程设计报告3图 1-4 其他2 加载界面设计此界面是游戏的引导界面,相当于是一个叫玩家等待界面。1 秒过后进入游戏主界面。首先程序界面初始化,然后 int ini(void);int game(void);int show(void); 然后获得窗口句柄 HWND hWnd = getHWnd(); 设置主页面的宽和高initgraph(384,512); 在 Windows 中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个 Delphi 窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作 1

11、42 号窗口,就此你的应用程序就能要求系统对 142 号窗口进行操作移动窗口、改变窗口大小、把窗口最小化等等。实际上许多 Windows API 函数把句柄作为它的第一个参数,如 GDI(图形设备接口)句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。SetWindowText(hWnd, TEXT(“Flappy bird彭强);/ 使用 API 函数修改窗口名称最后把依赖包里的“加载”照片调到屏幕显示 PIMAGE loading=newimage();getimage

12、(loading,“依赖包图片其他 加载.png“);3 主页面设计主页面为游戏的入口,包括上下运功的小鸟、向左运动的地面、开始按钮及分数榜等主题。四川师范大学成都学院课程设计报告4首先调用依赖包的“开始”图片,getimage(main_interface,“ 依赖包图片其他 开始.png“); 然后用用算法实现地面和小鸟的运动(依次快速调用小鸟的三张不同照片,由于速度很快以及人的视觉停留,欺骗人的眼睛,误以为是小鸟在动,运动的地面也是如此) 。动画是通过连续播放一系列静止的画面,当连续播放达到一定的速度时,我们用肉眼看到的就是动画了。它的基本原理与电影,电视一样,都是利用视觉原理。医学已经

13、证明,人的眼睛具有“视觉暂留”特性,就是人的眼睛看到一幅画面或一个物体后,在 1/24 秒内不会消失,利用这一视觉变化效果。因此电影采用了每秒 24 幅画的速度拍摄播放,电视采用了每秒 25 幅(PAL 制)或 30 幅(NSTC 制)画面的速度拍摄播放,如果以每秒低于 24 幅画面的速度拍摄播放,就会出现停顿现象。帧频:即每秒播放的帧数。帧频的大小直接影响到动画的快慢。帧频的单位是“帧/秒” ,即“fps” ,flash 中默认为 12fps.由于计算机显示器的荧光刷新特性,实际看到的相当于 24 帧,刚好达到了动画的一般要求。算法如下:a-=2;if(a=0b=shijian;此时玩家已经

14、真正进入游戏,随着玩家点击鼠标的频率小鸟高度不断发生变化,让小鸟不至于撞到柱子上和调到地上。4.2 游戏中界面首先管道依次向左运动,让人误以为是小鸟在向右运动。这里用到随机函数zhuzic.h=(random(200)+200;检测用户鼠标算法:if(shijian-b)1b=shijian;柱子移动的算法:for(c=0;c=35if(zhuzi1.x=35if(zhuzi2.x=35if(bird_h415)break;setcolor(WHITE);setfont(-50,0,“幼圆“);xyprintf(180,40,“%d“,point);如果发生了碰撞或者落地,那么游戏结束,向屏幕

15、弹出游戏结束和重来画面、显示分数、以及分数榜。碰撞后鸟向下落,直到掉到地上。putimage_withalpha(NULL,bird_middle_90,100,bird_h);if(a=4然后根据分数算出奖牌类型,从 txt 文件中读出记录,并向屏幕输出。Txt是我们用来记录最高记录的文本,具体程序如下:putimage_withalpha(NULL,gameover,55,60);delay_ms(300);putimage_withalpha(NULL,jifenpai,35,150);delay_ms(300);putimage_withalpha(NULL,again,35,350)

16、;putimage_withalpha(NULL,paihangbang,200,350);if(point=10setfont(-25,0,“幼圆“);xyprintf(270,195,“%d“,point);fp=fopen(“依赖包记录.txt“,“r“);fscanf(fp,“%d“,fclose(fp);if(pointpoint_jilu)point_jilu=point;fp=fopen(“依赖包记录.txt“,“w“);fprintf(fp,“%d“,point_jilu);fclose(fp);xyprintf(270,260,“%d“,point_jilu);PIMAGE

17、ground=newimage();PIMAGE course_up=newimage();PIMAGE course_down=newimage();PIMAGE course_middle=newimage();PIMAGE zhuzi_z=newimage();PIMAGE zhuzi_f=newimage();PIMAGE gameover=newimage();PIMAGE jifenpai=newimage();PIMAGE again=newimage();PIMAGE paihangbang=newimage();PIMAGE tong=newimage();PIMAGE yi

18、n=newimage();PIMAGE gold=newimage();PIMAGE bai=newimage(); 如果玩家点击了重来按钮,游戏又重新开始。就构成了一个循环,小鸟碰撞后,玩家不想玩了,点击结束就可以结束游戏。至此,游戏大概框架已经搭建好了,然后加上 EGG 库,补全程序,最后调试修改就可以了。四川师范大学成都学院课程设计报告95 各步骤图片图 5-1 加载和开始界面图 5-2 游戏运行和小鸟落地四川师范大学成都学院课程设计报告106 结束语在设计中遇到了很多编程问题,最后在周老师的辛勤指导下,终于迎刃而解。同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!经过近两

19、个月的学习,使我对 c 语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处,首先是自己在指法上还不行,经常按错字母,通过学习也有所改进;再有对c 语言的一些标准库函数不太了解,还有对函数调用的正确使用不够熟悉,还有对 c 语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。通过实践的学习,我知道学好计算机要重视实践操作,不仅仅是学习 c 语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好各门课程。通过课程设计,普遍感到自己应用基础知

20、识及专业知识解决问题的能力有了很大的提高,以前所学的许多课程觉得很零散,也不知道有什么用及怎么用,现在也都找到了用武之地。同时,我也学到了在许多书本上不可能收录的东西。例如一些设计的具体的规范,和一些设计的要求。如何把规范里的明文规定运用到实际上去,以及运用过程中的把握上。也学到了如何独立思考,如何自己查阅资料,如何与人相处融洽等实际经验。今后走上社会,我主要还是靠在学校学到的知识技能来养活自己,并回报社会,回报父母,我也了解到了自己的很多不足,在今后的工作与学习中,我会不断的提高与改进。四川师范大学成都学院课程设计报告11附录#include #include int ini(void);i

21、nt game(void);int show(void);int ini(void)int x,y,a=0,b;initgraph(384,512);randomize();setbkmode(TRANSPARENT);HWND hWnd = getHWnd(); / 获得窗口句柄SetWindowText(hWnd, TEXT(“Flappy bird彭强);/ 使用 API 函数修改窗口名称PIMAGE loading=newimage();getimage(loading,“依赖包图片其他加载.png“);putimage(0,0,loading);delay_ms(500);delim

22、age(loading);PIMAGE main_interface=newimage();getimage(main_interface,“依赖包图片其他开始.png“);PIMAGE ground=newimage();getimage(ground,“依赖包图片背景地.png“);PIMAGE bird_u = newimage();PIMAGE bird_m = newimage();PIMAGE bird_d = newimage();getimage(bird_u, “依赖包图片鸟上 0.png“);四川师范大学成都学院课程设计报告12getimage(bird_m, “依赖包图片

23、鸟中 0.png“);getimage(bird_d, “依赖包图片鸟下 0.png“);while(1)a-=2;if(a=0/初始化 shijian=0;bird_h=250;point=0;zhuzi0.x=700;四川师范大学成都学院课程设计报告17zhuzi1.x=940;zhuzi2.x=1180;v=0;a=0;b=0;c=0;while(1)/游戏界面 shijian+=1;cleardevice();/*检测用户操作并执行 */if(shijian-b)1b=shijian;/*计算高度*/ v+=9.8;bird_h+=(v*1.9)/77);/*柱子的移动*/for(c=

24、0;c=0if(zhuzi1.x=35if(zhuzi2.x=35if(bird_h415)break/*显示分数*/setcolor(WHITE);setfont(-50,0,“幼圆“);xyprintf(180,40,“%d“,point);四川师范大学成都学院课程设计报告21delay_fps(77);/*游戏结束画面*/ while(1)/显示背景 cleardevice();putimage(0,0,bk);/显示柱子for(c=0;c=0putimage_withalpha(NULL,gameover,55,60);delay_ms(300);putimage_withalpha(

25、NULL,jifenpai,35,150);delay_ms(300);putimage_withalpha(NULL,again,35,350);putimage_withalpha(NULL,paihangbang,200,350);if(point=10setfont(-25,0,“幼圆“);xyprintf(270,195,“%d“,point);fp=fopen(“依赖包记录.txt“,“r“);四川师范大学成都学院课程设计报告23fscanf(fp,“%d“,fclose(fp);if(pointpoint_jilu)point_jilu=point;fp=fopen(“依赖包记录

26、.txt“,“w“);fprintf(fp,“%d“,point_jilu);fclose(fp);xyprintf(270,260,“%d“,point_jilu);a=1;while(a)if(keystate(VK_LBUTTON)mousepos(if(x10delay_fps(60); int WinMain(void)ini();game();closegraph();return 0;四川师范大学成都学院课程设计报告24参考文献1 仇芒仙、朱蓉:C/C+程序设计案例教程,清华大学出版社,2012.8,P20-P1002 钱能等:C+程序设计教程(第 2 版),北京邮电大学出版社,2005.1,P65-P773 赵真、刘文:C 语言简易动画设计,陕西电子科技大学出版,2008.4,P201-P264四川师范大学成都学院课程设计报告25成绩评定表学生姓名 彭强 学生学号 2012101221学生专业 通信工程 学生班级 2012 级移动通信方向 1 班指导教师 周小丽 职 称 助教设计题目 Flappy bird 游戏程序设计评语等级评定成绩分数指导教师签字: 年 月 日说明:分数采用百分制,相应的等级为:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 专业基础教材

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报