贪吃蛇游戏测试计划Word格式文档下载.docx

上传人:b****6 文档编号:8663176 上传时间:2023-05-12 格式:DOCX 页数:28 大小:149.75KB
下载 相关 举报
贪吃蛇游戏测试计划Word格式文档下载.docx_第1页
第1页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第2页
第2页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第3页
第3页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第4页
第4页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第5页
第5页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第6页
第6页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第7页
第7页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第8页
第8页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第9页
第9页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第10页
第10页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第11页
第11页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第12页
第12页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第13页
第13页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第14页
第14页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第15页
第15页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第16页
第16页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第17页
第17页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第18页
第18页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第19页
第19页 / 共28页
贪吃蛇游戏测试计划Word格式文档下载.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

贪吃蛇游戏测试计划Word格式文档下载.docx

《贪吃蛇游戏测试计划Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《贪吃蛇游戏测试计划Word格式文档下载.docx(28页珍藏版)》请在冰点文库上搜索。

贪吃蛇游戏测试计划Word格式文档下载.docx

2.2实验要求

1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;

可以加以其他功能或修饰,使程序更加完善、合理;

2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;

3)说明书、流程图要清楚;

4)记录设计情况(备查,也为编写设计说明书作好准备);

2.3实验环境

Windows7操作系统,VS.NET2005开发环境。

三、设计方案

3.1程序功能

1)游戏选项:

主要实现游戏的开始、暂停、退出,分别可以使用快捷键F2、空格键、F4。

2)设置:

a)游戏难度等级设置:

初级、中级、高级三个难度等级,每个难度等级又实现了三级加速,主要包括一级加速、二级加速、三级加速;

b)蛇体颜色设置:

绿色、红色、蓝色、黑色四种颜色可以选择;

c)蛇体宽度设置:

初始大小、放大两倍、放大三倍三种选择;

d)食物颜色设置:

橙色、黄色、紫色三种颜色可以选择。

3)帮助:

游戏操作说明,可以使用快捷键F3打开,主要介绍游戏的操作方法、以及版本信息、制作时间。

3.2设计思想

1)贪吃蛇的游戏规则:

蛇头不能反向移动,若反向则保持原来的运动方向不变;

不能碰到场地四周和自身,若碰到到四周墙壁或者自身,则游戏结束;

当吃到食物后,应在随机生成一个新的坐标产生食物,并且食物不能再蛇身内生成;

选择相应的游戏难度等级,当分数累加到一定程度以后,速度增加,每个等级有分为三个加速阶段。

2)游戏场地的绘制:

将panel控件设计为游戏的背景,场地、贪吃蛇以及食物都是在panel控件中完成绘制。

3)蛇身和食物的绘制:

本实验主要使用Graphics类在panel控件中绘制游戏的场地以及贪吃蛇、食物,食物模块、蛇身各模块的绘制是在单元格中进行绘制的,这样蛇身移动和食物生成过程中不需要重新绘制背景;

根据蛇身模块宽度,可以改变蛇体的大小和场地坐标图方格的大小;

根据食物类和蛇类各自的颜色变量,再通过菜单来改变其相应的颜色。

4)游戏的动态刷新控制:

使用Timer组件来实现贪吃蛇的移动,通过设置该组件的Interval属性大小来控制移动的速度。

5)蛇身移动的实现:

蛇身的移动主要是用ArrList类来实现的,该类的主要功能是使用大小可以根据需要动态增加数组,即建立动态数组来存储蛇身,本实验主要使用ArrList类的Insert方法和RemoveAt方法实现蛇模块的增加、蛇体移动的清除移动尾部。

3.3设计总体流程图

程序结构图:

程序流程图

3.4、设计的具体实现

1)游戏界面设计:

主要是使用panel1控件设计为游戏的背景,添加菜单项目,积分显示Label2,用于聚焦的TextBox1控件,菜单控件meuStrip1控件和Timer1控件,如下图所示:

2)创建一个Snake类:

a)在Snake类中定义全局变量

//设置蛇体模块大小

publicstaticintSnakeBone=10;

//设置方向

publicstaticintDirect=0;

//设置蛇体各模块的位置

publicstaticPoint[]Place={newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1)};

//是否有食物,有食物为true

publicstaticboolhasFood=false;

//游戏是否结束,游戏结束为true

publicstaticboolisGame=false;

//场地的宽度、长度

publicstaticintField_with=0;

publicstaticintField_length=0;

//记录绘制贪吃蛇的控件

publicstaticControlcontrol;

//记录Time组件

publicstaticTimertimer;

//设置贪吃蛇身体颜色

publicstaticSolidBrushSolidSnake=newSolidBrush(Color.Green);

//设置背景颜色

publicstaticSolidBrushSolidBack=newSolidBrush(Color.Green);

//记录label控件

publicstaticLabellabel;

//实例化一个ArrayList数组

publicstaticArrayListList=newArrayList();

Graphicsg;

//实例化Graphics类

//实例化Food类

Foodfood=newFood();

b)定义贪吃蛇的起始位置和游戏场地初始化GamePlaceSet()函数:

主要实现蛇的初始位置,以及游戏场地的初始化。

