1 / 31
文档名称:

flappy-bird源程序设计.doc

格式:doc   大小:347KB   页数:31页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

flappy-bird源程序设计.doc

上传人:帅气的小哥哥 2024/5/12 文件大小:347 KB

下载得到文件列表

flappy-bird源程序设计.doc

相关文档

文档介绍

文档介绍:该【flappy-bird源程序设计 】是由【帅气的小哥哥】上传分享,文档一共【31】页,该文档可以免费在线阅读,需要了解更多关于【flappy-bird源程序设计 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。四川师范大学成都学院高级语言程序课程设计Flappybird游戏程序设计学生姓名彭强学号2024101221所在学院通信工程学院专业名称移动通信班级2024级移动通信方向1班指导教师周小丽成绩四川师范大学成都学院二○一四年十二月四川师范大学成都学院课程设计报告II课程设计任务书学生姓名彭强学生学号2024101221学生专业通信工程学生班级2024级移动通信方向1班指导教师周小丽职称助教发题日期2014年10月20日完成日期2014年11月3日设计题目Flappybird游戏程序设计设计目的:1、掌握c语言编程2、了解简单游戏设计思路及方法3、学****用c语言编写简单程序4、了解用c语言处理图片具体任务及要求:1、用c/c++完成flappybird程序设计2、游戏包括加载、引导、开始、游戏、结束环节3、记分牌、记录等设计4、游戏分为白天和黑夜两个场景课程设计进度安排:-----:[1]仇芒仙、朱蓉:C/C++程序设计案例教程,清华大学出版社,,P20-P100[2]钱能等:C++程序设计教程(第2版),北京邮电大学出版社,,P65-P77[3]赵真、刘文:C语言简易动画设计,陕西电子科技大学出版社,,P201-P264指导教师签字院长审核签字四川师范大学成都学院课程设计报告III四川师范大学成都学院课程设计报告IIIFlappybird游戏程序设计内容摘要:flappybird是一款形式简易但难度极高的休闲游戏。玩家需要不断控制点击屏幕的频率来调节小鸟的飞行高度和降落速度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟不小心擦碰到了管子的话,游戏便宣告结束。本设计介绍了电脑版的该游戏的大概框架以及具体源程序代码。关键词:游戏设计程序FlappybirdgameprogrammingAbstract:,,:GameDesignProgram四川师范大学成都学院课程设计报告IV目录前言 11图片素材下载 22加载界面设计 33主页面设计 34游戏界面设计 65各步骤图片 96结束语 10附录 11参考文献 241Flappybird游戏程序设计前言?flappybird?是由来自越南的独立游戏开发者DongNguyen所开发的作品,该游戏于2024年5月上线,2024年年初迎来火爆之势。目前,该游戏全球下载或已超过5千万次。由于本游戏的成功受到质疑,研发者迫于压力,于2024年2月8日意外宣布游戏下线。游戏中玩家必须控制一只小鸟,跨越由各种不同长度水管所组成的障碍,而这只鸟其实是根本不会飞的……所以玩家每点击一下小鸟就会飞高一点,不点击就会下降,玩家必须控制节奏,拿捏点击屏幕的时间点,让小鸟能在落下的瞬间跳起来,恰好能够通过狭窄的水管缝隙,只要稍一分神,马上就会失败阵亡。该程序由c-free编程软件编写,用到了网上下载的EGG库函数。C-Free是一款支持多种编译器的C/C++集成开发环境〔IDE〕。利用C-Free,使用者可以轻松地编辑、编译、连接、运行、调试C/C++程序。C-Free是一款C/C++集成开发环境〔IDE〕。目前有两个版本,收费的C--。C-Free中集成了C/C++代码解析器,能够实时解析代码,并且在编写的过程中给出智能的提示。C-Free提供了对目前业界主流C/C++编译器的支持,你可以在C-Free中轻松切换编译器。可定制的快捷键、外部工具以及外部帮助文档,使你在编写代码时得心应手。完善的工程/工程组管理使你能够方便的管理自己的代码。EGE[1]〔EasyGraphicsEngine〕,是windows下的简易绘图库,是一个类似BGI()的面向C/C++语言新手的图形库,它的目标也是为了替代TC的BGI库而存在。,对新手来说,简单,友好,容易上手,免费开源,而且因为接口意义直观,即使是之前完全没有接触过图形编程的,也能迅速学会根本的绘图。目前,EGE图形库已经完美支持VC6,VC2024,VC2024,C-Free,DevCpp,Code::Blocks,wxDev,EclipseforC/C++等IDE。四川师范大学成都学院课程设计报告21图片素材下载在编写程序之前,我们必须搜集相应的素材。可以在网上收索,当然也可以自己画。完整的flappybird游戏需要图片有:背景2张〔黑白场景〕、小鸟、地面、上下管道以及记分牌等。注:为了让画面像素更高,须收集更多的运动的小鸟照片。在我们建的主文件夹下建一个新文件夹,并命名为“依赖包〞,然后将收集到的照片分类命名放在新建的依赖包下备用,具体素材如以下图所示:图1-1背景和正反管道图1-2奖牌图1-3小鸟四川师范大学成都学院课程设计报告4图1-4其他2加载界面设计此界面是游戏的引导界面,相当于是一个叫玩家等待界面。1秒过后进入游戏主界面。首先程序界面初始化,然后intini(void);intgame(void);intshow(void);然后获得窗口句柄HWNDhWnd=getHWnd();设置主页面的宽和高initgraph(384,512);在Windows中,句柄是一个系统内部数据结构的引用。例如当你操作一个窗口,或说是一个Delphi窗体时,系统会给你一个该窗口的句柄,系统会通知你:你正在操作142号窗口,就此你的应用程序就能要求系统对142号窗口进行操作——移动窗口、改变窗口大小、把窗口最小化等等。实际上许多WindowsAPI函数把句柄作为它的第一个参数,如GDI〔图形设备接口〕句柄、菜单句柄、实例句柄、位图句柄等,不仅仅局限于窗口函数。换句话说,句柄是一种内部代码,通过它能引用受系统控制的特殊元素,如窗口、位图、图标、内存块、光标、字体、菜单等。SetWindowText(hWnd,TEXT("Flappybird——彭强));//使用API函数修改窗口名称最后把依赖包里的“加载〞照片调到屏幕显示PIMAGEloading=newimage();getimage(loading,"依赖包\\图片\\其他\\");3主页面设计主页面为游戏的入口,包括上下运功的小鸟、向左运动的地面、开始按钮及分数榜等主题。首先调用依赖包的“开始〞图片,getimage(main_interface,"依赖包\\图片\\其他\\");然后用用算法实现地面和小鸟的运动〔依次快速调用小鸟的三张不同照片,由于速度很快以及人的视觉停留,欺骗人的眼睛,误以为是小鸟在动,运动的地面也是如此〕。四川师范大学成都学院课程设计报告4动画是通过连续播放一系列静止的画面,当连续播放到达一定的速度时,我们用肉眼看到的就是动画了。它的根本原理与电影,电视一样,都是利用视觉原理。医学已经证明,人的眼睛具有“视觉暂留〞特性,就是人的眼睛看到一幅画面或一个物体后,在1/24秒内不会消失,利用这一视觉变化效果。因此电影采用了每秒24幅画的速度拍摄播放,电视采用了每秒25幅〔PAL制〕或30幅〔NSTC制〕画面的速度拍摄播放,如果以每秒低于24幅画面的速度拍摄播放,就会出现停顿现象。帧频:即每秒播放的帧数。帧频的大小直接影响到动画的快慢。帧频的单位是“帧/秒〞,即“fps〞,,实际看到的相当于24帧,刚好到达了动画的一般要求。算法如下: a-=2; if(a<=0) a=384; putimage(0,0,main_interface); putimage(a,448,ground); putimage((a-384),448,ground); b=a%128; if(b>=0&&b<32) putimage_withalpha(NULL,bird_m,175,220); if(b>=32&&b<64) putimage_withalpha(NULL,bird_u,175,216); if(b>=64&&b<96) putimage_withalpha(NULL,bird_m,175,220); if(b>=96&&b<=128) putimage_withalpha(NULL,bird_d,175,224);如果喜爱的话还可以在屏幕上打印自己的名字,如xyprintf(120,480,"彭强制作四川师范大学成都学院");其中120,480为界面坐标。四川师范大学成都学院课程设计报告54游戏界面设计游戏界面为该游戏的设计难点,包括动画、碰撞检测等等。分为游戏前界面、游戏中界面、以及结束界面。,但没有开始按钮,在界面右边多了2根管道,程序现在就检测玩家是否在游戏界面内点击了鼠标,如果是,那么就进入了游戏中界面。if((shijian-b)>1&&keystate(VK_LBUTTON)) { v=-180; b=shijian; } 此时玩家已经真正进入游戏,随着玩家点击鼠标的频率小鸟高度不断发生变化,让小鸟不至于撞到柱子上和调到地上。,让人误以为是小鸟在向右运动。这里用到随机函数zhuzi[c].h=(random(200))+200;检测用户鼠标算法:if((shijian-b)>1&&keystate(VK_LBUTTON)) { v=-180; b=shijian; } 柱子移动的算法:for(c=0;c<3;c++) { zhuzi[c].x-=2; if(zhuzi[c].x<=-70) zhuzi[c].x=650;四川师范大学成都学院课程设计报告