基于mfc的贪吃蛇程序设计(课程设计报告)

上传人:博****1 文档编号:432603838 上传时间:2022-09-19 格式:DOC 页数:39 大小:594KB
返回 下载 相关 举报
基于mfc的贪吃蛇程序设计(课程设计报告)_第1页
第1页 / 共39页
基于mfc的贪吃蛇程序设计(课程设计报告)_第2页
第2页 / 共39页
基于mfc的贪吃蛇程序设计(课程设计报告)_第3页
第3页 / 共39页
基于mfc的贪吃蛇程序设计(课程设计报告)_第4页
第4页 / 共39页
基于mfc的贪吃蛇程序设计(课程设计报告)_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《基于mfc的贪吃蛇程序设计(课程设计报告)》由会员分享,可在线阅读,更多相关《基于mfc的贪吃蛇程序设计(课程设计报告)(39页珍藏版)》请在金锄头文库上搜索。

1、 西南交通大学本科毕业设计(论文) 第21页MFC应用程序设计课程设计报告题目: 学院: 专 业: 班 级: 姓名: 学 号: 指导教师: 评阅成绩:二0 年 月 日目录概述 31. 设计目的32. 功能描述33. 大体思想34. 程序框图45. 主要知识点56. 重要的MFC 57. 数据结构68. 主要函数79. 代码实现710. 运行界面1811. 总结1912. 参考文献20概述此次课程设计我利用MFC制作了一个贪吃蛇游戏,运行程序时窗口会自动最大化,游戏会根据贪吃蛇身体的长度自动增加难度,而且单机右键可以出现坐标。我还添加了bmp格式的图片作为游戏背景。1设计目的 通过实践进一步领会

2、程序设计的特点和应用,提高运用C+ 以及面向对象知识解决实际问题的能力,初步掌握MFC变成的基本功能。 通过实践加强对程序设计语言课程知识点的理解和掌握,培养对课程知识综合运用能力、实际分析问题能力及编程能力,养成良好的编程习惯。 通过实践掌握用C+ 编写面向对象的实用程序的设计方法,对面向对象方法和思想增加感性的认识;学会利用C+程序设计语言编写出一些短小、可靠的Windows实用程序,切实提高面向对象的程序设计能力,为后续的相关课程的学习打下基础。2功能描述 运行程序,窗口会自动最大化,出现bmp格式图片的背景。 点击“游戏-游戏开始”,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现

3、一个食物,游戏开始。 游戏开始后,界面右下角会出现游戏规则。 游戏开始后,界面右下角会同步游戏得分。 通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。 点击“游戏-游戏暂停”,暂停游戏。 点击“游戏-游戏继续”,继续游戏。 游戏会根据蛇身的长度自动调节难易程度。 点击“游戏-游戏退出”,退出游戏。 在界面中右键单击鼠标可以显示光标的当前坐标。 单击帮助-游戏规则查看游戏规则。3 大体思想 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断

4、。 用数组初始化长度为3的贪吃蛇,并且默认食物未出现 在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。 界面会自动最大化 而且单击右键可以出现坐标 添加了bmp格式的图片作为游戏背景。4程序框图4.1整体框架图显示文字,得分增加难度运行程序出现围墙出现蛇、食物出现图片背景开始游戏单击右键显

5、示坐标游戏控制模块退出游戏4.2游戏控制模块框架图开始游戏暂停游戏退出游戏继续游戏游戏控制模块5主要知识点 CView类中的消息响应 控件的消息响应 基于CView类内的具体游戏实现 数组 游戏图形的实现用CDC类实现 SDI界面窗口样式的设计 文本的显示6重要的MFC CWnd:窗口,它是大多数“看得见的东西”的父类(Windows里几乎所有看得见的东西都是一个窗口,大窗口里有许多小窗口),比如视图CView、框架窗口CFrameWnd、工具条CToolBar、对话框CDialog、按钮CButton,etc;一个例外是菜单(CMenu)不是从窗口派生的。该类很大,一开始也不必学,知道就行了

6、。 CDocument文档,负责内存数据与磁盘的交互。最重要的是OnOpenDocument(读入),OnSaveDocument(写盘),Serialize(读写) CView视图,负责内存数据与用户的交互。包括数据的显示、用户操作的响应(如菜单的选取、鼠标的响应)。最重要的是OnDraw(重画窗口),通常用CWnd:Invalidate()来启动它。另外,它通过消息映射表处理菜单、工具条、快捷键和其他用户消息。你自己的许多功能都要加在里面,你打交道最多的就是它。 CDC设备文本。无论是显示器还是打印机,都是画图给用户看。这图就抽象为CDC。CDC与其他GDI(图形设备接口)一起,完成文字和

