冀佳伟贪吃蛇游戏设计Word格式.docx
《冀佳伟贪吃蛇游戏设计Word格式.docx》由会员分享,可在线阅读,更多相关《冀佳伟贪吃蛇游戏设计Word格式.docx(14页珍藏版)》请在冰豆网上搜索。
新得分
原得分+20(100<
=400)
原得分+50(400<
=1000)
原得分+100(1000<
原得分)
(7)得分实时显示在屏幕顶部(游戏区域边框外的某个位置)
(8)蛇在移动的过程中,蛇头不能撞上蛇身,蛇头也不能撞上周围墙壁,若这两种情况任意一种情形发生,则认为蛇已死,在游戏区域内显示“GAMEOVER”信息,并在顶部显示所得分数,游戏结束;
(9)在游戏过程中,玩家可随时按“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()函数的初始化是:
voidfarinitgraph(intfar*gdriver,intfar*gmode,char*path);
其中第一个参数是图形驱动器;
第二个参数是模式变量;
第三个变量是图形驱动程序所在的目录里路径。
(3)drawfence(),周围墙壁函数
本游戏中的蛇运动的范围是一个矩形框围成的四面墙壁。
画出墙面,主要用三个函数:
1),setcolor(),作图颜色设置函数;
2),setlinestyle(),线性设置函数;
3),rectangle(),画矩形框函数;
在具体实现时,是通过循环来实现的。
(4)printscore(),得分显示函数
分数的显示是通过对一个变量的值以图形化的形式显示出来,同时采用某种颜色为背景来衬托成绩,义突出其的显示效果。
分数的显色主要涉及以下六个函数:
1).setfillstyle(),设置填充效果函数。
2).bar()画条形窗口函数
3).setcolor();
4).stetextstyle();
5).sprintf(),格式输出函数;
6).outtextxy();
(5)playgame(),游戏控制函数
游戏控制函数是贪吃蛇游戏的核心部分,由于控制蛇的移动和食物的出现好,以及得分的计算。
函数可分为一下的步骤来实现:
1)初始化蛇的相关信息;
2)初始化食物的相关信息;
3)输出初始化分数;
4)当玩家没有按“ESC”键时,一直重复以下各步;
5)当玩家不按任何键时,一直重复6—13各步骤;
6)在屏幕画出食物;
7)计算出蛇的每一节在屏幕中的位置;
8)根据蛇的移动方向,计算出下一步蛇头的坐标位置;
9)判断蛇头是不是撞上了自己的身体的任何一节,如果是,游戏结束;
10)判断蛇头是不是撞到饿了任何一面的墙壁了,如果是,游戏结束;
11)若(9)(10)都未发生,说明蛇活着,判断蛇是否吃到了食物,如果吃到了食物,则要先清除食物,并设置下一个食物的出现;
同时,还要将蛇的身体增长一节;
屏幕显示的分数还要增加。
12)将蛇在屏幕显示,然后游戏延迟一会儿,给玩家一点反应时间;
13)蛇在移动的过程中,蛇头不断前进,末尾一节不断清除,这样才能保证蛇在移动的过程中的正确性;
14)当玩家按下一个键时,接收该按键,并判断是不是“ESC”;
如果是,则退出游戏,如果不是则进行(15)步的判断;
15)判断当前按键的方向是否与蛇头的方向相反,如果相反,则不做处理,只要不是相反的,则就改变蛇的移动方向。
16)回到(14)步去执行,一直循环往复,直到游戏结束。
(6)gameover(),游戏结束函数
这一模块,是在蛇头碰到了自己的身体的任何一节,或者是撞到了墙壁时,游戏结束时,显示在屏幕上的。
同时,结束时,还要调用分数显示函数。
(7)closegraph(),关闭图形驱动函数
当游戏结束界面显示完成后,要正式退出图形模式。
退出图形模式的函数为closegraph()。
函数原型:
voidfarclosegraph(void)。
在关闭图形模式之前应该线让屏幕暂停一下,所以要调用getch()函数。
三、系统实现
注:
流程图的绘制使用的是:
MicrosoftOfficeVisio2010
1.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
测试游戏结束功能
当贪吃蛇撞到自己和墙壁时,游戏会结束,
并且显示“gameover”,
8
游戏退出功能
当玩家按下“ESC”按键时,游戏会退出。
2.测试结果
经测试,“贪吃蛇”游戏的功能和性能均符合要求!