欢迎来到天天文库
浏览记录
ID:11688659
大小:273.50 KB
页数:5页
时间:2018-07-13
《mfc课程设计报告-贪吃蛇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、MFC课程设计报告MFC实现贪食蛇小游戏1.需求分析,系统功能贪吃蛇游戏需求分析贪吃蛇游戏作为一款经典小游戏,版本多样,娱乐性也很高,适合在闲暇时放松心神。并且可在多个平台上实现,程序简单易懂,非常适合MFC初学者学习制作。贪吃蛇游戏功能介绍一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。并且可以在游戏开始前自由选择游戏难度,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度会逐步增加。2.分工情况为在设计过程中实
2、现小组成员能力最大化,进行了以下分工:1、张施展:负责前期系统需求分析,系统结构设计,图标设计,界面美化调整工作,以及课程设计报告的撰写。2、张清扬:负责主要程序的编写工作,菜单的设计及代码编写工作。3、资料收集,程序调试共同进行。3.程序及系统结构设计贪吃蛇程序设计思路1、方案讨论贪吃蛇游戏作为一款经典的休闲类小游戏,深受同学喜爱,因此我们将贪吃蛇作为此次MFC课程设计题目。在最初的方案中,我们倾向于单文档(SDI)的形式设计,但最初尝试都因缺少一些文件等情况而失败。考虑到windows中自带小游戏大多采用对话框形式,为能更好的与同学们的使用习惯相一致,最
3、终决定使用对话框(Dialogue)的形式。2、数据结构在数据结构的选取,我们选择了链表,链表具有用多少空间就开多少空间的优点,使程序执行更稳定,高效。游戏控制模块框开始游戏暂停游戏退出游戏继续游戏游戏控制模块函数成员voidInitSnake()设置初始时蛇和果子的位置,及蛇头和一节蛇身的运动voidMoveSnake()控制蛇的运动状态voidAddSnake()蛇获得食物,长度增加voidDrawSnake()确定以及画出蛇身,蛇头大小VoidUnDrawSnake()蛇每向前运动一节需要重绘蛇及除去蛇的运动轨迹voidDrawFood()随机在指定区
4、域出现果子intGameOver()当蛇撞到墙壁或自己游戏结束InitSnake()DrawSnake()设置自动移动定时器和增加食物定时器游戏开始CSnakeDlg::OnPaint()DrawFood()桌面初始化初始化蛇头和蛇移动方向随机初始化一个食物到桌面SetTimer()CTable::AddFood()蛇移动蛇吃食?蛇增长继续?蛇死亡?桌面上随机生成食物MoveSnake()AddSnake()退出程序是是否否OnGameStart()GameOver()TB_STATE_SBLOCK贪吃蛇程序整体间调用关系4.软件测试报告游戏初始界面菜单栏记
5、分牌操作说明运动区域游戏运行界面游戏结束界面出现的问题1、问题:蛇运动区域与边框不匹配,造成蛇运动出边框或未到达边框而游戏结束。原因:相关数据不匹配。解决:重新对程序中的矩形框绘制函数数据进行修改,并修改蛇运动边界的判断条件。2、问题:食物出现在边框外,造成游戏无法进行。原因:控制事物出现的随机函数出现问题,随机坐标超出蛇运动区域。解决:重新计算边界条件,修改随机函数rand()%x中的x值。3、问题:记分牌有时会出现记分错误。原因:尚不明确。参考书籍:1)C++程序设计实践教程第2版吴乃陵李海文高等教育出版社2)深入浅出MFC第2版候俊杰华中科技大学出版社
6、3)VisualC++从入门到实践葛亮清华大学出版社
此文档下载收益归作者所有