- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MFC课程设计报告
MFC实现贪食蛇小游戏
1.需求分析,系统功能
贪吃蛇游戏需求分析
贪吃蛇游戏作为一款经典小游戏,版本多样,娱乐性也很高,适合在闲暇时放松心神。并且可在多个平台上实现,程序简单易懂,非常适合MFC初学者学习制作。
贪吃蛇游戏功能介绍
一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个方向键控制蛇向上接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。并且可以在游戏开始前自由选择游戏难度,游戏过程中可暂停游戏,并有积分系统,且积分每满一定值,蛇的运行速度会逐步增加。
2. 分工情况
为在设计过程中实现小组成员能力最大化,进行了以下分工:
张施展:负责前期系统需求分析,系统结构设计,图标设计,界面美化调整工作,以及课程设计报告的撰写。
张清扬:负责主要程序的编写工作,菜单的设计及代码编写工作。
资料收集,程序调试共同进行。
3. 程序及系统结构设计
贪吃蛇程序设计思路
方案讨论
贪吃蛇游戏作为一款经典的休闲类小游戏,深受同学喜爱,因此我们将贪吃蛇作为此次MFC课程设计题目。在最初的方案中,我们倾向于单文档(SDI)的形式设计,但最初尝试都因缺少一些文件等情况而失败。考虑到windows中自带小游戏大多采用对话框形式,为能更好的与同学们的使用习惯相一致,最终决定使用对话框(Dialogue)的形式。
数据结构
在数据结构的选取,我们选择了链表,链表具有用多少空间就开多少空间的优点,使程序执行更稳定,高效。
游戏控制模块框
开始游戏
开始游戏
暂停游戏
退出游戏
继续游戏
游戏控制模块
函数成员
void InitSnake()
设置初始时蛇和果子的位置,及蛇头和一节蛇身的运动
voidMoveSnake()
控制蛇的运动状态
void AddSnake()
蛇获得食物,长度增加
void DrawSnake()
确定以及画出蛇身,蛇头大小
Void UnDrawSnake()
蛇每向前运动一节需要重绘蛇及除去蛇的运动轨迹
void DrawFood()
随机在指定区域出现果子
intGameOver()
当蛇撞到墙壁或自己游戏结束
InitSnake()DrawSnake
InitSnake()
DrawSnake()
设置自动移动定时器和增加食物定时器
游戏开始
CSnakeDlg::OnPaint()
DrawFood ()
桌面初始化
初始化蛇头和蛇移动方向
随机初始化一个食物到桌面
SetTimer()
CTable::AddFood()
蛇移动
蛇吃食?
蛇增长
继续?
蛇死亡?
桌面上随机生成食物
MoveSnake ()
AddSnake()
退出程序
是
是
否
否
OnGameStart()
GameOver()
TB_STATE_SBLOCK
4. 软件测试报告
游戏初始界面
菜单栏
记分牌
操作说明
运动区域
游戏运行界面游戏结束界面
出现的问题
问题:蛇运动区域与边框不匹配,造成蛇运动出边框或未到达边框而游戏结束。
原因:相关数据不匹配。
解决:重新对程序中的矩形框绘制函数数据进行修改,并修改蛇运动边界的判断条件。
问题:食物出现在边框外,造成游戏无法进行。
原因:控制事物出现的随机函数出现问题,随机坐标超出蛇运动区域。
解决:重新计算边界条件,修改随机函数rand()%x中的x值。
问题:记分牌有时会出现记分错误。
原因:尚不明确。
参考书籍:
1)C++程序设计实践教程第2版吴乃陵李海文高等教育出版社
2)深入浅出MFC第2版候俊杰华中科技大学出版社
3)Visual C++从入门到实践葛亮清华大学出版社
文档评论(0)