Pytris (Python, Nicolas Triantafillou, 2014)

来自俄罗斯方块中文维基
Pytris
开发 Nicolas Triantafillou
游戏平台 Python(Pygame)
发行时间 2014年8月14日
游戏信息
预览块数 0
场地大小 10 × 20
暂存
硬降
旋转系统 专用
[[文件:|125px]]
Pytris (Python, Nicolas Triantafillou, 2014) ingame.png

Pytris 是一款 Python 四连方块游戏。
该游戏模拟俄罗斯方块的玩法,但代码有很多不严谨的地方。

玩法

消行。
死亡判定:重叠死亡

操作

左右键横移,上键顺时针旋转,下键软降一格。
这四个操作都只能单点。

方块环境配置

O 暗水色,I 红色,J 紫色,L 黄色,T 淡褐色,S 青色,Z 绿色。

Tet.pngTet.pngTet.png4444Tet.pngTet.pngTet.png
Tet.pngTet.pngTet.png4444Tet.pngTet.pngTet.png
Tet.pngTet.pngTet.png44X4Tet.pngTet.pngTet.png
Tet.pngTet.pngTet.png4444Tet.pngTet.pngTet.png

七种方块都使用 4×4 碰撞箱。
其中,X 格坐标为 (6,18)。
O 不能旋转,其他方块每次把整个碰撞箱顺时针旋转 90 度。
各方块入场朝向如下:

Tet.pngDIDITet.png
Tet.pngDIDITet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngZTet.png
Tet.pngTet.pngZTet.png
Tet.pngTet.pngZTet.png
Tet.pngTet.pngZTet.png
Tet.pngTet.pngTTet.png
Tet.pngTet.pngTTet.png
Tet.pngTTTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngOTet.pngTet.png
Tet.pngOTet.pngTet.png
Tet.pngOOTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngZenSTet.pngTet.png
ZenSZenSZenSTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngNyet3ZNyet3Z
Tet.pngNyet3ZNyet3ZTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngSSTet.png
Tet.pngTet.pngSS
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png

Pytris (Python, Nicolas Triantafillou, 2014) 有卡碰撞箱的旋转限制。
只要某个方块所对应的 4×4 碰撞箱区域包含了任意砖格,这个方块就不能旋转。
Pytris (Python, Nicolas Triantafillou, 2014) 有 1–2 格的踢墙踢地[注 1]
踢墙和踢地仅在偏移之前受卡碰撞箱的限制。
只要偏移前没有砖格卡位,旋转就能成功,而且偏移后的新 4×4 区域内的卡位砖格会随这次旋转而消失。
踢地次数不受限制,可无限重置

代码不严谨之处

一、消行的判定和执行之间隔了一次自动降落。
  方块在已判定但未执行消行时旋转,就会既消行又保留方块。
二、执行消行的代码并不紧紧跟随方块锁定。
  方块可以悬空消行,而且如果还没接地就已经完全消化,游戏将无法继续。
三、方块旋转的逻辑是先清除旧方块再在目标位置添加新方块。
  悬空消行所产生的不正常方块可通过旋转变回正常的四连方块。
  如果方块已被完全消化,再按旋转就没用了,因为“清除旧方块”失败。
四、方块的消行检测总是紧紧跟随自动降落。
  这一条是 bug 中的 bug——手动软降方块到悬空消行位置,就不会触发悬空消行。

注释

  1. 仅对墙壁和场底有效

外链