《贪吃蛇.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《贪吃蛇

计算机实习报告 姓名: 韩大牛 班级: 学号: 小班序号: 指导老师: 题目:MFC贪吃蛇 邮箱: MFC贪吃蛇游戏实验报告 一.功能说明 1.1总体功能说明 游戏类型:休闲类、提高反应能力与灵活操作键盘能力。 游戏介绍:MFC编写的小游戏,通过操作键盘上的四个方向键来控制蛇身的移动,当蛇身碰到外围墙壁时或者碰到自己身体时游戏结束,每次蛇头吃一个小食物,蛇身会增加一个小圆圈,并且在左上角会显示蛇身每个部分的坐标。 游戏功能说明: (1)能够实现贪吃蛇自动向前移动: 根据时间间隔,每一次将贪吃蛇的每节身体分别向前移动一格。移动方向为贪吃蛇当前行走方向。 (2)贪吃蛇操作:游戏通过键盘的上下左右四个方向控制贪吃蛇当前行走方向,吃掉屏幕上出现的果实。每吃掉一个果实,蛇身增加一节。 (3)游戏规则: 在游戏中,贪吃蛇碰到墙壁和自己的身体时,宣告游戏结束。 (4)果实的出现: 在游戏中,果实的出现,采用随机方式.当前一个果实被吃掉时,屏幕上随机出现另一个果实.果实不与蛇身重合。 4、游戏功能板块: 主要游戏界面:体现在类CHungerSnakeView中(由窗口对象CView类继承而来,它是用户的主要操作界面 一个视图对象只关联一个文档对象;一个文档对象可以关联多个视图,每个视图对象以不同形式表示文档数据。函数对应用程序窗口的客户区进行绘图的所有代码都写在这个函数中 CPen笔,画线 CBrush刷子,填充 1 CFont字体,控制文字输出的字体 11CBitmap位图 CPalette调色板 CRgn区域,指定一块区域可以用于做特殊处理。 14.CFile文件。最重要的不外是Open(打开),Read(读入),Write( CString字符串。封装了C中的字符数组,非常实用。 CPoint点,就是(x,y)对 CRect矩形,就是(left,top,right,bot 1.2用户界面 游戏开始界面: 红框为限制游戏中贪吃蛇运动的“墙”,蛇身只能在红框内运动。红框外左上角2个纵向排列的绿色数字为游戏未开始时两节蛇身的初始坐标值。旁边的数字记录游戏开始运行的时间。 游戏进行界面: 按下四个方向键中的任意一个后,蛇身开始运动,界面内随机出现果实。玩家可通过对四个方向键的操作控制蛇头的前进方向。随着蛇身的运动,坐标不断变化。每吃到一个果实,蛇身增加一节,并出现其坐标,随机产生下一个果实。 游戏结束界面: 蛇头撞到墙壁或蛇身时,游戏结束。显示“Lost Game”。并自动退出程序。 1.3使用方法 通过操作键盘上的四个方向键来控制蛇身的移动,当蛇身碰到外围墙壁时或者碰到自己身体时游戏结束,每次蛇头吃一个小食物,蛇身会增加一个小圆圈,并且在左上角会显示蛇身每个部分的坐标。 二.程序设计说明 2.1 总体设计框架 1、程序框架说明: 2、程序说明: 程序启动后,载入游戏并初始化,同时定时器启动。按下四个方向键中的任意一个后,蛇身开始运动,界面内随机出现果实。根据键盘控制蛇的移动。判断是否吃到果实,如果没吃到果实,就继续随键盘控制而移动;如果吃到一个果实,蛇身增加一节,随机生成下一个果实,并继续随键盘控制而移动。判断蛇头坐标和自身或者墙坐标是否重合,如果不重合,就继续随键盘控制而移动;如果重合,游戏结束。 2.2 关键算法描述 算法1:游戏使用四个方向键来控制蛇的前进方向,在Onkeydown消息处理函数中,根据不同的方向键设置了成员变量m_nDirect的值。当程序运行时,启动了定时器,游戏开始。在定时器消息处理函数中,根据m_nDirect的值判断出蛇的下一个位置。如果没有超出边界或碰到自身,则蛇可以移动到新位置。如果吃到了食物,则在CArray中只插入而不删除最后一个元素,蛇身长度增加。 算法2:当蛇移动一格时,只有蛇头和蛇尾的位置需要重绘,为此专门编写了成员函数ReDisplay来刷新一个小格。 2.3 程序设计的难点和关键点 蛇身的游动: 蛇是由若干个相邻的圆圈组成的,将这些圆圈的坐标依蛇头至蛇尾的次序存入到一个数组中便代表了蛇身。当蛇在游戏区域中“游动”一步时,所对应的数组操作应该是,将新的位置坐标插入到数组头部,同时将数组中最后一个元素删除。使用CArray来完成这些工作,CArray的成员函数提供了需要的操作,而且比普通数组简单一些。 2.4 调试的方法 调试过程中会经常出现一些逻辑错误和语法错误,经过系统提示和仔细的检查后都得到了解决。 2.5 程序性能评价 运行的效果与设计相符。

文档评论(0)

haha85864 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档