


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、湖南工业大学课程设计任务书2012 2013 学年第2 学期计算机与通信学院(系、部)软件工程专业 1201班级课程名称:面向对象课程设计设计题目:贪吃蛇完成期限:自2013年6月24 日至2013年6月29 日共1周内 容 及 任 务一、设计的主要技术参数贪吃蛇游戏实现的功能有:控制蛇前后左右移动、控制蛇斜走、暂停游戏、继续游戏、背景音乐的播放、记录成绩二、设计任务游戏操作界面的生成;插入游戏界面图片;蛇的移动控制、播放音乐、暂停/停止暂停、结束游戏、游戏记录的生成;程序的调试与修改三、设计工作量一周进 度 安 排起止日期工作内容6月24号游戏操作界面的生成、背景图片的插入6月25号-26号
2、蛇的移动控制、播放音乐、暂停 /停止暂停6月27号-28号结束游戏、游戏记录的生成6月29号程序的调试与修改主要参考资料1. 谭浩强.C+面向对象程序设计M.北京:清华大学出版社,2006.2. 张海林,杜忠友,姜玉波.Visual C+ 简明教程M.北京:电子工业出版社,2007.3. 丁展,四维科技.Visual C+游戏开发技术与实例M.北京:人民邮电出版社,2005 .4. 姚领田.精通 MFC程序设计M.北京:人民邮电出版社.2000.指导教师(签字):系(教研室)主任(签字):HUNAN UNIVERSITY OF TECHNOLOGY面向对象程序设计课程设计设计说明书基于wind
3、ows界面应用程序贪吃蛇起止日期:2013年6月24_日至2013年6月28日学 生班学成姓 名级号绩汪骁将软件工程1201指导教师(签字)计算机与通信学院2013年6 月28 日第一章引言1.1关于题目 41.1.1 题目要求 4选题背景41.2关于编译软件 41.3关于兼容性4第二章概要设计2.1软件主要功能设计 52.1.1 程序结构52.1.2 程序流程 5第三章软件实现3.1变量函数及资源的声明 63.1.1 函数声明6变量声明63.1.3 资源73.2主要功能的实现 7游戏界面7初始化食物7开始游戏7游戏设置 8第四章解释4.1个人所分任务详解 第五章结果与讨论5 .1程序运行 1
4、54.1.1 部分函数与代码 155 .2实验总结16第一章引言1.1关于题目题目要求利用Microsoft Visual C+制作一个贪吃蛇的小游戏,要求:(1)应用MFC单文档制作(2)能够记录游戏成绩(3)可暂停/继续并在玩家不愿游戏时停止游戏(4)有背景音乐和音效选题背景贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们, 它的制作方法对于以前的我们而言 都是很神秘的。我们希望通过自己的所学知识把它剖析开来, 真真正正的了解它的本质和精 髓。虽然我们的编程能力不是很强,但是通过三人团队的合作 ,我们有信心,在这次学
5、习中 我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。1.2关于编译软件本程序采用Microsoft Visual C+6.0的英文版本进行编译。VisualC+6.0 是Microsoft公司推出的基于Windows操作系统的可视化C+编程工具,尽管Microsoft公司推出了 .NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C+规范,但仍有相当多的编程人员使用VisualC+6.0进行应用系统的开发。1.3关于兼容性本程序经过调试, 可以在XP系统下编译运行,也可以在Vista下运行,界面稍有不同, 但不影响运行结果。第二章概要设计2.1软件
6、主要功能设计程序结构根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,音乐音效的添加与控制, 游戏帮助提示等等。 具体的程序结构如下面的图所示:游戏控制模块游戏游戏帮助程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机出现食物;按下暂停按钮或Space键可以实现暂停功能,按下Z键游戏继续开始;按下帮助键可获得游戏帮助说明;可播放背景音乐等等。下图卫程序流程图Retur n true本次贪吃蛇基本流程与大体思想1 定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕 的初始位置,长度,以及蛇的行走方向。
7、食物类的定义包括出现的初始位置,以 及食物是否被吃掉的判断。2 用数组初始化长度为3的贪吃蛇,并且默认食物未出现3 在CView类上运用MFC提供的 Windows消息中 WM_TIME消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4 具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其 中还包括根据蛇的长度来进行游戏难度的改变。5 具体键盘游戏操作运用到Windows消息响应中的WM_KEYDQWNOn KeyDow n(来响应玩家的实际操作第三章软件实现3.1变量函数及资源的声明根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。函数声明void CYu
8、ShuoView: On Draw(CDC* pDC)/在OnDraw函数中绘制游戏背景、游戏文字以及控制蛇的样式颜色。IMPLEMENT_DYNCREATE(CSANKEView, CView)BEGIN_MESSAGE_MAP(CSANKEView, CView)AFX_MSG_MAP(CSANKEView)ON_WM_KEYDOWN()ON_WM_RBUTTONDOWN()ON_WM_TIMER()ON_WM_CANCELMODE()ON_COMMAND(ID_START, On Start)ON_COMMAND(ID_PAUSE, On Pause)ON_COMMAND(ID_CONT
9、INUE, OnContin ue)ON_COMMAND(ID_EXIT, On Exit)AFX_MSG_MAP/ Stan dard prin ti ng comma ndsON_COMMAND(ID_FILE_PRINT, CView:O nFilePri nt)ON_COMMAND(ID_FILE_PRINT_DIRECT, CView:O nFilePri nt)ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView:O nFilePri ntPreview)END_MESSAGE_MAP()变量声明定义点数组作为蛇的身体CArray<CPoi nt,C
10、Poi nt> m_ysBody;/资源1、对话框2、位图IDB_YS_BITMAP/游戏背景图3、菜单/工具栏4、头文件mmsystem.h/播放音乐的相应文件#i nclude "stdafx.h"#i nclude "SANKE.h"#i nclude "SANKEDoc.h"#i nclude "SANKEView.h"#ifdef _DEBUG#define new DEBUG_NEW#un def THIS_FILEstatic char THIS_FILE = _FILE_;#en dif3.2
11、主要功能的实现游戏界面贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。初始化食物随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。开始游戏On Timer(UINT nIDEve nt)函开始游戏后的重点是如何用键盘来控制蛇的移动并传递到 数中去以及判断蛇是否死亡324游戏设置这里的游戏设置主要是指游戏音效音乐的播放控制。同时,我们也为这款游戏定制了一份游戏规则游戏规则如下:点击游戏-> 开始
12、菜单游戏开始;通过方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙 壁或者与自身相交,则该轮游戏结束;点击 游戏-> 暂停按钮,暂停游戏;点击游戏-> 游戏继续,继续游戏; 点击游戏-> 结束菜单退出游戏;单击帮助-> 查看游戏帮助。第四章解释4.1个人所分任务详解我在这次实验中的工作:贪吃蛇游戏功能设计。对on time ()添加代码,包括按键设计、撞界判断、蛇身相撞判断、行走方向判断、判断吃豆的条件(撞到就吃)、 如果食物被吃了就生成。1. 这段代码是给键盘上的A、S、D W以及方向键赋予蛇行进方向的命令,控制蛇的走向(“ 12345678”本别代表&qu
13、ot;上下左右”x+,y+进行移动,然后用选定画刷画出一个新节点的矩形作为头结点 ):void CSANKEView:O nKeyDow n( UINT nChar, UINT nRepC nt, UINT n Flags)/ TODO: Add your message han dler code here an d/or call default switch( nChar)case VK_UP:if(Snake0.direct!=2)Snake0.direct=1;break;case VK_DOWN:if(Snake0.direct!=1)Snake0.direct=2;break;c
14、ase VK_LEFT:if(S nake0.direct!=4)S nake0.direct=3;break;case VK_RIGHT:if(S nake0.direct!=3)S nake0.direct=4;break;case W:if(S nake0.direct!=6)S nake0.direct=5;break;case 'S':if(S nake0.direct!=5)S nake0.direct=6;break;case 'A':if(S nake0.direct!=8)S nake0.direct=7;break;case 'D
15、39;:if(S nake0.direct!=7)S nake0.direct=8;break;CView:O nKeyDow n(n Char, nRepC nt, nFlags);CView:O nKeyDow n(n Char, nRepC nt, nFlags);2. 这段代码是给蛇制定一个速度变化,当蛇“吃”到一定长度时,速度会加快void CSANKEView:O nTimer(UINT nIDEve nt)/ TODO: Add your message han dler code here an d/or call default CDC *pDC=GetDC();CStri
16、ng soure;if(Sn ake0.le n=1)SetTimer(1,390,NULL);if(Sn ake0.le n=2)SetTimer(1,370,NULL);if(Sn ake0.le n=3)SetTimer(1,320,NULL);if(Sn ake0.le n=8)SetTimer(1,200,NULL);if(Sn ake0.le n=12)SetTimer(1,100,NULL);/soure.Format(”得分:%d 分!",(S nake0.le n-1)*10);soure.Format(” 得分:%d 分!",(S nake0.le n-
17、3)*10);3. 这段代码是对蛇“撞界”的判断,给蛇规定一个行动的区域;还有规定了蛇 不能撞到自己的“身体”,否则游戏结束并显示得分:if(Sn ake0.x*20<=37|S nake0.y*20<=37|S nake0.x*20>=580|S nake0 .y*20>=580) / 撞界判断KillTimer(1);AfxMessageBox(soure);/ s=0;/蛇身相撞判断if(Sn ake0.le n>3)for(i nt sn=Sn ake0.le n-1;s n> 0;s n-)if(Sn ake0.x*20=S nakes n.x*2
18、0&&Sn ake0.y*20=S nakes n .y*20)KillTimer(l);AfxMessageBox(soure);/ s=0;/*由于判断蛇自己是否咬到了自己,根据蛇长sn,进行sn次for sn-1次循环并且和Snake0.x进行比较(之所以进行sn-1次那肯定是不包括蛇头而且蛇的 长度也必须大于3才会发生自己咬自己的情况)KillTimer(1);是停止计时器;和之前的 SetTime()对应而已AfxMessageBox(soure)就是输出一个原样输出内容*/相关运行图如下:自己咬到自己,游戏结束头撞墙,游戏结束pDC->SelectStockO
19、bject(WHITE_PEN);pDC->Recta ngle(S nakeS nakeO.le n-1.x*20,S nakeS nakeO.le n-1.y*20, (Sn akeS nake0.le n-1.x+1)*20,(S nakeS nake0.le n-1.y+1)*20);for(int i=Snake0.len-1;i>0;i-)Sn akei.x=S nakei-1.x;Sn akei.y=S nakei-1.y;进行次数为"长度-1"次的循环,这里是不包括蛇头的进行的平移,用数组赋值的 方法,把前一节点保存在后一个结点,然后头结点向前移
20、动。4. 这段代码是给蛇走向的判断,令蛇可以前后左右和斜着走:/行走方向判断if(Sn ake0.direct=1)Sn ake0.y-;if(Sn ake0.direct=2)Sn ake0.y+;if(Sn ake0.direct=3)Sn ake0.x-;if(Sn ake0.direct=4)Sn ake0.x+;if(Sn ake0.direct=5) Sn ake0.y-;Sn ake0.x+;if(Sn ake0.direct=6) Sn ake0.y+;Sn ake0.x-;if(Sn ake0.direct=7) Sn ake0.x-;Sn ake0.y-;if(Sn ake
21、0.direct=8) Sn ake0.x+;Sn ake0.y+;pDC->SelectStockObject(BLACK_PEN);相关运行图如下:zcr 口ZE向右向左J向下向上_k 口右斜向上或左斜向下走左斜向上或右斜向下走第五章结果与讨论5.1程序运行程序开始运行后会进入游戏界面,但是不会立即进行游戏,单击菜单的“开始”才会开始游戏。在游戏过程中,按下Space键就会暂停游戏,再按下Z键则会继续游戏。部分函数与代码在程序中定义一个蛇的类,结构如下:struct Sn akeint x,y;int len;int direct;Sn ake50;struct Foodint兀int y;int isfood;Food;在数据结构上,用数组存储蛇以及蛇的运动区域。在数组中,每个元素有四 个云感动方向,分别为 RIGHT,LEFT,UP,DOW在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药理学全套题库及答案
- 2025年上海市浦东模范中学中考数学一模试卷(含答案)
- 抗灾减灾课件
- 2025届广东省佛山市禅城区高三下学期“供题训练”物理试题(含答案)
- 2024-2025学年河南省洛阳市伊滨区科普版(2012)六年级下册期中考试英语试卷(含答案)
- 2025年超二代微通道板合作协议书
- 历年五一建模题目及答案
- 怀化化学题目及答案
- 抗击疫情安全培训课件
- 2025年阻燃ABS热塑性弹性体合作协议书
- 关于介绍足球的英语课件
- 风电发电机组电控系统知识-安全链部分课件
- PMBOK指南第6版中文版
- 第五章-针织服装设计与样板制作经典版课件
- 肿瘤的介入治疗课件最新版
- 基坑土石方开挖安全专项施工方案
- 中小学心理健康教育指导纲要考试试题及答案
- 社会统计学-全套课件
- 物流公司道路运输许可证申请资料范文
- 六年级上册英语试题Unit1 I go to school at 8:00. 阶段训练一-人教精通版-(无答案 )
- (完整版)湘教版地理必修一知识点总结
评论
0/150
提交评论