- 一个Factory负责随机产生一个随机颜色的方块。
- 一个Location类,保存每一个小方格的位置以及颜色信息。
- 一个方块的基类
- 属性
- 状态:代表方块不同的朝向
- 位置List:用链表保存本方块的位置。每个俄罗斯方块的小方格在链表中的位置是固定的,方便旋转。
- 方法
- stateChange():改变方块状态,即顺时针旋转方块(一字型只有两种状态,严格来说不算旋转)。使用swith,根据当前状态来进行旋转。
- nextLocation():返回方块整体下降一格之后的位置给field。
- field类
- 属性
- N(N为field的宽)个List保存已经落下的方块的小方格的位置,且顺序为List(0)为位置最高的方格。这样当方块返回下一步的位置的时候,只需要跟每个List(0)比较就可以知道落到底了没。
- 方法
- eliminate():方块落到底之后,遍历field中的方格位置,消除满行的那一行方格。需要考虑消除动画。
- draw(): 绘出已经落下的方块。