Pytris (Python, Lukasz G. Maciak, 2010)

来自俄罗斯方块中文维基
Pytris
开发 Lukasz Grzegorz Maciak
游戏平台 Python(Pygame)
发行时间 2010年6月11日
最新版本 v0.2 - win(2012年3月15日)
游戏信息
预览块数 1
场地大小 10 × 24
暂存块
硬降
旋转系统 专用
[[文件:|125px]]
Pytris (Python, Lukasz G. Maciak, 2010) ingame.jpg

Pytris 是一款 Python 四连方块游戏。
该游戏的创作目的是驳斥“俄罗斯方块是 Hello World 级别的编程”这一说法。
该游戏的制作思路是“要使人一眼就能看出来这是什么游戏,新奇的特征不必全有”。
该游戏使用 SRS 的方块配色,但方块入场位置和旋转情况都和 SRS 不同。

玩法

升级、得分。
每消 20 行升一级。
得分表参照 Tetris (Game Boy)[注 1]
死亡判定:顶出死亡——第 24 行出现任意砖格[注 2]

操作

左右键横移,上键旋转,下键软降,空格键硬降,Esc 键暂停,F1 键重来。
DAS = 100 毫秒,ARR = 150 毫秒,所有操作的按键都取这两个数值。

方块环境配置

七种方块使用 SRS 配色。

Tet.pngTet.png666666Tet.pngTet.png
Tet.pngTet.png655555Tet.pngTet.png
Tet.pngTet.png65X244Tet.pngTet.png
Tet.pngTet.png652244Tet.pngTet.png
Tet.pngTet.png654444Tet.pngTet.png
Tet.pngTet.png654444Tet.pngTet.png

为了分辨其他方块和 I 的位置关系,游戏中的碰撞箱最大取到 6×6,入场位置如上图所示。
其中,X 格坐标为 (5,24),各方块各旋转状态的坐标都是以 X 格为基点延取的。
旋转改变的是方块在碰撞箱内的位置,横移和降落改变的是整个碰撞箱在场内的位置。
以下图组中,每一组的最左图是入场朝向,右图是依次旋转操作后的朝向:
(J 呈逆时针旋转,L 和 T 呈顺时针旋转)

OO
OO
ITet.pngTet.pngTet.png
ITet.pngTet.pngTet.png
ITet.pngTet.pngTet.png
ITet.pngTet.pngTet.png
IIII
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngTet.pngTet.pngTet.png
JTet.pngJTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngJTet.pngJTet.pngTet.png
Tet.pngTet.pngTet.pngJTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngJTet.pngTet.pngTet.png
Tet.pngJTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngTet.pngTet.pngTet.png
Tet.pngJTet.pngJTet.pngJTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngLTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngLTet.pngLTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngLTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngLTet.pngTet.pngTet.pngTet.png
LTet.pngLTet.pngLTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
TTet.pngTTet.pngTTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
Tet.pngTTet.pngTTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
TTet.pngTTet.pngTTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
TTet.pngTTet.pngTet.pngTet.pngTet.png
Tet.pngTTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngSTet.pngSTet.pngTet.pngTet.pngTet.png
STet.pngSTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngSTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngSTet.pngSTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngSTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngZTet.pngZTet.pngTet.pngTet.png
Tet.pngTet.pngZTet.pngZTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngZTet.pngTet.pngTet.pngTet.png
ZTet.pngZTet.pngTet.pngTet.pngTet.png
ZTet.pngTet.pngTet.pngTet.pngTet.png
Tet.pngTet.pngTet.pngTet.pngTet.png

Pytris (Python, Lukasz G. Maciak, 2010) 没有踢墙,但有全测机制
有四种旋转状态的方块(T、J、L)旋转失败时会继续依次测试后两种旋转状态,能成则取,都不能成则方块不动。
于是,游戏中可能会出现 180 和 270 度旋转。

其他说明

该游戏的消行代码不严谨——遇到跨行消除的情况,只有上位消行顶上的方块堆会降落,还可能歪错出十砖零空的行。
该游戏的代码使用了 Python2 专用的 xrange,这个功能在 Python3 里被改成了 range。
要想用 Python3 运行游戏,就要把 PyTris.pyw 第 260、436 和 437 行的 xrange 改成 range。

注释

  1. S = M (N + 1),M = 40, 100, 300, 1200
  2. 第 24 行还没到天花板,但它已经是死线了。
    方块入场就重叠是不会死的,只要附近有足够的空间,就能移动或旋转出去,被重叠部分不会消失。

外链