课程设计贪吃蛇文档格式.docx
- 文档编号:13272659
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:52
- 大小:139.78KB
课程设计贪吃蛇文档格式.docx
《课程设计贪吃蛇文档格式.docx》由会员分享,可在线阅读,更多相关《课程设计贪吃蛇文档格式.docx(52页珍藏版)》请在冰豆网上搜索。
虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。
因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。
可以说该游戏的优势在于它的简单易行,不论是手机点按哦,电脑,还是小游戏机,都能很快顺利的运行。
对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。
这样的小游戏刚好迎合了他们的需求。
3.
定义
需求:
用户解决问题或达到目标所需的条件或功能;
系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
而且其很强的交互性及简单易行性,可以让人在很短时间内熟悉它的游戏规则,不论用户文化水平如何,都会很轻松的学会使用它。
5.
开发人员
熊青青
二,总体设计
1.目标
在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。
这款小型的手机游戏,可以让我们随时随地都能享受游戏,。
让我们从繁重的日常生活中解脱出来。
游戏的主界面应该力求美观,爽心悦目,以提高玩家对游戏的兴趣。
游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。
2.
用户的特点
由于本程序简单易操作,交互性好,对用户没什么特别要求。
一般用户经过几分钟练系都可以熟悉本游戏的规则。
假定与约束
开发周期
14天
4.
游戏模块
1.
Java的一个贪吃蛇游戏软件,主要实现游戏的开始、暂停、退出等功能,分为:
游戏主界面模块、游戏控制模块两个模块。
游戏主界面模块:
主要包括游戏图形区域界面、游戏开始按钮、暂停按钮、退出按钮。
游戏控制模块:
主要完成游戏的开始、暂停、退出等功能。
对性能的规定
本游戏在设计方面本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,始终坚持清晰明了,在性能方面能够实现效率高,不易出错等优点。
游戏主界面应该力求美观,赏心悦目。
游戏控制模块应做到易懂、易操作,而且准确率高,不易出错。
模块划分:
5.1.
主控模块。
5.2.
动画音乐模块
5.3.
画主界面模块
5.4.
游戏过程模块
5.5.
游戏结束处理模块
5.6.
读取记录模块
5.7.
成绩排序模块
5.8.
写入文件模块
5.9.
排行榜模块
5.10.
退出
6.设计的目的
6.1
复习C++中学习过的基本知识
6.2
将学习的C++知识得以系统化
6.3
掌握C++中函数设计的方法和结构化设计的思想
6.4
掌握规范的程序设计思路
6.5
掌握规范的程序编码格式
7.要求描述
7.1
设计要求
(1)基本函数的实现
(2)基本函数模块的实现
7.2
版式的要求
(1)设计面板清晰,结构明确
(2)有相应的文字说明
(3)有相应的注释
7.3
报告要求
1)模块化程序设计
(2)必须上机调试和测试
(3)程序设计的框图,流程图
(4)原程序清单和执行结果
8.贪吃蛇功能描述
8.1
贪吃蛇的基本玩法:
即可以用上、下、左、右键游戏区蛇的运动方向,使之向着有食物的方向运动,并吞吃食物使身体增长,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。
3.2
调节蛇的运动速度:
即用户可以调节蛇的速度来选择不同的难度。
3.3
选择关卡功能:
即游戏分不同的难度级别,用户可以选择不同的难度级别进行游戏。
3.4
游戏帮组:
即用户可以查看游戏得分、查看英雄榜等。
三,详细设计
3.1初始化
为防止食物总是出现在一个位置上,要设置随机数发生器的种子数,产生真正的随机数。
由于还没有画出食物,并设置需要食物,并设置蛇活着。
初始时,蛇只有蛇头和1节蛇尾,设置这2节坐标。
设定蛇开始的爬行方向左右。
随机确定食物位置
由于蛇吃到食物的判断是蛇头的坐标和食物的坐标相等,所以要确保食物出现的位置在10的倍数位置上。
先用两个带随机函数的表达式产生一个位于围墙内的x、y坐标,然后用两个while循环将两个坐标值调整到10的倍数上,这样就可以让蛇吃到。
循环确定蛇身的新坐标
吃到物
key=ESC
蛇死
蛇撞墙
按键判蛇的位置
接受按键
key
除蛇尾,增节
延迟10秒
吃后处理
置蛇死标志
窗蛇身,蛇死
循环画蛇
结束
这里的难点是表示蛇的新位置并消除前一次的图形。
采用的方法是每次移动的时候从最后一节开始到第二节,将前一节的坐标值赋给后一节的坐标,移动后只要把最后一节用背景色擦出即可,因为新位置0到n-1节还是要出现在画面上的。
这里用一个for循环来确定蛇身的新坐标。
3.4
吃到食物后的处理
蛇吃到食物后,首先将食物擦除,即用背景色画出该食物,然后给蛇的节数加1,设置需要食物标志,是游戏成绩加10分,如果成绩达到50分的倍数,则给关数加1,并加快游戏速度。
3.5
有按键判断蛇的方向
这是一个内嵌的嵌套的条件选择结构,根据安东上下左右键来设定蛇的移动方向。
其中1=向右,2=向左,3=向上,4=向下。
判断是还考虑相反的方向键无效,比如蛇正在向上爬行,按下一键方向是无效的。
四,系统调试
调试与测试软件的目标就是发现并改正潜伏的错误。
一个程序,必须经过认真的调试和测试,才能尽量减少错误、保证程序满足功能、性能需求,达到最初的设计、使用要求,从而保证程序的开发质量。
详细设计完成后,就可以用C语言根据各个模块的算法来设计程序,每个模块都要设计成一个自定义函数。
几个模块可以放在一起构成一个原函数程序文件,也可以一个模块构成一个源程序文件。
原程序设计好后,输入到计算机中,并存储到磁盘上;
然后对每个源程序文件都进行了独立编译和调试(具体代码可以参看程序清单);
并针对不同的模块程序设计测试用例进行单元测试;
最后,将几个分别开发的模块组装在一起,形成一个完整的程序,进行集成测试,从而发现并改正了程序程序中存在的一些潜藏的错误,并使程序的容错能力大大增强。
算法说明:
蛇的活动区是由57×
33个小方格组成,当这些小方格呈现深灰色时,便表示蛇身。
蛇是由n个相邻的方格组成,将这些方格的坐标依蛇头到蛇尾的次序放入到一个数组中便代表了蛇身。
当蛇在活动区中游动一格时,所对应的的数组操作为,将新的位置坐标插入到数组的头部,同时将数组中最后一个元素删除。
游戏使用四个方向键和A/W/S/D来控制蛇的前进方向,在OnKeyDown()消息处理函数中,根据不同的方向键设置了成员变量m_nDirect的值。
当在菜单中选择开始时,启动定时器,游戏开始。
在定时器消息处理函数中,根据m_nDirect的值判断出蛇的下一个位置。
如果没有超出边界或碰到自身,则蛇可以移动到一个新位置。
如果吃到了食物,则在CArray()中只插入而不删除最后一个元素,蛇身长度增加,否则弹出游戏结束对话框,框内显示所用时间和最终得分。
菜单栏的项目以实用性为主,另外每个按钮都设置有快捷键,分别为:
F1-帮助;
F2-开始游戏;
F4-关闭窗口,退出游戏
4.1
蛇撞到墙
预期结果:
蛇运行时如果撞到墙壁,则游戏结束。
实际运效果:
超出左右墙壁后程序结束,但超出上面墙壁后仍然运行,如图6-9所示。
错误分析:
错误程序段在蛇运行中的条件判断语句中,其判断条件是:
if(snake.x[0]<
55||
snake.x[0]>
595),即少了上、下两个方向的判断。
修改:
在蛇的运行过程中添加两个逻辑表达式,判断蛇是否闯到上下的围墙。
代码:
if(
snake.x[0]<
595||
snake.y[0]<
snake.y[0]>
455)
修改后的程序运行结果与预期的结果一致。
4.2
蛇头闯到蛇身
预期的结果:
当蛇得头部与蛇身相撞时,游戏应当结束。
实际运行效果:
蛇头撞到蛇身时,程序并不终止。
在蛇的运行判断的程序出错,其代码如下
Fori=3;
i<
snake.node;
i++)
{
if(snake.x[i]=snake.x[0]&
&
snake.y[i]=snake.y[0])
{snake.life=0;
break;
}}
修改:
将循环体中的snake.life=0改为snake.life=1;
五,结果分析
5.1
游戏方面:
(1)点击开始:
程序运行后,会出来只有六节的蛇和一个灰色的食物。
主界面
游戏结束
七.结束语
贪吃蛇游戏的编程练习思考数据结构:
定义食物的坐标来控制它出现的位置,用一系列的函数时进行表示,比如用函数rectangle来画出矩形,用life变量的值表示蛇的生命,用direction变量的值表示蛇移动的方向等,还有用数组来存放蛇身各节的坐标,这些都让我们熟悉了对数组的操作,此外还熟悉了各种函数的应用。
贪吃蛇的设计有很多帮助,学习编写贪吃蛇的游戏对掌握C语言的知识有很大的帮助。
通过编程实践,还能拓展思路,让我们去寻找需要调用那些函数,怎样提高程序的质量等。
要写出好的程序,需要我们有扎实的基础,这样遇到一些基本算法的时候就会游刃有余了。
在编程时我们要有丰富的想象力,不要拘泥与固定的思维方式,遇到问题的时侯要多想几种
解决问题的方案。
丰富的想象力是建立在丰富的知识基础上,所以我们要通过多个途径来帮助自己建立较丰富的知识结构。
在编程是我碰倒了很多的困难,这就需要我们要多与别人交流。
在编程的过程中,我也发现有良好的编程风格是十分重要的,至少在时间效率上就体现了这一点。
养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致,这些都是提高我们编程能力的要点。
在进行课程设计的过程中我们也学到了许多别的东西。
首先,我们学会了合作,要以别人的眼光看看问题,也许这样得到的会比各自得到的都要多;
其次,我学会了请教,请教才能提高合作的效率;
最后,我学会了奋斗,我相信,通过四年的学习,我们一定能写出更精彩的程序,将来会描绘出更精彩的人生。
附件:
游戏截图及源代码
#include"
stdafx.h"
Snake.h"
MainFrm.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)
BEGIN_MESSAGE_M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 贪吃