|
本条目介绍的内容不是官方的俄罗斯方块游戏。 这个游戏模拟了俄罗斯方块的玩法,在名称中使用了「Tetris」或「俄罗斯方块」,但没有经过俄罗斯方块公司官方授权。
|
|
2010 年,josmiley 完成过四个 Python 方块游戏的制作,BCTetris 是知名度最高的一个。 另外三作使用的名称分别是 tetrix、tetriz 和 tetrisdz。 这四个游戏的代码量都不大,有较为密切的制作关联,本条目将其合并介绍。
|
BCTetris |
---|
开发 |
josmiley |
---|
游戏平台 |
Python(Pygame) |
---|
发行时间 |
2010年5月3日 |
---|
预览块数 |
0 |
---|
场地大小 |
10 × 20 |
---|
暂存 |
无 |
---|
硬降 |
无 |
---|
旋转系统 |
专用 |
---|
|
BCTetris 是一个 Python 四连方块游戏。
该游戏是一个“啃字节”(Byte-crunching)方块游戏,主文件容量不足 1KB。
第一版 BCTetris 容量为 757 字节,第五版 717 字节。
玩法
消行。
死亡判定:锁定死亡。
这个游戏开局必是 Z,之后的块序由历史摆块位置算出。
受这一计算的影响,这个游戏很容易崩溃不动。
操作
左右键横移,上键顺时针旋转,下键软降一格。
这四个操作都只能单点,键盘上存有许多同功能的键(此处不赘述)。
方块环境配置
黑场白块。
各范围框的入场位置如上图所示。
其中,X 格坐标为 (6,21)。
以下图组中,每一组的最左图取贴底的朝向,右图是依次顺时针旋转的朝向:
(此处用灰色表示方格,以便于辨认)
BCTetris (Python, 2010) 没有踢墙。
代码展示
代码作者:josmiley
编程语言:Python
需要模块:早期(如 1.9.2 cp27)版本 pygame
from pygame import*;D,b,u=display,list(bin(256)),'1';X=D.set_mode((160,320)).fill;E,l,F,S,p=enumerate,b*25+list(bin(2047)),[list(bin(int(x,36)).zfill(57))for x in'9hf 2i136 9hf 2i136 4qr 4qr 4qr 4qr 1l3 4zvur b2c 7hqm9 35z 4zxfm b2a 2i135 f 7w9g3r6 f fsiw7ic 4qu 4zxfl 4qu 4zxfl 2hxxf 6br 7hs76 b29'.split()],252,3
while p>2:
p,d,f,S=-3,0,p%28,S-2;time.set_timer(2,S)
while d-11:
for e in event.get(2):
e=e.key;d,r=(11,-1,0,11,1)[(e&3)+(e>0)],f/4*4+(f+(e==273))%4;z=zip(l[p+d:],F[r]+[0]*230)
if not(u,u)in z:p+=d;f,d=r,0;[X(-(u in j),((p+i-58)%11*16,(p+i-58)/11*16,16,16))for i,j in E(z)];D.flip()
for i,j in E(F[f]):
if j==u:l[p+i]=u
for i in range(3,278,11):
if l[i:i+10]==10*[u]:l=b+l[:i]+l[i+11:]
另外三作
- 图一:Tetrix(2010 年 4 月 15 日)。
每放 10 个方块升级一次速度,消行按平方给分(1、4、9、16)。
按键的敏感度偏高,单点旋转容易过头,需要小心。
这个版本是最早的,却也是唯一不直接按老版 pygame 的事件(event)语句来使用 key 的。
(用新版 Pygame 模块也能顺利运行)
- 图二:Tetriz(2010 年 4 月 20 日,v3.1)。
也是啃字节方块,在 pygame 网站上的题目意为“16 行代码的方块”,主文件容量 2165 字节。
这个版本容量比 BCTetris 大很多,但不会有游戏崩溃问题。
每放 1 个方块加 1 点速度,得分等于总消行数,消 n 行减 n 点速度。
常规操作风格保持不变,但是软降的 ARR 极短,需要小心。
- 图三:Tetrisdz(2010 年 11 月 13 日)。
每消 10 行升级一次速度,消行按平方和给分(1、5、14、30)。
这个版本将游戏重点从啃字节转回了方块游戏本身,升级和难度的变化更贴近传统方块,按键敏感度降回正常水平。
这个版本没有专门在 pygame 网站上发出。
外链