- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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,
您可能关注的文档
最近下载
- 2025款比亚迪宋PLUS EV豪华尊贵旗舰型_用户手册驾驶指南车主车辆说明书电子版.pdf VIP
- 第1课《初三,我来了》课件北师大版心理健康教育九年级全一册.ppt
- 2023全域用户经营白皮书:STAR模型,从用户运营到生意增长.doc VIP
- NBT 35042-2014 水力发电厂通信设计规范.pdf
- 《小学英语单元整体作业设计的实践研究》开题报告.docx VIP
- “三个聚焦”内容个人自查报告.docx VIP
- 2024年充电宝市场现状分析:充电宝全球市场销售额达到224亿元.docx
- 各种烟气焓温、密度、比热计算表.xls VIP
- 考试妇科试题.docx VIP
- 德国科技创新与产业趋势.pptx VIP
文档评论(0)