游戏开发 设计说明书Word格式文档下载.docx

上传人:b****3 文档编号:16718031 上传时间:2022-11-25 格式:DOCX 页数:15 大小:142.42KB
下载 相关 举报
游戏开发 设计说明书Word格式文档下载.docx_第1页
第1页 / 共15页
游戏开发 设计说明书Word格式文档下载.docx_第2页
第2页 / 共15页
游戏开发 设计说明书Word格式文档下载.docx_第3页
第3页 / 共15页
游戏开发 设计说明书Word格式文档下载.docx_第4页
第4页 / 共15页
游戏开发 设计说明书Word格式文档下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

游戏开发 设计说明书Word格式文档下载.docx

《游戏开发 设计说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《游戏开发 设计说明书Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。

游戏开发 设计说明书Word格式文档下载.docx

2.系统概要说明5

3.功能说明5

4.系统各类的知识点说明5

5.主要算法设计6

三.游戏运行说明10

1.游戏运行流程图10

1.游戏开始11

2.游戏进行12

3.游戏结束12

四.课程设计总结13

一.课程设计主要内容

1.题目

2.需求分析

游戏操作需求:

1、可使用鼠标或↑、↓、→、←或W、X、A、D键进行操作;

2、Play按钮重新开始游戏;

3、Undo按钮取消本次操作,回到上一步。

2048游戏算法

1、游戏开始时随机的产生2个数值为2/4的方格,其中1个方格置于4个角中的一个位置,

另一个方格随机的置于其它位置,其余方格值为0。

2、每次移动鼠标或按方向键后,逐行计算移动后的方格值。

每行移动的算法是:

先将所有值为0的数移至行首。

能后从行尾开始逐一和前一个数比较,如果相等则合并这2个格子。

3、每合并一次格子,将其值累计到游戏总分中。

4、一次移动结束后,在所有值为0的方格中随机的分配一个2/4的值。

5、所有方格值不为0且上下、左右相邻的方格都不相等,则游戏结束。

6、2出现的概率为90%,4出现的概率为为10%。

3.设计环境

运行环境:

windowsxp,windows2003windows7

开发环境:

MicrosoftVisualStudio2010

编写语言:

c#

二.详细设计说明

1.

系统程序流程图

N

Y

2.系统概要说明

本程序是在VS2010环境下编写的Windows应用程序,函数中利用了画图函数绘制基本方块模型,并通过键盘或鼠标执行相应的操作。

在产生的方块中,调用随机方法,随机产生1~100中的任何一个数字,数字小于90,方块显示数字为2,否则显示为4,每一,通过这种方式,实现了游戏中其中不同模块的数字的随机产生。

3.功能说明

(1)实现可以显示2或者4两张数字的方块

(2)实现各个方块的上下左右移动

(3)实现方块间数字判断与相加

4.系统各类的知识点说明

1.主类

Main()方法

主函数调用主要功能的三个方法,实现程序运行。

2.Cube类(画单元格)

Cube类的功能定义了单个方块的构架。

此类中,定义了不同的数字显示所显示的不同的单元格方块,使方块相加变化明显。

此类中定义了属性currValue//当前得分

以及方法Cube_Paint()方块的绘制,此方法针对可能出现的12中数字显示,运用Graphics类,画出不同的显示的方块

3.forms类(方块的控制)

此类主要实现对方块的控制,实现每种不同操作的实现

此类创建了四个属性

privateCube[]cubes=newCube[16];

//创建个个cubes类的数组,实现游戏方块的创建

enumMoveDict{Up,Down,Left,Right};

//定义枚举类型,键盘控制方向,上下左右

privateintx1,y1;

//鼠标位置

privateintscore=0;

//房钱成绩

privateint[]prev=newint[17];

/./上一步方格值和积分

Form1()方法:

构造方法,实现方块的实例化创建

start()方法:

游戏的初始化,实现最开始两个方块的摆放。

SavePrevVaule()方法:

保存每上一步的方块值以及成绩,实现撤销一次的操作

LoadPrevValue()方法:

加载上一步值,当进行撤销操作时,调用该方法。

OneMove()方法:

实现移动一次的操作。

此方法调用MoveLine()进行累加,实现成绩的相加

MoveLine()方法:

移动一行的方法

getNextCube()方法:

取下一个方块

CanMove()方法:

通过方块是否能够移动,判断游戏是由结束

pictureBox1_MouseDown()方法:

获取鼠标移动的位置

getDirection()方法:

通过鼠标坐标判断方块的移动方向

Form1_KeyUp()方法:

接受键盘信息,判断方块移动方向

btnPlay_Click()方法:

“开始”按钮的单击事件,调用start()方法,开始游戏

btnUndo_Click()方法:

“撤销”按钮的单机事件,调用LoadPrevValue()方法,进行撤销操作

5.主要算法设计

1.方块值的随机数产生

System.Randomr=newRandom();

intn1=r.Next(1,100);

cubes[0].Value=(n1<

90?

2:

4);

通过Random类产生100以内的随机数,数字大于90,方块值为4;

