JAVA编写俄罗斯方块设计文档详细说明书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于设计文档详细说明书
---------俄罗斯方块的实现
一、实现此游戏的软件,即开发环境:JCreator;
二、目的:为游戏爱好者设计的一套娱乐软件。
三、开发人员:
四、具体模块划分如下(功能简要说明):
1、
ErsBlocksGame.java:
游戏主类,继承自JFrame类,负责游戏的全局控制。
内含:
1、一个GameCanvas画布类的实例引用,
2、一个保存当前活动块(ErsBlock)实例的引用,
3、一个保存当前控制面板(ControlPanel)实例的引用
ErsBox.java:
方格类,是组成块的基本元素,用自己的颜色来表示块的外观。
2、
ControlPanel.java:
控制面板类,继承自JPanel.上边安放预显窗口、等级、得分、控制按钮主要用来控制游戏进程。
3、
ErsBlock.java:
块类,继承自线程类(Thread),由4 * 4 个方格(ErsBox)构成一个块控制块的移动、下落、变形等
4、
GameCanvas.java:
画布类,内有<行数> * <列数>个方格类实例。继承自JPanel类。ErsBlock线程类动态改变画布类的方格颜色,画布类通过检查方格颜色来体现ErsBlock块的移动情况。
五、具体模块功能的实现:
(1)、
ErsBlockGame类说明(游戏主类,继承自JFrame类,负责游戏的全局控制):
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
ErsBlockGame中用到的方法具体说明如下:
1、main() ---程序入口函数;
2、ErsBlockGame() ---构造函数,初始化窗体界面;
a、setSize() ---窗口大小
b、setLocation()--利用屏幕和主窗体的大小差值,使窗口居中;
c、createMenu()---建立并设置窗口菜单;
依次添加:
菜单栏->bar
菜单项->mGame,mControl,mWindowStyle
子菜单->
mGame->miNewGame,miSetBlockColor,miSetBackColor,miTurnHarder,miTurnEasier,miExit;
mControl->miPlay,miPause,miResume,miStop;
mWindowStyle->miAsWindows,miAsMotif,miAsMetal
依次添加各子菜单的事件监听器:
miNewGame---新游戏
a、stopGame()---先停止原来的游戏(判断ErsBlock类对象Block是否为空,如不为空,即调用它的pauseMove()方法,即stoping为ture);
b、reset() ---重新还原状态(分别调用ctrlPanel.reset()控制面板复位
和canvas.reset()画布复位);
c、setLevel() ---设置级别为初始值为5
miSetBlockColor---设置活动的方块的色(JColorChooser.showDialog选择颜色对话框)
miSetBackColor---设置画布的背景色(同上)
miTurnHarder---设置高一级的级别(getLevel()与MAX_LEVEL的比较,再调用setLevel())
miTurnEasier---设低一级的级别(getLevel()与Min_LEVEL的比较,再调用setLevel())
miExit ---退出
miPlay---开始游戏(调用playGame()=>this.play()=>this.reset()=>新建线程并启动start()=>调用Game(此类实现Runnable接口)的run()方法=>判断block是否为空,判断checkFullLine()是否有满行,判断游戏是否结束;随机产生画布类的方块类型和控制面板类的方块类型)
miPause---停止游戏(调用pauseGame())
miResume---唤醒游戏(调用resumeGame()=>判断ErsBlock类对象Block是否为空,如不为空,即调用它的resumeMove()方法,即stoping为false)
miStop---停止游戏(调用stopGame()=>判断ErsBlock类对象Block是否为空,如不为空,即调用它的stopMove()方法,即moving为false)
miAsWindows----设置为windows界面(调用this.setWindowStyle(),再调用canvas,ctrlPanel的fanning())
miAsMotif ----设置为motif界面(同上)
miAsMetal ----设置为metal界面(同上)
mguanyu ----关于对话框;
d、canvas ---创建画布类对象(调用canvas的构造函数);
e、ctrlPanel ---创建控制面板类对象(调用ctrlPanel的构造函数);
f、addWindowListener--添加窗口适配器(调用stopGame());
g、addComponentListener--添加组件适配器(调用canvas.fanning());
h、show() ---显示窗体;
i、canvas.fanning() ---根据窗口的大小,自动调整方格的尺寸;
j、以下为外部类调用的方法:
isPlaying()-----判断游戏是否还在进行;
getCurBlock()----得到当前活动的块;
getCanvas()-----得到当前画布;
getScore()------得到游戏积分;
getScoreForLevelUpdate()----得到自上次升级以来的游戏积分,升级以后,此积分清零;
levelUpdate()-----当分数累计到一定的数量时,升一次级;
reportGameOver()------报告游戏结束了;
2、内部类:Game
Methord: checkFullLine()---检查是否有全填满的行;
run() ---游戏启动之处;
isGameOver() ---判断游戏是否已经结束;
a、reportGameOver()---报告游戏结束了;
3、内部类:AboutDialog------显示关于对话框;
(2)、ErsBox类的说明:(方格类,是组成块的基本元素,用自己的颜色来表示块的外观)
ErsBox中用到的方法具体说明如下:
1、ErsBox()---方格类的构造函数,接受一个布尔值,判断是否用前景色来添丛方块
2、clone() ---Cloneable接口的抽象方法在此实现
3、setSize()---设置方格的尺寸
4、getSize()---得到此方格的尺寸
5、isColorBox()--判断是否用前景色来表现此方块
6、setColor---设置方格的颜色