超级俄罗斯方块V1.0说明文档
夏斯华 二零零四年三月十四日
1简介
1.1项目名称及编写者
超级俄罗斯方块V1.0(双模式)
夏斯华(010155)(xiasihua0001@yahoo.com.cn)
1.2项目介绍
本程序实现了俄罗斯方块游戏的基本功能。可以单机游戏,也可以通过TCP/IP协议进行网络游戏。涉及到了JAVA的GUI,线程控制,文件读写(IO)以及基于SOKET的网络传输。既可单机游戏,也双机联机游戏。适用于jdk1.4以上运行环境。
1. 3编写目的
编写该程序,旨在对JAVA 程序设计有更深刻的了解。实践JAVA语言的应用。以及培养自己良好的JAVA编程风范。实践设计模式。
1.4项目背景
在对JAVA程序设计这门课程进行了系统学习后,运用课程中学到知识进行设计编写的软件。本程序涉及到的JAVA模块有:图形界面(GUI),线程,网络(SOCKET),以及基本输入输出。
1.5主要技术支持和相关参考
该项目涉及到的JAVA知识有:JAVA的GUI,线程控制以及基于SOKET的网络传输。
参考书目:
java有关电子版书
Thinking in JAVA(中文版)(机械工业出版社)
网上相关专题的文章
2游戏说明及使用
2.1游戏起源、历史、简介
俄罗斯方块是一款风靡全球的电视游戏机和掌上游戏机游戏,它曾经造成的轰动与造成的经济价值可以说是游戏史上的一件大事。这款游戏最初是由苏联的游戏制作人Alex Pajitnov制作的,它看似简单但却变化无穷,令人上瘾。相信大多数用户都还记得为它痴迷得茶不思饭不想的那个俄罗斯方块时代。
究其历史,俄罗斯方块最早还是出现在PC机上,而我国的用户都是通过红白机了解、喜欢上它的。现在我就想实现这脍炙人口好游戏。对大家来说,它的规则简单,容易上手,且游戏过程变化无穷,而在我实现的游戏中,更有一些独有的魅力――有单机作战与两人在线对战两种模式,用户可任选一种进行游戏。
2.2运行环境
简要地说明对本系统的运行环境(包括硬件环境和支持环境)的规定。
l 硬件环境:
处理器主频600MHZ以上,内存1G以上,VGA视频显示器,标准的鼠标、键盘
l 软件环境:
Ø 操作系统:Windows2000+sp3或以上
Ø JDK1.4以上
l 网络要求:
要求局域网支持TCP/IP协议,局域网连接最好能稳定,传输流畅。(玩网络对战时需要)
其他的 Linux、soralis、Unix相当要求
2.3我的游戏
我的俄罗斯方块可以联网运行,也可以单机运行,下面就两种模式分别进行一下介绍:
1、 联网模式:联网游戏先在一台电脑上运行程序,点选菜单中的RunServer,然后在另一台电脑上运行程序,点选RunClient,输入正确的IP地址就可以开始游戏。在自己的电脑上可以看到对方的游戏情况。
2、 单机模式:单机版游戏点选菜单中的NewGame。用上下左右键就可以控制游戏。“上”为让方块变形,其他控制方向,界面上会显示出得分和难度级别。为了演示方便,当消除10行之后难度就会升一级方块下落速度也相应加快。当游戏失败时会给出提示。-
当然在进入系统之前可以设置速度、方块形状难易程度、界面方格的行数和列数。
3详细设计
3.1系统规划:
游戏和网络即时传输相结合。编成的过程中尽可能的使用到了继承,接口等面向对象的编程方法。
3.2内部设计:
内部对象及方法:
游戏模块:
class RussianGame extends JFrame
主窗口类,显示程序主界面
class OptionDialog extends JDialog
游戏参数设置选择对话框
class RussianPanel extends JPanel
用于接受键盘消息并绘出游戏界面的类。
class InsertURScore extends JDialog
此内部类处理将分数加进积分榜上
class RsnArith
提供俄罗斯方块游戏的算法支持
inner class MyPoint extends Point
算法类的内置类用于储存游戏所有方格的信息。
class Diamonds
游戏算法的一部分。储存方块信息。RussianPanel根据该类的信息在屏幕上画出方块
class IDiamonds extends Diamonds
储存长条形方块信息
class RLDiamonds extends Diamonds
储存L型方块信息
class LLDiamonds extends Diamonds
储存反L型方块信息
class RSDiamonds extends Diamonds
储存右S型方块信息
class LSDiamonds extends Diamonds
储存左S型方块信息
class ODiamonds extends Diamonds
储存四方型方块信息
class TDiamonds extends Diamonds
储存T型方块信息
class L5Diamonds extends Diamonds
class R5Diamonds extends Diamonds
class TriDiamonds extends Diamonds
class RGDiamonds extends Diamonds
class LGDiamonds extends Diamonds
由Diamonds作为基类可以很容易的扩展出更多种形状的方块
public class Score
处理游戏积分的
class ScoreReport extends JDialog
英雄榜对话框
class GameInfo
内含静态的变量,用于游戏参数的保存,有点象全局变量
public class HandlerLogger
用来处理异常处理以及其他类型日志的
网络模块:
class NetThread extends Thread
用于网络连接的线程。作为一个父类提供给子类必要的功能
class ServerThread extends NetThread
服务器端的线程
class ClientThread extends NetThread
客户端的线程
public class TransInfo implements Serializable
用于储存网络传送的必要信息。比如当前游戏的状态。
当客户端或服务器端检查到游戏状态改变时互相发送给对方来实现显示同步。
说明:
箭头
表示继承关系,-横线表示此类用到了另一类或有关系。方框里的方框表示内部类。
3.3关键算法
俄罗斯方块的产生问题。用了二维数组,存放每个点对于某一个特殊点的相对位置坐标。具体见程序文件Diamond.java。
3.4特性罗列:
1.游戏参数设置
2.单机游戏
3.网络对战
4.英雄榜(数据持久化)
5.异常、错误、类型说明等日志
6.优美界面、人性设计