游戏开发-2048-设计说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
游戏开发设计说明书
题目2048 学号20
学生姓名董涛
指导教师谢逸
所在班级计科1108班
专业名称计算机科学与技术
目录
游戏开发课程设计 (1)
目录 (2)
一.课程设计主要内容 (3)
1.题目 (3)
2.需求分析 (3)
3.设计环境 (3)
二.详细设计说明 (4)
1.系统程序流程图 (4)
2.系统概要说明 (5)
3.功能说明 (5)
4.系统各类的知识点说明 (5)
5.主要算法设计 (6)
三.游戏运行说明 (10)
1.游戏运行流程图 (10)
1.游戏开始 (11)
2.游戏进行 (12)
3.游戏结束 (12)
四.课程设计总结 (13)
一.课程设计主要内容
1.题目
2048
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.设计环境
运行环境:windows xp,windows 2003 windows 7开发环境:Microsoft Visual Studio 2010
编写语言:c#
二.详细设计说明
1.系统程序流程图
2. 系统概要说明
本程序是在VS2010环境下编写的Windows 应用程序,函数中利用了画图函数绘制基本方块模型,并通过键盘或鼠标执行相应的操作。在产生的方块中,调用随机方法,随机产生1~100中的任何一个数字,数字小于90,方块显示数字为2,否则显示为4,每一,通过这种方式,实现了游戏中其中不同模块的数字的随机产生。
N
Y
Y
N
3.功能说明
(1) 实现可以显示2或者4两张数字的方块
(2) 实现各个方块的上下左右移动
(3) 实现方块间数字判断与相加
4.系统各类的知识点说明
1.主类
Main()方法
主函数调用主要功能的三个方法,实现程序运行。
2.Cube类(画单元格)
Cube类的功能定义了单个方块的构架。此类中,定义了不同的数字显示所显示的不同的单元格方块,使方块相加变化明显。
此类中定义了属性currValue上一步方格值和积分
Form1()方法:构造方法,实现方块的实例化创建
start()方法:游戏的初始化,实现最开始两个方块的摆放。
SavePrevVaule()方法:保存每上一步的方块值以及成绩,实现撤销一次的操作
LoadPrevValue()方法:加载上一步值,当进行撤销操作时,调用该方法。
OneMove()方法:实现移动一次的操作。此方法调用MoveLine()进行累加,实现成绩的相加MoveLine()方法:移动一行的方法
getNextCube()方法:取下一个方块
CanMove()方法:通过方块是否能够移动,判断游戏是由结束
pictureBox1_MouseDown()方法:获取鼠标移动的位置
getDirection()方法:通过鼠标坐标判断方块的移动方向
Form1_KeyUp()方法:接受键盘信息,判断方块移动方向
btnPlay_Click()方法:“开始”按钮的单击事件,调用start()方法,开始游戏
btnUndo_Click()方法:“撤销”按钮的单机事件,调用LoadPrevValue()方法,进行撤销操作
5.主要算法设计
1.方块值的随机数产生
r = new Random();
int n1 = (1, 100);
cubes[0].Value = (n1 < 90 2 : 4);
通过Random类产生100以内的随机数,数字大于90,方块值为4;小于90,方块值为2 2.游戏初始化两个随机方格位置的摆放
r = new Random();
int c1 = (1, 4);
int c2 = c1;
do
c2 = (1, 16);
while (c2 == c1);
for (int i = 0; i < 16; i++)
cubes[i].Value = 0;
int n1 = (1, 100);
int n2 = (1, 100);
switch (c1)
{
case 1:
cubes[0].Value = (n1 < 90 2 : 4);
break;
case 2:
cubes[3].Value = (n1 < 90 2 : 4);
break;