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

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

ID:49530930

大小:111.55 KB

页数:21页

时间:2020-03-02

VC++实现贪吃蛇的实验报告.doc_第1页
VC++实现贪吃蛇的实验报告.doc_第2页
VC++实现贪吃蛇的实验报告.doc_第3页
VC++实现贪吃蛇的实验报告.doc_第4页
VC++实现贪吃蛇的实验报告.doc_第5页
资源描述:

《VC++实现贪吃蛇的实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、题目:利用VC++实现贪吃蛇小游戏一、题目:利用VC++实现贪吃蛇小游戏利用VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内,在围墙内会随机出现一个食物,通过键盘上的WSAD四个键控制它向上,下,左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节,得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游戏,对游戏进行暂停或者退出。二、编程要点(或基本思路、算法分析与说明):本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完成了贪吃蛇的食物产生,获取食物

2、,蛇的移动等功能。另一个模块是利用MFC完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏的显示。1.贪吃蛇游戏算法设计包括:<1>果实出现的设计思路:(1)采用随机数生成果实出现坐标(2)判断当前生成的果实是否在贪吃蛇身体范围内。(3)如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给调用对象。<2>贪吃蛇更新的算法设计(1)接收玩家按下的方向键消息,并保存到方向变量中。(2)定义一个时间定时器,用来控制蛇运动的速度。(3)当每次时间间隔到达时,则根据方向变量来更新贪吃蛇curr(即贪吃蛇身体)向量。(4)判断curr向量的第一个元素中的坐标数据是

3、否碰到边界或者蛇身,如果有,则游戏结束。否则,进行下一步。(5)判断curr向量的第一个元素中的坐标数据是否与当前果实重合,如果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇curr向量添加一个元素,并重新生成一个果实。(6)吃到食物后,得分会同步增加。2.利用MFC完成贪吃蛇的可视化显示:首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的消息控制蛇的运动。在函数DrawSnake(CDC*pDC,Snakesnake),和DrawFood(CDC*pDC,SnakeFoodf)完成对蛇和食物的重绘,

4、从而显示出蛇的运动和对食物的获取。在OnPaint()函数中完成得分和游戏操作提示的显示。本次游戏设计的主要功能函数如下:OnGameStart()(游戏开始函数),OnGamePauseStart()(游戏暂停函数)OnGameExit()(游戏退出函数),OnPaint()(游戏界面的显示函数),AddSnake(Snake*snake)(增加蛇身长度函数),DrawFood(CDC*pDC,SnakeFoodf)(画食物函数),DrawSnake(CDC*pDC,Snakesnake)(画蛇函数),MoveSnake(Snake*snake)(蛇的移动函数),InitS

5、nake(Snake*snake)(初始化蛇函数),UnDrawSnake(Snakesnake)(更新蛇函数),GameOver()(游戏结束函数)三、实现过程:(1)流程图载入游戏并初始化否判断游戏是否开始是移动蛇(初始化向右运动)定时器启动根据键盘控制蛇移动方向判断蛇是否吃到食物否是否游戏结束判断蛇头坐标和自身或者墙是否重合随机生成下一个食物,并记录得分是(2)主要功能程序代码:typedefstructSnakeNode//定义蛇结点{intx;//蛇每个节点的横纵坐标inty;}SnakeNode;typedefstructSnake//定义蛇的身体{SnakeNo

6、dedata[100];//用数组来表示蛇身体的每一节intcurr;//移动指向蛇的每一节并统计蛇的长度}Snake;typedefstructfood//定义食物结构体{intx;//食物的横坐标inty;//食物的纵坐标}SnakeFood;Snakesnake;SnakeFoodfood;intx,y;//定义横纵坐标intdirect;//定义方向变量intnGameState;//定义游戏的状态intscore;//定义分数变量intspeed;//定义速度变量intd;//该变量用于控制蛇身不能后退voidInitSnake(Snake*snake);//初始化

7、蛇voidMoveSnake(Snake*snake);//蛇的移动voidAddSnake(Snake*snake);//增加蛇的身体长度voidDrawSnake(CDC*pDC,Snakesnake);//绘制蛇voidUnDrawSnake(Snakesnake);//绘制蛇的显示框voidDrawFood(CDC*pDC,SnakeFoodf);//绘制食物intGameOver();//游戏结束//完成与对话框的数据交互voidCSnakeDlg::DoDataExchange(CDataE

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。