publicvoidGamePlaceSet(Controlcon,intBone)代码具体实现见附录A的Snake类中

c)蛇的移动方法SnakeMove()函数:

主要实现蛇体的移动,每移动一次需要判定是否反向,如果反向则记录下来,原来移动方向不变,还需要判断是否游戏结束,如果没有结束则重新绘制蛇体,吃东西,绘制食物。

publicvoidSnakeMove(intN,Form1control1)代码具体实现见附录A的Snake类中

d)判断蛇是否反向方法EstimateMove()函数:

用于判断贪吃蛇的移动方向是否向相反的方向移动,如果方向移动则返回false。

publicboolEstimateMove(PointES)代码具体实现见附录A的Snake类中。

e)判断游戏是否结束GameEnd()函数:

主要实现判断蛇体是否和自身、四周墙壁是否相撞,如果相撞则游戏结束。

publicboolGameEnd(PointGE)代码具体实现见附录A的Snake类中。

f)吃东西Eatefood()函数:

主要实现贪吃蛇吃东西,没吃到一个食物,分数加5,当分数达到一定程度时候需要判断是否加速,这里主要实现蛇的三级加速,包括一级加速、二级加速、三级加速。

publicvoidEatefood(Form1control1)代码具体实现见附录A的Snake类中

3)创建一个Food类:

a)定义全局变量

//设置食物颜色

publicstaticSolidBrushSolidFood=newSolidBrush(Color.Orange);

//食物坐标的初始化

publicstaticPointFoodPoint=newPoint(-1,-1);

b)随机生成坐标方法RectPoint()函数:

用Random类随机生成随机的纵坐标和横坐标,用返回Point结构

publicPointRectPoint(Controlpon)代码具体实现见附录A的Food类中。

c)生成食物方法Buildfood()函数:

没有食物的时候需要生成食物,生成食物的位置不能和蛇体重叠,如果重叠则重新获取随机坐标。

publicvoidBuildfood(boolhasFood,Controlcon)代码具体实现见附录A的Food类中。

4)MainForm窗体功能实现

//用于设置贪吃蛇的速度

publicintspeed=350;

//用于游戏是否开始

publicstaticboolifStart=false;

//用于游戏是否暂停,游戏暂停为true

publicstaticboolpause=true;

//实例化Snake类

Snakesnake=newSnake();

Foodfood=newFood();

b)绘制游戏场景单元格的绘制:

主要实现panel1控件中单元格绘制。

publicvoidProtractTable(GraphicsG)代码具体实现见附录A的MainForm窗体的主要代码中。

c)在panel1控件里初始化游戏场地方法panel1_Paint()函数:

主要实现panel1控件中绘制蛇和食物,以及游戏的是否结束的判断。

privatevoidpanel1_Paint(objectsender,PaintEventArgse)代码具体实现见附录A的MainForm窗体的主要代码中。

d)游戏开始、暂停、退出实现:

选择开始,贪吃蛇在游戏场地运行;

暂停选项只在贪吃蛇移动可以使用,其他情况下处于无效状态;

退出选项只用当游戏处于非运行状态起作用,退出游戏并且添加了判断。

//开始

privatevoid开始F2ToolStripMenuItem_Click(objectsender,EventArgse)

//暂停

privatevoid暂停SpaceToolStripMenuItem_Click(objectsender,EventArgse)

//退出

privatevoid退出F4ToolStripMenuItem_Click(objectsender,EventArgse)

//控制游戏的开始、暂停、和退出

publicvoidNoviceControl(intn)

代码具体实现见附录A的MainForm窗体的主要代码中。

e)游戏等级实现:

主要分为初级、中级、高级三个级别,分别设置相应的刷新时间,并且限制只能在游戏结束运行和开始没有开始游戏时可以设置。

//初级

privatevoid初级ToolStripMenuItem_Click_1(objectsender,

EventArgse)

//中级

privatevoid中级ToolStripMenuItem_Click(objectsender,EventArgse)

//高级

privatevoid高级ToolStripMenuItem_Click(objectsender,EventArgse)

f)游戏键盘操作游戏键盘操作:

主要实现游戏的开始、暂停、退出,分别可以使用快捷键F2、空格键、F4,游戏操作说明用F4键打开;

贪吃蛇移动方向操作:

右移按→键或D键,左移按←键或A键,上移按↑键或W键,下移按↓键或S键。

//键盘操作设置

privatevoidForm1_KeyDown(objectsender,KeyEventArgse)代码具体实现见附录A的MainForm窗体的主要代码中。

g)蛇体颜色和食物颜色设置实现:

主要实现蛇的四种颜色设置和食物的三种颜色设置,并且限制只能在游戏结束运行和开始没有开始游戏时可以设置。

//蛇体颜色设置

privatevoid绿色ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid红色ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid蓝色ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid黑色ToolStripMenuItem_Click(objectsender,EventArgse)

//食物颜色设置

privatevoid橙色ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid黄色ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid紫色ToolStripMenuItem_Click(objectsender,EventArgse)

h)蛇体宽度放大实现:

