VC++实现贪吃蛇的实验报告.docxVIP

  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文档。上传文档
查看更多
题目:利用 VC++实现贪吃蛇小游戏 1、题目:利用 VC++实现贪吃蛇小游戏 利用 VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内, 在围墙内会随机出现一个食物,通过键盘上的 W S A D 四个键控制它向上,下, 左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节, 得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或 者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游 戏,对游戏进行暂停或者退出。 2、编程要点(或基本思路、算法分析与说明): 本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完 成了贪吃蛇的食物产生,获取食物,蛇的移动等功能。另一个模块是利用 MFC 完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏 的显示。 1.贪吃蛇游戏算法设计包括: 1果实出现的设计思路: 采用随机数生成果实出现坐标 判断当前生成的果实是否在贪吃蛇身体范围内。 如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给 调用对象。 2贪吃蛇更新的算法设计 接收玩家按下的方向键消息,并保存到方向变量中。 定义一个时间定时器,用来控制蛇运动的速度。 当每次时间间隔到达时,则根据方向变量来更新贪吃蛇 curr(即贪 吃蛇身体)向量。 判断 curr 向量的第一个元素中的坐标数据是否碰到边界或者蛇身, 如果有,则游戏结束。否则,进行下一步。 判断 curr 向量的第一个元素中的坐标数据是否与当前果实重合,如 果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇 curr 向量添加一个元素,并 重新生成一个果实。 吃到食物后,得分会同步增加。 2.利用 MFC 完成贪吃蛇的可视化显示: 首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏 里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的 消息控制蛇的运动。在函数 DrawSnake(CDC *pDC,Snake snake),和 DrawFood(CDC *pDC,SnakeFood f)完成对蛇和食物的重绘,从而显示出蛇的运 动和对食物的获取。在 OnPaint()函数中完成得分和游戏操作提示的显示。 本次游戏设计的主要功能函数如下: 根据键盘控制蛇 根据键盘控制蛇移动方向 载入游戏并初始化 移动蛇(初始化向右运动) OnGameStart()(游戏开始函数), OnGamePauseStart()(游戏暂停函数) OnGameExit()(游戏退出函数),OnPaint()(游戏界面的显示函数), AddSnake(Snake *snake)(增加蛇身长度函数),DrawFood(CDC *pDC, SnakeFood f)(画食物函数),DrawSnake(CDC *pDC,Snake snake)(画蛇函数), MoveSnake(Snake *snake)(蛇的移动函数),InitSnake(Snake *snake)(初始化 蛇函数),UnDrawSnake(Snake snake)(更新蛇函数),GameOver()(游戏结束函数) 三、实现过程: (1) 流程图 否 判断游戏是 否开始 是 定时器启动 并记录得分游 并记录得分 游戏结束 否 判断蛇是否吃 到食物 是 随机生成下一个食物,  否 判断蛇头坐标和自 身或者墙是否重合 是 (2) 主要功能程序代码: typedef struct SnakeNode { int x; int y; }SnakeNode; typedef struct Snake {  //定义蛇结点 //蛇每个节点的横纵坐标 //定义蛇的身体 SnakeNode data[100]; //用数组来表示蛇身体的每一节 int curr;  //移动指向蛇的每一节并统计蛇的 长度 }Snake; typedef struct food { int x; int y; }SnakeFood; Snake snake; SnakeFood food; int x, y; int direct; int nGameState; int score;  //定义食物结构体 //食物的横坐标 //食物的纵坐标 //定义横纵坐标 //定义方向变量 //定义游戏的状态 //定义分数变量 int speed; int d; //定义速度变量 //该变量用于控制蛇身不能后 退 void InitSnake(Snake *snake); void MoveSnake(Snake *snake); void AddSnake(Snake *snake); void DrawSnake(CDC *pDC , Snake snake); voi

文档评论(0)

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

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

1亿VIP精品文档

相关文档