小于90,方块值为2

2.游戏初始化两个随机方格位置的摆放

System.Randomr=newRandom();

intc1=r.Next(1,4);

intc2=c1;

do

c2=r.Next(1,16);

while(c2==c1);

for(inti=0;

i<

16;

i++)

cubes[i].Value=0;

intn1=r.Next(1,100);

intn2=r.Next(1,100);

switch(c1)

{

case1:

cubes[0].Value=(n1<

break;

case2:

cubes[3].Value=(n1<

case3:

cubes[12].Value=(n1<

case4:

cubes[15].Value=(n1<

}

cubes[c2-1].Value=(n2<

四个角随机摆放一个方格,其他位置随机摆放,位置重叠,再随机产生一个

3.保存上一步值的算法实现

privateint[]prev=newint[17];

//定义一个数组记录值

for(inti=0;

prev[i]=cubes[i].Value;

//数组前16个元素保存,16个方块的值

prev[16]=score;

//数组最后一个元素保存当前成绩值

4.方块移动一次的算法实现

每移动一次,要加载得分,并是先移动后方块的位置摆放以及方块数值的相加及显示

privateintMoveLine(Cubecube1,Cubecube2,Cubecube3,Cubecube4)

intscore=0;

if(cube1.Value==0&

&

cube2.Value==0&

cube3.Value==0&

cube4.Value==0)

return0;

Cube[]cubes={cube1,cube2,cube3,cube4};

ArrayListiCubes=newArrayList();

//判断最低行方块值是否为0,为0即不存在方块,去掉为0的方块

cubes.Length;

if(cubes[i].Value!

=0)

iCubes.Add(cubes[i].Value);

cubes.Length-iCubes.Count;

iCubes.Count;

cubes[i+cubes.Length-iCubes.Count].Value=(int)iCubes[i];

if(cubes[2].Value!

=0)//如果等于0,说明改行只有一个非0的数,则不需要移动和累加数了

if(cubes[3].Value==cubes[2].Value)//后一块与前一块方块比较,如果数字相同,则累加成绩

score+=2*cubes[3].Value;

cubes[3].Value=2*cubes[3].Value;

if(cubes[1].Value==cubes[0].Value)

score+=2*cubes[1].Value;

cubes[2].Value=2*cubes[1].Value;

cubes[1].Value=0;

cubes[0].Value=0;

else

cubes[2].Value=cubes[1].Value;

cubes[1].Value=cubes[0].Value;

;

if(cubes[2].Value==cubes[1].Value)

score+=2*cubes[2].Value;

cubes[2].Value=2*cubes[2].Value;

cubes[1].Value=2*cubes[1].Value;

returnscore;

5.获取下一个方块的算法实现

privatevoidgetNextCube()

//去除0之后的方块

if(cubes[i].Value==0)

iCubes.Add(i);

if(iCubes.Count>

0)

{//在所有为0的数上,随机增加一个数

cubes[(int)iCubes[r.Next(1,iCubes.Count)-1]].Value=(r.Next(1,100)<

if(CanMove()==false)

{//当不能移动,游戏结束!

MessageBox.Show("

GameOver!

"

);

6.判断游戏是否结束的算法实现

privateboolCanMove()

//判断左右是否能够移动,如果存在两个数相同,即方块可以移动累加,返回true,游戏未结束

if(cube1.Value==cube2.Value||cube2.Value==cube3.Value||cube3.Value==cube4.Value||

cube5.Value==cube6.Value||cube6.Value==cube7.Value||cube7.Value==cube8.Value||

cube9.Value==cube10.Value||cube10.Value==cube11.Value||cube11.Value==cube12.Value||

cube13.Value==cube14.Value||cube14.Value==cube15.Value||cube15.Value==cube16.Value

returntrue;

//同理。

判断上下能否移动

if(cube1.Value==cube5.Value||cube5.Value==cube9.Value||cube9.Value==cube13.Value||

cube2.Value==cube6.Value||cube6.Value==cube10.Value||cube10.Value==cube14.Value||

cube3.Value==cube7.Value||cube7.Value==cube11.Value||cube11.Value==cube15.Value||

cube4.Value==cube8.Value||cube8.Value==cube12.Value||cube12.Value==cube16.Value

returnfalse;

//全部不能移动,返回false,即游戏结束

三.游戏运行说明

1.游戏运行流程图

1.游戏开始

2.游戏进行

3.游戏结束

当方块不能移动时,游戏结束

四.课程设计总结

通过本次课程设计,对.netwindows应用程序有了更多的了解,不过我也发现我的好多不足之处,首先是自己编程粗心大意,经常出错,通过学习也有所改进;

再有对C#类库的一些标准方法不太熟悉,还以及对C#语言中经常出现的错误也不了解,通过实践,使我在这几个方面的认识有所提高。

通过实践的学习,我认识到学好计算机要重视实践操作,不仅仅是学习C#语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己更好地学好计算机。

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

当前位置:首页 > 工作范文 > 演讲主持

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1