#P16489. [GKS 2014 #C] Tetris
[GKS 2014 #C] Tetris
题目描述
俄罗斯方块(Tetris)是一款著名的电子游戏,几乎每个人都玩过。在本题中,你需要模拟它的一个简化版本。
在我们的版本中,游戏在一个宽度为 、高度为 的场地中进行,并受到重力影响。最初,场地是空的。随后,四格骨牌开始从场地上方依次下落。每个四格骨牌一旦接触到其他四格骨牌或场地底部就会立即停止。
游戏有一个有趣的特性叫做“消除行”。一旦某一行被四格骨牌填满,它就会被消除。一次可能消除多行。例如:
|..............| |..............| |..............|
|.............o| |..............| |..............|
|.............o| |..............| |..............|
|.............o| |..............| |..............|
|.............o| |..............| |..............|
|..xx..........| --> |..xx..........| --> |..............|
|xxxxxxxxxxxxx.| |xxxxxxxxxxxxxo| |..............|
|xxxxxxxxxxxxx.| |xxxxxxxxxxxxxo| |..xx..........|
|xx..xxxxxxxxx.| |xx..xxxxxxxxxo| |xx..xxxxxxxxxo|
|xxxxxxxxxxx...| |xxxxxxxxxxx..o| |xxxxxxxxxxx..o|
---------------- ---------------- ----------------
下落中 停止 消除了 2 行
注意,在此简化版本中,消除行后“悬空”的四格骨牌方块不会继续下落。这就是为什么最顶上的两个方块会保持在原位。因此,尽管在原版俄罗斯方块中会发生连锁消除,这里并不会发生。
当所有给定的四格骨牌都放置完毕,或者由于达到场地高度限制而无法放置当前四格骨牌时,游戏结束。
在本题中,每个四格骨牌的类型、旋转角度以及下落位置均由输入给出。它们将从场地的上方开始下落。你的目标是模拟并得出每局游戏的最终结果。
输入格式
1 2 3 4 5 6 7
x x x x xx x x
xx xx x x xx x xxx
x x xx xx x
x
四格骨牌的旋转由一个数字 表示。 可以是 、、 或 。旋转方向为逆时针。例如:
r=0 r=1 r=2 r=3
x x xxx x
xxx xx x xx
x x
x xx x xx
xx xx xx xx
x x
水平下落位置由一个数字 表示。它是四格骨牌包围盒左下角方块的坐标。此处 从 开始。
输入的第一行给出测试用例的数量 。对于每个测试用例,第一行输入包含 个整数 、、。 是宽度, 是高度, 是将要下落的方块数量。
接下来的 行,每行包含 个整数 、、。 指明四格骨牌的类型。 是该四格骨牌的旋转角度。 是该四格骨牌的水平下落位置。保证 会使四格骨牌在水平方向上位于场地内部。
输出格式
对于每个测试用例,首先输出一行“Case #i:”,其中 i 是测试用例编号(从 开始)。然后,如果游戏在 个方块下落之前结束,输出“Game Over!”(不含引号)。否则,输出游戏场地的最终状态,状态应包含 行,每行 个字符。每个字符可以是 '.' 或 'x'。
5
8 6 1
1 0 0
5 4 1
1 1 1
5 6 3
5 0 0
5 0 2
3 2 3
6 4 3
6 2 0
6 2 0
6 2 0
6 4 2
6 0 0
6 0 1
Case #1:
........
........
........
x.......
xx......
.x......
Case #2:
.....
.....
..xx.
.xx..
Case #3:
.....
.....
.....
.....
.....
...xx
Case #4:
Game Over!
Case #5:
xx....
xx....
xx....
xx....
提示
限制
小数据集(测试集 1 - 可见)
大数据集(测试集 2 - 隐藏)
翻译由 DeepSeek V4 Pro 完成