旋转状态(Rotation State)是方块所有可能处于的状态,包含方块的朝向、相对位置等信息。旋转操作会使方块在旋转状态之间离散地切换。
朝向(Orientation 或 Facing)是旋转状态中最直观的属性,因此很多玩家习惯用朝向代指旋转状态。但是,方块所有可能的朝向在数学上唯一确定,而旋转状态由游戏定义,包含更多信息。不同游戏定义的旋转状态可能有所不同,从而使方块旋转时有不同的行为。
包括旋转状态在内,所有与方块旋转相关的机制共同组成旋转系统(Rotation System),决定方块旋转时的行为。
超级旋转系统中所有方块的所有旋转状态
朝向
定义
朝向(Orientation 或 Facing)是旋转状态中最直观的属性,其种类和数量在数学上唯一确定。
在二维方格空间中,方块旋转的度数总是 90° 的倍数,因此每种多连方块理论上都有 4 种朝向。但由于一些方块的对称性,直观上互不相同的朝向数量更少。
所有四连方块共有 19 种直观上互不相同的朝向。其中,J、L、T 块各有 4 种朝向,I、S、Z 块各有 2 种朝向,O 块只有 1 种朝向。
俄罗斯方块准则用地理方位命名朝向,以 T 块的尖头指向为准,「上北、下南、左西、右东」。玩家则普遍习惯简单地称之为「上、下、左、右」。
此外,在绝大多数游戏中,方块会以固定的朝向生成和进入场地,不同旋转系统选择的朝向可能不同。该朝向被称为「入场朝向」或「默认朝向」。
历史与不同实现
很多早期的旋转系统简单地根据朝向数量定义 19 种旋转状态。无论顺、逆时针旋转,I、S、Z 块都只会在 2 种状态间切换,O 块则完全没有改变。
较新的旋转系统大多会为 6 种方块定义完整的 4 种状态,以解决相差 180° 的对称情况,更符合几何直觉。但是,不同的旋转系统对 O 块的定义仍然可能各不相同,O 块可能只有 1 种状态,也可能有 4 种完全相同的状态等。
数学上所有四连方块的所有 19 种朝向
相对位置
定义
旋转状态不仅包含直观的朝向信息,同时也包含不同状态之间的相对位置信息。这样,当方块通过旋转操作切换至某一状态时,其位置是确定的,不会出现意料之外的位移。
此外,在绝大多数游戏中,方块会在固定的位置生成和进入场地,不同游戏定义的位置可能不同。尽管理论上这一「入场位置」与旋转并无关联,但一些玩家会将其视为广义的旋转状态或旋转系统的一部分。
历史与不同实现
在只有 19 种状态的早期旋转系统中,无论顺、逆时针旋转,I、S、Z 块一定会固定地偏向某方向 1 格。
较新的旋转系统在定义各方块完整的 4 种状态时,会令相差 180° 的对称情况处于对称的相对位置,以符合几何直觉。
GB 方块的旋转系统「偏左」
NES 方块的旋转系统「偏右」
旋转中心
定义
旋转中心(Rotation Center)是在一个方块的所有旋转状态中始终保持相对位置固定的中心格或中心点。
旋转中心可以在方块上、方块边缘或方块之外,不同旋转系统定义的位置可能不同。还有一些旋转系统不存在旋转中心。
历史与不同实现
很多旋转系统的设计符合「方块绕某一中心旋转」的几何直觉,因此所有旋转状态中自然地存在不动点。
在大多数情况下,旋转中心并非旋转系统专门定义的机制或概念,也很可能不存在于游戏代码中,很多旋转系统只定义了各状态下方块占据的格子。在示意图中绘制旋转中心主要是为了方便读者理解、区分对称的状态等。
不过,也有极少数旋转系统通过旋转中心定义旋转状态和方块旋转时的行为。
超级旋转系统中所有方块的旋转中心
范围框
定义
范围框(Bounding Box)是可以容纳一个方块所有旋转状态的矩形区域,一般大小在 3×3 至 5×5 之间。
范围框的定义存在争议。有观点认为范围框应当是满足条件的最小区域,例如 O 块的范围框是 2×2 正方形。也有观点认为同一旋转系统应当使用统一大小的范围框,例如所有方块的范围框统一为 4×4 正方形。还有观点认为范围框的定义应当取决于游戏的具体代码实现,例如范围框等于存储旋转状态的二维数组尺寸。
历史与不同实现
与旋转中心类似,在大多数情况下,范围框是在存储旋转状态或绘制示意图时自然存在的,而非旋转系统专门定义的机制或概念。
一些旋转系统会将所有方块定义在相同的 4×4 或 5×5 区域内,主要用于对齐不同方块的相对位置。但是,一般不存在一个区域会随方块一起旋转或参与判定。
参见