1.8.3 类图:最终设计
为了检查早先下落的方块所处的位置,以确认当前方块下面是否存在其他方块或确认是否存在完整的水平线,我们必须采取某种方法来存储和检测方块的每个正方形,这种方法应该独立于早先下落的方块(切记,当删除一条水平线时,我们只能删除某个给定方块的一个或两个正方形)。可以通过创建一个新的类来做到这一点,这个类表示游戏区域,它存储了所有正方形的有关信息,并包含一些方法允许在其他特殊条件下删除水平线。经过认真考虑之后,我们把这个新的类加入到模型中,那么就发展成了如图1-22所示的类图。

图1-22 最终的类图
表1-3列举了新建类的方法和属性,并附带有简短的说明信息。
表1-3 Game Field类成员
|
类 型 |
名 称 |
描 述 |
|
属性 |
Width and Height |
这两个属性分别表示游戏区域的宽度和高度,使用正方形的个数计算 |
|
属性 |
SquareSize |
该属性表示每个正方形的大小,因此可以把像素个数换算成正方形个数 |
|
属性 |
ArrGameField |
建立一个数组来存储所有已经停止下落的方块所包含的正方形 |
|
方法 |
CheckLines |
该方法检查是否存在完整的水平线,如果存在,则删除它们,并返回已删除的水平线个数,从而使得主程序可以增加游戏者的得分 |
|
方法 |
IsEmpty |
该方法检查某个特定位置(给定x、y坐标值)上的正方形是否为空,从而告知我们:什么时候某个方块正在工作 |
|
方法 |
Redraw |
该方法强制性重新绘制游戏区域。当某个水平线被删除或者其他窗口重叠了该窗口时,使用该方法 |
在实际的项目开发过程中,所做的工作可能远非这些,需要不断地精化所有的方法以涵盖全部接口内容(接收的参数和返回值),并指定属性的数据类型,所有这些都可能导致类图的再次修改。这里,我们只是给出了最基本的处理思想,这才是我们的主要目的。






