俄罗斯方块游戏的设计和实现详解.doc
文本预览下载声明
程序设计实践
设
计
报
告
课题名称: 俄罗斯方块游戏的设计和实现
学生姓名: xxxxxxxxx
班 级: 2013211105
班内序号: 20
学 号: 2013210141
日 期: 2015.6.15
课题概述
1.1课题目标和主要内容
基本目标:游戏开始后,通过键盘上的上、下、左、右键来控制方块的旋转、下移、左移、右移。?
主要内容:实现经典单人版的俄罗斯方块的基本功能,另外加入了一些经典版本中没有的功能。本程序使用Microsoft?Visual?Studio?2010在控制台下编写。
1.2系统的主要功能
1.可以灵活控制方块在图形框中运动。?
2.游戏过程中方块可以自由旋转。?
?3.当某一行的方块排列满时,将自动将这一行方块消除,然后将上面所有方块向下移动。???????
4.可以提示下一个出现的方块。??
5.游戏结束后弹出提示界面,显示“GAME OVER!!!”以及分数和制作者。
6.可以随时暂停游戏以及接着开始游戏。
7.初始化界面和游戏中有音乐,使游戏更吸引人。
2. 系统设计
2.1 系统总体框架
2.2 系统详细设计
[1] 模块划分图及描述
起始模块:直接显示俄罗斯方块游戏界面,按照屏幕提示操作开始游戏。?
游戏模块:可以进行正常游戏,使用快捷键暂停,可以自动播放音乐等
[2] 类关系图及描述
[3] 程序流程图及描述
如图
[4] 存储结构、内存分配
所有存储的数据均用数组存储。
2.3 关键算法分析
算法1:void Init()
[1] 算法功能
初始化游戏界面。
[2] 算法基本思想
利用工作区中map中的元素值-1代表上下边界;-2代表左右边界,-3代表四个角。
[3] 算法空间、时间复杂度分析
空间复杂度O(1)
时间复杂度O(1)
[4] 代码逻辑(可用伪代码描述)
void Init()
{
handle=initiate();
srand(time(NULL));
//初始化工作区
for(int i=0;i20;i++)
{
map[i][0]=-2;
map[i][11]=-2;
}
for(int i=0;i12;i++)
{
map[0][i]=-1;
map[19][i]=-1;
}
map[0][0]=-3;
map[0][11]=-3;
map[19][0]=-3;
map[19][11]=-3;
WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY};
textout(handle,26+dx,3+dy,wColors,1,SCORE);
textout(handle,26+dx,7+dy,wColors,1,LEVEL);
textout(handle,26+dx,11+dy,wColors,1,NEXT);
wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY;
DrawBlocks(map[0][0],12,20,0,0,wColors,1);
textout(handle,dx,dy,wColors,1, ◇══════════◇);
wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;
textout(handle,dx-16,dy,wColors,1, 按任意键开始);
int ch=_getch();
textout(handle,dx-16,dy,wColors,1, );
}
算法2:DrawBlocks
[1] 算法功能
显示方块,并将游戏边界进行显示,展示出良好的用户交互界面。
[2] 算法基本思想
根据4*4二维数组存储的方块形状显示方块,其基本思想遍历该数组的每一个元素,若元素值不是0,则显示一个基本方块“ ■”,否则不显示。
[3] 算法空间、时间复杂度分析
空间复杂度O(1)
时间复杂
显示全部