主要实现蛇体宽度的大小蛇置,同时相应放大单元格的宽度,并且限制只能在游戏结束运行和开始没有开始游戏时可以设置。

privatevoid初始大小ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid放大两倍ToolStripMenuItem_Click(objectsender,EventArgse)

privatevoid放大三倍ToolStripMenuItem_Click(objectsender,EventArgse)

i)打开帮助:

主要是想打开游戏操作说明窗体,并且限制只能在游戏结束运行和开始没有开始游戏时可以设置。

privatevoid游戏操作说明F3ToolStripMenuItem_Click_1(objectsender,EventArgse)

j)timer1_Tick的触发事件:

主要实现在一定的时间间隔内调用SnakeMove()函数,实现蛇的动态移动。

privatevoidtimer1_Tick(objectsender,EventArgse)代码具体实现见附录A的MainForm窗体的主要代码中。

参考文献

【1】《C#高级编程(第3版)》清华大学出版社

【2】《VisualC#开发典型模块大全》人民邮电出版社出版社

附录

附录A:

主要源程序

1)创建一个Snake类的代码

classSnake

{//在snake类中第一全局变量

publicstaticintSnakeBone=10;

publicstaticPoint[]Place={newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1),newPoint(-1,-1)};

publicstaticboolhasFood=false;

//是否有食物,有食物为true

publicstaticintField_with=0;

//场地的宽度

publicstaticintField_length=0;

//场地的长度

publicstaticControlcontrol;

publicstaticTimertimer;

//记录Time组件

publicstaticSolidBrushSolidSnake=newSolidBrush(Color.Green);

publicstaticSolidBrushSolidBack=newSolidBrush(Color.Green);

publicstaticLabellabel;

publicstaticArrayListList=newArrayList();

//实例化一个ArrayList数组

//定义一个函数用于绘制贪吃蛇的起始位置,以及对游戏场地进行初始化设置

publicvoidGamePlaceSet(Controlcon,intBone)

{Field_with=con.Width;

//获取场地的宽度

Field_length=con.Height;

//获取场地的长度

SnakeBone=Bone;

//记录蛇体模块大小

control=con;

//记录背景控件

g=control.CreateGraphics();

//创建背景控件的Graphics类

SolidBack=newSolidBrush(con.BackColor);

//设置画刷颜色

for(inti=0;

i<

Place.Length;

i++)

{//设置蛇初始位置的横坐标

Place[i].X=(Place.Length-i-1)*SnakeBone;

//设置蛇初始位置的纵坐标//temp.Y

Place[i].Y=(Field_length/2)-SnakeBone;

g.FillRectangle(SolidSnake,Place[i].X+1,Place[i].Y+1,SnakeBone-1,SnakeBone-1);

//绘制蛇体

}

List=newArrayList(Place);

//记录每一个模块的位置

isGame=false;

//停止游戏

Direct=0;

//设置方向向右

//定义一个SnakeMove函数用于蛇体移动,根据蛇的位置,判断是否吃到食物,如果吃到食物,重新生成食物

publicvoidSnakeMove(intN,Form1control1)

{Pointtem_point=newPoint(-1,-1);

//定义坐标结构

switch(N)

{case0:

{tem_point.X=((Point)List[0]).X+SnakeBone;

//蛇头右移动

tem_point.Y=((Point)List[0]).Y;

break;

case1:

{tem_point.X=((Point)List[0]).X-SnakeBone;

//蛇头左移动

case2:

{tem_point.X=((Point)List[0]).X;

tem_point.Y=((Point)List[0]).Y-SnakeBone;

//蛇头上移动

case3:

tem_point.Y=((Point)List[0]).Y+SnakeBone;

//蛇头下移动

if(!

EstimateMove(tem_point))//如果没有向相反的方向移动

{Direct=N;

//改变贪吃蛇的方向

GameEnd(tem_point))//如果游戏没有结束

{ProtractSnake(tem_point);

//重新绘制蛇体

Eatefood(control1);

//吃食物

//绘制食物

g.FillRectangle(Food.SolidFood,Food.FoodPoint.X+1,Food.FoodPoint.Y+1,SnakeBone-1,SnakeBone-1);

//吃东西

publicvoidEatefood(Form1control1)

{intm,n;

//记录分数和速度

if(((Point)List[0])==Food.FoodPoint)//如果蛇头吃到了食物

{List.Add(List[List.Count-1]);

//在蛇的尾部添加蛇身

hasFood=false;

//没有食物

food.Buildfood(hasFood,control);

//生成食物

m=Convert.ToInt32(label.Text);

if(m==10)//积分为10时加速

{n=control1.speed-50;

timer.Interval=n;

label.Text=Convert.ToString(m+5);

//显示当前分数

g.DrawString("

一级加速中"

newFont("

宋体"

15,FontStyle.Bold),newSolidBrush(Color.Green),newPointF(180,30));

elseif(m==20)//积分为20时加速

{g.FillRectangle(Snake.SolidBack,0,0,control.Width,control.Height);

control1.ProtractTable(g);

二级加速中"

15,FontStyle.Bold),newSolidBrush(Color.Blue),newPointF(180,30));

n=control1.speed-100;

tim

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2