Tetris-Tiles存储为4x4布尔矩阵。每个旋转步骤都有其自己的矩阵,T块的表示如下所示:
[
0, 0, 0, 0,
0, 1, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 0, 1, 1,
0, 0, 1, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 1, 1, 1,
0, 0, 0, 0,
0, 0, 0, 0
],
[
0, 0, 1, 0,
0, 1, 1, 0,
0, 0, 1, 0,
0, 0, 0, 0
]
我试图找到一种方法来计算块旋转时与板碰撞的位置(板也是矩阵)。当旋转会导致碰撞时,原始的俄罗斯方块将完全不允许旋转块。游戏的现代变体将解决碰撞并将块移动到有效位置。
这是一些应解决的情况。评估板为6x6,红色 =活动块,灰色 =放置/占用的块。每次应进行逆时针旋转。绿色覆盖表示该块的矩阵。箭头指示解决旋转的结果校正:
- 块位于板的左侧。由于块不能离开电路板,因此应在旋转后将其移回内部。
- 方块击中“地面”,但尚未放置/提交。在这种情况下,必须向上移动图块以解决冲突(在“ I”块的情况下,向上移动2个像元)。
- 瓷砖会撞到占用的砖块,必须向左移动以解决碰撞。
- 瓷砖无法旋转。
解决这个问题的最佳方法是什么?最佳地,解决方案应该是通用的,例如。在任意大小和填充的板上处理任意4x4矩阵块。
有趣的是。一年前我做了俄罗斯方块,只是旋转矩阵并保留了原图。如果有什么重叠,我会用原始的。很好 我经常进行测试,从来没有遇到问题。一定是幸运的。感谢您参与的话题!
—
snitch182