




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
贪吃蛇游戏设计文档贪吃蛇游戏的设计文档目录一、需求分析- 2 -1功能需求- 2 -2非功能需求- 2 -二、系统设计- 2 -1.实际思路- 2 -2,结构设计- 3 -(1),main(),主函数;- 3 -(2),init() ,图形化驱动函数- 4 -(3),help(),帮助信息函数- 4 -(4),drawfence(),周围墙壁函数- 4 -(5),printscore(),得分显示函数- 5 -(6),playgame(),游戏控制函数- 5 -(7),gameover(),游戏结束函数- 6 -(8),closegraph(),关闭图形驱动函数- 7 -三、系统实现- 7 -1,help()函数流程图- 7 -2,drawfence()函数流程图- 8 -3,printscore()函数流程图- 8 -4,playgame()函数流程图- 9 -5,gameover(),游戏结束函数- 13 -四、系统测试- 13 -1,功能测试- 13 -2,性能测试- 14 -3,测试结果- 14 -一、需求分析1功能需求贪吃蛇游戏的游戏规则是:游戏开始时,在一个密闭的空间里,贪吃蛇可以通过方向键进行方向的变化。屏幕上随机的出现食物,贪吃蛇在运动的过程中蛇头可以吃掉出现的的食物。吃掉食物后,蛇的身体会增长一节。当蛇的身体碰到四周的墙壁或者是自己的身体时,游戏会结束!并且,在屏幕的上方有一个分数牌显示,游戏开始时分数为0,每当蛇吃掉一个食物,分数会增加10分。而在游戏的过程中,玩家可以按“ESC”按键随时退出游戏。2非功能需求(1)界面友好,图形界面,游戏开始前有游戏的简单使用说明,方便玩家使用;(2)具有较好的容错能力,玩家在游戏过程中,除了规定的按键外,其他按键均忽略,不予处理;(3)发布游戏时,将图形驱动加载到程序中,使系统具有良好的可扩展性和平台适应性,可在任何PC机上运行。二、系统设计1.实际思路(1),贪吃蛇游戏的设计,第一步想到的当然是画出贪吃蛇,从而可以想到定义一个“蛇”的结构体的类型,这个结构体中包括:蛇的坐标,蛇的长度,蛇运动的方向;蛇的生命。而蛇的运动可以通过两种结构来实现:数组和链表,我使用了简单但不简洁的数组来实现。蛇的运动方向可以通过选择结构来实现控制蛇的运动方向。 (2),蛇已经构造出来了,第二步要构造的当然是蛇要吃的食物了。和构造蛇一样,我们同样可以通过一个结构体来构造食物。这个食物的结构体中包括:食物的坐标和食物是否生成。而食物的出现又是随机的,所以我们可以通过调用随机生成函数来实现这一功能。(3),蛇和食物有了,就要设计蛇运动的区域了,我们可以同过调用图形化 的函数,运用循环来实现游戏墙壁的设计。(4),而游戏最重要的部分就是:怎样驱动蛇的运动?我们首先可通过!kbhit()函数,来接收是否有键盘输入蛇运动的方向。在没有键盘输入的情况下,蛇的运动就要通过将画蛇的数组不停地进行交换来实现的。蛇在吃完了食物之后身体的增加是通过增加数组的长度来实现的。(5)最后要实现的就是在玩游戏过程中的分数的增加。这也是运用了图形化函数来实现他的显示,同时通过一个分支结构来控制游戏的每个阶段的不同的分数的增加。2,结构设计“贪吃蛇”游戏的核心的部分是游戏的控制部分,也就是我们在玩游戏时,不断地通过改变蛇头的反向来吞噬食物的过程。并且,在游戏的过程中还要显示玩家的得分。为了实现这些功能,就需要各个小模块的功能支持。具体的各个功能模块如下:图形驱动;显示帮助信息;画周围的墙壁;显示分数;控制游戏;结束游戏;关闭游戏图形驱动。(1),main(),主函数;在mian()函数之前我们已经对要用到的各个数据进行了宏定义。包括:蛇的最大节数;方向键;循环变量;接收按键值的变量;分数;还有蛇的速度。而在main()函数中我们只需要调用几个要使用的自定义的函数即可。包括:图形驱动函数:init();显示帮助函数:help();开始的画面:drawfence();玩游戏函数playgame();图形结束函数:closegame()。(2),init() ,图形化驱动函数 由于贪吃蛇游戏采用的图形化界面。在屏幕作图之前吗,必须根据显示器适配器的种类将显示器设置成为某种图形模式,在未设置时,默认的屏幕为文本模式,此时,图形化函数均不能工作。所以要用到图形初始化函数initgraph()和清除图形屏幕函数cleardevice()。 其中,initgraph()函数的初始化是:void far initgraph(int far *gdriver,int far *gmode,char *path);其中第一个参数是图形驱动器;第二个参数是模式变量;第三个变量是图形驱动程序所在的目录里路径。(3),help(),帮助信息函数游戏开始之后,首先要显示玩贪吃蛇的相关帮助信息,包括:游戏名称;游戏的控制键;退出键;以及游戏的相关的介绍,然后按任意键开始游戏。 由于已经将界面初始化为图形模式,所以输出要用到图形文本的输出,而图形文本的显示主要涉及三个函数:1)作图颜色设置函数setcolor();函数原型是:void far setcolor(int color);参数color是颜色的代表值。2)字形设置函数settextstyle();函数原型是:void far settextstyle(int font,int direction,int charsize);其中参数font是用来设置输出文本的字形;direction用来设置文本的方向;charsize是用来设置文本的大小。3)文本显示函数outtextxy();函数的原型是:void far outtextxy(int x,int y,char far *textstring);参数x是文本的起始横坐标,y是文本的起始纵坐标;参数textstring是待输出字符串的首地址。 用这三个函数就可以在help()函数中输出有关的帮助信息。(4),drawfence(),周围墙壁函数 本游戏中的蛇运动的范围是一个矩形框围成的四面墙壁。画出墙面,主要用三个函数:1),setcolor(),作图颜色设置函数;2),setlinestyle(),线性设置函数;函数原型:void far setlinestyle(int linestyle,unsigned pattern,int thickenss);参数linestyle代表线型;参数pattern在定义线型时起作用,一般取值为0;thickness的取值只有两种:1(NORM_WIDTH)代表1点宽,3(THICK_WIDTH)代表3点宽。3),rectangle(),画矩形框函数;函数原型:void far rectangle(int left,int top,int right,int bottom);其中参数left和top分别是矩形的左上角的横纵坐标;参数right和bottom分别是矩形的右下角的横纵坐标。 在具体实现时,是通过循环来实现的。(5),printscore(),得分显示函数分数的显示是通过对一个变量的值以图形化的形式显示出来,同时采用某种颜色为背景来衬托成绩,义突出其的显示效果。分数的显色主要涉及以下六个函数:1),setfillstyle(),设置填充效果函数函数原型:void far setfillstyle(int pattern,int color),其中参数pattern为填充的模式,参数color为填充的颜色。2),bar()画条形窗口函数函数原型:void far bar bar(int left,int top,int right,int bottom) ;和函数retangle()函数类似。3),setcolor();4),stetextstyle();5),sprintf(),格式输出函数;函数原型:int sprint(char *str,char *format,variable-list);函数的主要功能将按格式化规定的内容写入的str指向的字符串中,返回值等于写入的字符个数。6),outtextxy();(6),playgame(),游戏控制函数游戏控制函数是贪吃蛇游戏的核心部分,由于控制蛇的移动和食物的出现好,以及得分的计算。函数可分为一下的步骤来实现:1) 初始化蛇的相关信息;2) 初始化食物的相关信息;3) 输出初始化分数;4) 当玩家没有按“ESC”键时,一直重复以下各步;5) 当玩家不按任何键时,一直重复613各步骤;6) 在屏幕画出食物;7) 计算出蛇的每一节在屏幕中的位置;8) 根据蛇的移动方向,计算出下一步蛇头的坐标位置;9) 判断蛇头是不是撞上了自己的身体的任何一节,如果是,游戏结束;10) 判断蛇头是不是撞到饿了任何一面的墙壁了,如果是,游戏结束;11) 若(9)(10)都未发生,说明蛇活着,判断蛇是否吃到了食物,如果吃到了食物,则要先清除食物,并设置下一个食物的出现;同时,还要将蛇的身体增长一节;屏幕显示的分数还要增加。12) 将蛇在屏幕显示,然后游戏延迟一会儿,给玩家一点反应时间;13) 蛇在移动的过程中,蛇头不断前进,末尾一节不断清除,这样才能保证蛇在移动的过程中的正确性;14) 当玩家按下一个键时,接收该按键,并判断是不是“ESC”;如果是,则退出游戏,如果不是则进行(15)步的判断;15) 判断当前按键的方向是否与蛇头的方向相反,如果相反,则不做处理,只要不是相反的,则就改变蛇的移动方向。16) 回到(14)步去执行,一直循环往复,直到游戏结束。(7),gameover(),游戏结束函数这一模块,是在蛇头碰到了自己的身体的任何一节,或者是撞到了墙壁时,游戏结束时,显示在屏幕上的。用到的函数与help()中的用的文本输出函数一样。同时,结束是,还要调用分数显示函数。(8),closegraph(),关闭图形驱动函数当游戏结束界面显示完成后,要正式退出图形模式。退出图形模式的函数为closegraph()。函数原型:void far closegraph(void)。在关闭图形模式之前应该线让屏幕暂停一下,所以要调用getch()函数。三、系统实现注:流程图的绘制使用的是:Microsoft Office Visio 20101,help()函数流程图2,drawfence()函数流程图3,printscore()函数流程图4,playgame()函数流程图(1),贪吃蛇游戏的控制函数执行的流程图(2),playgame()函数的判断并画出食物的程序片段(3),playgame()函数的计算蛇的每一节的位置的程序片段(4),playgame()函数的计算出蛇头的位置程序片段(5),playgame()函数的判断是否蛇头撞到自身及蛇头撞到墙壁的程序片段(6),playgame()函数的判断蛇是否吃到食物的程序片段(7),playgame()函数的画出蛇的每一节的程序片段(8),playgame()函数的清除蛇的最后一节的程序片段5,gameover(),游戏结束函数四、系统测试该部分主要编写测试计划,记录测试的过程和结果,并对测试结果进行分析总结,优化系统。1,功能测试测试功能测试结果用例1测试开始游戏和帮助信息打开游戏主界面,画面显示游戏名称和相关的游戏帮助用例2测试蛇的运动 屏幕显示贪吃蛇在屏幕运动用例3测试控制蛇的方向键通过键盘上,按键的指挥,蛇能够正确地移动用例4测试食物是否显示游戏开始后,屏幕上显示食物出现用例5测试蛇头吃食物功能当蛇头碰到食物后,蛇的身体增长一节,食物消失,并在其它地方出现新的食物用例6测试分数显示功能在屏幕上方有分数的显示,并且每当贪吃蛇吃到食物时,分数会增加。用例7测试游戏结束功能当贪吃蛇撞
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省乐昌市7年级上册期中测试卷专项测试试卷(详解版)
- 考点解析北师大版8年级数学上册期末测试卷完整答案详解
- 考点攻克自考专业(行政管理)试卷及答案(名校卷)
- 职场交流基础知识培训总结
- 2026届吉林省辉煌联盟九校化学高二第一学期期中统考模拟试题含解析
- 交通拥堵问题及解决方案
- 幼儿园校舍出租合同
- 解析卷吉林省舒兰市七年级上册整式及其加减章节测试试卷(详解版)
- 2025年肿瘤科干细胞治疗实践技能评估试题答案及解析
- 氮化钛涂层工设备调试考核试卷及答案
- 致密油藏中CO2驱油机理研究
- 2025年高校教师岗前培训高等教育心理学知识竞赛考试题库50题及答案
- 电动港机装卸机械司机(高级技师)职业技能鉴定理论考试题(附答案)
- 无人机打药合同协议书
- 《肥胖症诊疗指南(2024年版)》解读课件
- 乡村振兴文化旅游发展规划
- 《油气输送管道完整性评估》课件
- 2025CSCO结直肠癌诊疗指南解读
- 电力隐患培训课件
- 2025报关单填制规范
- 装修巡检流程与注意事项
评论
0/150
提交评论