7、图形、图像的显示工作。把CDC想象成一张纸,每个窗口都有一个CDC相联系,负责画窗口。CDC有个常用子类CClientDC(窗口客户区),画图通常通过CClientDC完成。 CDialog对话框 CWinApp应用程序类。似于C中的main函数,是程序执行的入口和管理者,负责程序建立、消灭,主窗口和文档模板的建立。最常用函数InitInstance():初始化。 CGdiObject及子类,用于向设备文本画图。它们都需要在使用前选进DC CPen笔,画线 CBrush刷子,填充 CFont字体,控制文字输出的字体 CBitmap位图 CPalette调色板 CRgn区域,指定一块区域可以用于

8、做特殊处理。 CFile文件。最重要的不外是Open(打开),Read(读入),Write CString字符串。封装了C中的字符数组,非常实用。 CPoint点,就是(x,y)CRect矩形,就是(left,top,right,bottom) 7数据结构7.1蛇的全局变量struct Snakeint x,y;int len;int direct;Snake50;7.2食物的全局变量struct Foodint x;int y;int isfood;Food;8主要函数 void CMFCexp8_4View:OnDraw(CDC* pDC)/显示背景图片 void CMFCexp8_4Vi

9、ew:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)/按照用户的按键来控制蛇的移动 void CMFCexp8_4View:OnRButtonDown(UINT nFlags, CPoint point)/用鼠标右键屏幕,就会马上显示当前位置的坐标信息 void CMFCexp8_4View:OnTimer(UINT nIDEvent)/根据蛇的长度来进行SetTimer()函数的定义,可以根据长度来进行游戏难度的设定。/撞界判断/蛇身相撞判断/抹掉蛇行走的痕迹/判断吃豆的条件,撞到就吃/如果食物被吃了 就生成 void CMFCexp8_4V

10、iew:oninit()/进行贪吃蛇外观的初始化 void CMFCexp8_4View:OnStart()/开始游戏 void CMFCexp8_4View:OnPause()/游戏暂停 void CMFCexp8_4View:OnContinue()/继续游戏 void CMFCexp8_4View:OnExit()/退出游戏 void CMFCexp8_4View:OnInitialUpdate()/初始化蛇的位置 void CMFCexp8_4View:OnDrawNew()/第二层白色正方形背景以及右下角的文字9代码实现9.1添加Windows信息在已有工程下的“ClassView”

11、中右键CView类添加以下Windows信息 WM_KEYDOWN WM_RBUTTONDOWN WM_TIMER右键CView类选择 “ADD Virtual Funciton”选OnInitialUpdate(),再者还要添加一个成员函数oninit()进行贪吃蛇外观的初始化9.2控件的设计 我们可以点击“工作空间”的“ResourceView”进行控件的具体设计,设计游戏的一些控件来控制“游戏开始” “游戏结束” 和“游戏暂停”。 右键其中的标题栏,点击属性,会得到一个菜单栏标题,我们建立“游戏”菜单栏标题。 点击并且在已有控件中的列表中点击属性,进行“菜单项目属性”的设置。分别建立的属

12、性“标明”与对应的ID有游戏开始IDM_START游戏暂停IDM_PAUSE游戏继续IDM_CONTINUE游戏退出IDM_EXIT 成功设置ID之后,分别单击右键各项属性进行消息响应处理函数的生成,具体方法操作例子如下:右键“游戏开始”点击“类向导建立”在Message Maps页面,在要进行消息响应的控件ID列表Object IDs中上选择对应的ID, 这里我们选择IDM_START,具体实现的环境是CView类,所以我们必须把“Class name”的默认“CMainFrame”改为“CView类”,并且在“Messages”类型设置中,用“COMMAND”设置为其为命令消息。其余各项也

13、按照同理进行设置。9.3具体实现游戏9.3.1在文件开头处分别定义蛇和食物 的全局变量/定义蛇的全局变量struct Snakeint x,y;int len;int direct;Snake50;/定义食物的全局变量struct Foodint x;int y;int isfood;Food;9.3.2初始化蛇的位置void CMFCexp8_4View:OnInitialUpdate() CView:OnInitialUpdate();Snake0.x=10;/初始化起点坐标Snake0.y=10;Snake1.x=11;Snake1.y=10;Snake2.x=12;Snake2.y=10;Snake0.direct=3;/初始化贪吃蛇起初有3个节点,长度为3Snake0.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号