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