可视化大作业.docx

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可视化大作业

1.概述及课设要求1.1基于MFC的贪吃蛇游戏设计与实现1.游戏界面设计2.食物的初始化3.游戏开始以及具体实现1.2概述此次课程设计我利用MFC编写了一个贪吃蛇游戏,游戏拥有结束时计分,开始,暂停,继续,退出,重新开始等功能,并且随着贪吃蛇的长度的增加,刷新的速度(移动的速度)也会变快.2.简单的操作及功能说明运行程序,游戏界面打开。点击“游戏-游戏开始”,出现围墙界面,一条蛇在密闭的白色矩形内,在围墙内随机出现一个食物,游戏开始。 通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。点击“游戏-游戏暂停”,暂停游戏。点击“游戏-游戏继续”,继续游戏。点击“游戏-游戏退出”,退出游戏。点击“游戏-重新开始”,重新开始。游戏会根据蛇身的长度自动调节难易程度。3.MFC具体设计过程及相应模块的功能3.1创建工程打开VisualC++新建一个MFC AppWizard单文档工程,取名snake3.2添加消息,成员函数,控件.首先在已有工程下的“ClassView”中右键CView类添加以下Windows信息1 WM_KEYDOWN2 WM_RBUTTONDOWN3 WM_TIMER右键CView类选择“ADD Virtual Funciton”选OnInitialUpdate()这里的OnInitialUpdate()是对视图的初始化.后再在csnakeview类中添加一个成员函数oninit()用来对贪吃蛇的外观进行初始化.“ResourceView”进行控件的具体设计,这里我们在Menu文件夹中把“IDR_MAINFRAME”中默认的控件全部删除,后自己添加控件并建立类向导,如下图所示;3.3定义全局变量并确定贪吃蛇的基本大小struct Snake{intx,y;intlen;int direct;}Snake[50];struct Food {int x;int y; intisfood;}Food;voidCSnakeView::OnInitialUpdate() {CView::OnInitialUpdate();Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;Food.isfood=1;// TODO: Add your specialized code here and/or call the base class}我们假设贪吃蛇开始有3个节点,食物则是认为1无0有.3.4响应键盘操作的消息voidCSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags) {// TODO: Add your message handler code here and/or call defaultswitch(nChar){caseVK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break; caseVK_DOWN:if(Snake[0].direct!=1)Snake[0].direct=2;break;caseVK_LEFT:if(Snake[0].direct!=4)Snake[0].direct=3;break; caseVK_RIGHT:if(Snake[0].direct!=3)Snake[0].direct=4;break; }CView::OnKeyDown(nChar, nRepCnt, nFlags);CView::OnKeyDown(nChar, nRepCnt, nFlags);}分别对上下左右的消息进行响应,snake[0].direct表示的时蛇头方向.而case VK_UP:if(Snake[0].direct!=2)Snake[0].direct=1;break; 意思就是当Snake[0].direct的方向此时并不等于“下”的时候,才能做出“上”的操作动作,同理其他的代码亦是相同的意思.3.5对OnRButtonDown()具体添加代码voidCSnakeView::OnRButtonDown(UINT nFlags, CPoint point) {// TODO: Add your message handler code here and/or call defaultCStringstr;str.Format(%d,%d,point.x,point.y);AfxMessageBox(str);CView::OnRButtonDown(nFlags,

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档