vc++贪吃蛇实习报告

vc++贪吃蛇实习报告

ID:38984242

大小:160.00 KB

页数:11页

时间:2019-06-23

vc++贪吃蛇实习报告_第1页
vc++贪吃蛇实习报告_第2页
vc++贪吃蛇实习报告_第3页
vc++贪吃蛇实习报告_第4页
vc++贪吃蛇实习报告_第5页
资源描述:

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

1、贪吃蛇程序程序设计报告【1】游戏介绍产生一个固定大小有边界的游戏区域,蛇从区域的中心开始,由玩家通过键盘控制蛇的运动方向,用蛇头去吃随机分布在游戏区域内的食物;蛇的运动限制在游戏区域内,游戏区域有边界,所以蛇在区域内作循环运动;蛇的运动方向为直线运动,只走横和竖的方向,不走斜线;蛇身体的长度从4开始每吃掉一份食物就增加一个长度;食物的出现安照随机分布的原则,蛇吃掉一份后随即在游戏区域内放一份新的食物;每吃掉一份食物得分为1,游戏结束后统计全部的得分;游戏结束的条件为:在控制蛇的过程中蛇头碰到蛇的身体的任何部

2、位或者碰到四壁。【2】基本概念,要点分析蛇的活动区域是由若干个小方格组成的。当这些小方格呈现灰色时,便显示蛇身。设整个区域由由m×n个方格组成,最左角上的方格坐标为(0,0),蛇由若干个相邻的方格组成的,将这些方格的坐标依蛇头至蛇尾的次序存入到一个数组中便代表了蛇身。当蛇在游戏区域中游动一格时,所对应的数组操作应该是将新的位置坐标插入到数组头部,同时将数组中最后一个元素删除,这项工作可以用一个一般的数组来完成,但当进行插入操作时需要自己移动数组中的元素;也可以使用CArray来完成这些工作,CArray的成

3、员函数提供了需要的操作,这样做更简单一些。游戏使用四个方向键来控制它的前进方向,在OnKeyDown消息处理函数中,根据不同的方向键设置成员变量m_nDirect的值。当在菜单中选择开始时,启动了定时器,游戏开始,在定时器消息处理函数中,根据m_nDirect的值判断出蛇的下个位置,如果没有超出边界或碰到自身,则它可以移到新的位置。如果吃到了食物,则在CArray中只插入而不删除最后一个元素,蛇身长度增加。另外值得注意的是,当蛇移动一格时,只有蛇头和蛇身的位置需要重绘,为此专门编写了成员函数ReDispla

4、y来刷新一个小格。【3】程序概要设计程序流程图如下:游戏载入内存并初始化界面判断游戏是否开始单击按钮开始游戏没有开始游戏,就返回初始界面贪吃蛇开始移动(初始方向向左)根据键盘消息判断蛇头的运动方向根据蛇头的坐标和食物的坐标判断蛇是否已经得到食物如果已经得到食物,则蛇的身体加长,积分器加一如果没有得到食物,则蛇的身体不变,积分器不变根据蛇头的坐标、蛇身体的坐标和墙壁的坐标判断蛇是否已经撞墙或者自己咬到自己如果没有撞墙并且没有自己咬到自己则程序继续进行如果已经撞墙或者自己咬到自己则程序终止贪吃蛇程序结束积分器开

5、始计分【4】详细设计过程:(1)新建工程Snake,在MFC的向导第一步选择SingleDocument,按Finishi结束。(2)选择ResourceView窗口,打开菜单编辑器,在顶层菜单上添加一个名为“游戏”的弹出式菜单,该菜单下再添加一个名为“开始”的子菜单,其ID为ID_GAME_START,如下图所示。(3)在ClassWizard中为刚才编辑好的菜单添加消息处理函数,打开ClassWizard,选中MessageMaps页。在ClassName中选择CSnakeView,在ObjectID中

6、选择ID_Game_START,在Messages中选择COMMAND,添加消息处理函数。(4)在ClassWizard中添加键盘消息处理函数。打开ClassWizard,选中MessageMaps页。在ClassName中选择CSnakeView,在ObjectID中选择CSnakeView,在Messages中选择WM_KeyDown,添加消息处理函数。(5)在ClassWizard中添加定时器消息处理函数。打开ClassWizard,选中MessageMaps页。在ClassName中选择CSnake

7、View,在ObjectID中选择CSnakeView,在Messages中选择WM_Timer,添加消息处理函数。(6)编辑生成代码,完成程序。【5】利用MFC类向导添加代码步骤如下:(1)选择ClassView窗口,双击CSnakeView类,添加如下成员变量。并添加头文件:#includeclassCSnakeView:publicCView{private:voidReDispilay(CPointpPoint);voidIniAim();voidIniGame();intm

8、_nLeft,m_nTop,m_nWidth,m_nHeight,m_nSize;//起始坐标,宽高(格数0),每格大小intm_nDirect;//当前方向CPointm_pAim;//当前坐标CArraym_aBody;//蛇身intm_nGameStatus;//游戏状态:0-未开始,1-开始intm_nCount;//吃掉目标数intm_nTime,m_nTime1;//用掉

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

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

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