俄罗斯方块设计思路
1.方块类:每个方块都要记录自己的ID、形状。形状采用4对整数坐标来表示,分别记录其4个小方块的相对位置(以方块内或旁边任一点为中心,称为参考点)。建议可以在方块类中定义一个或多个private
static数组,将每种ID的方块的形状数据存储好(都是一些固定的数据),这样产生一个方块时只需要提供其ID即可。
为了处理方块的旋转,我们不能只记录上述7种方块,而应该把它们旋转后产生的每种形状都认为是一种不同的方块(因为它们的4对坐标都不同),然后在方块ID之间建立映射关系,即哪种ID的方块旋转后变成哪种ID的方块,只要求处理一个方向的旋转。这个映射关系也可以用private
static数组来实现。
此外,方块类还要记录自己的参考点在指定的游戏区域中的位置。
方块类主要操作:(自行决定哪些为public哪些为private)
构造函数:参数至少有:ID和参考点初始坐标。
填充:把自己填充到指定的游戏区域中。返回填充成功或失败的信息。
清除:把自己从指定的游戏区域中清除。
移动:在指定的游戏区域中移动,包括向左、右、下移动,以1个单元格为单位。如果可以移动,则修改参考点的位置,并在指定的游戏区域中重新填充自己(先清除、然后修改参考点位置,再填充)。返回是否移动成功的信息。
旋转:在指定的游戏区域中旋转一次,此时参考点位置不变,但要改变自己的ID,然后在指定的游戏区域中重新填充自己(先清除、然后修改参考点位置,再填充)。
获得占用行:返回本方块4个小方块所占用的各行,可能有1~4行,要返回每一行的行号(1~20)。这些数据可用参考点位置与自己的4对坐标计算出来。