我正在努力编写一个尽可能符合俄罗斯方块指南的微缩版俄罗斯方块:
确切地说,我希望完整的游戏尽可能少地构建140字节的javascript.第一个140字节的脚本应返回一个包含112个整数值的数组,这些值代表4个旋转位置中每个位置的7个tetrominos的4行.旋转的确切位置顺序非常重要.
我把数据放在16位unicode字符中(尽管它们计算为2个字节)并且只需140多个字节就可以解压缩.
有谁知道构建这个数组的聪明方法?
var s ="ༀༀ∢䑄䑄ˠౄౄ00000000 ٔٔࣄӠѤѢࣄӠѤӄӈ",m = []; for(i = 0; i <28; i ++){c = s.charCodeAt(i); for(j = 4; j> 0; ){m.push(c >>(4* - j)&15)} return m}
I tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
????????? ? ? ??? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ??? ? ????????? ? ??? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ??? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
Hex: 0F00 Hex: 2222 Hex: 00F0 Hex: 4444
J tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
??? ? ? ? ? ????? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
??????? ? ? ??? ? ? ??????? ? ? ??? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ??? ? ? ? ? ??? ? ????? ? ?
????????? ????????? ????????? ?????????
Hex: 08E0 Hex: 0644 Hex: 00E2 Hex: 044C
L tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
? ? ??? ? ? ??? ? ? ? ? ? ? ? ????? ? ?
????????? ????????? ????????? ?????????
??????? ? ? ??? ? ? ??????? ? ? ??? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ????? ? ??? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
Hex: 02E0 Hex: 0446 Hex: 00E8 Hex: 0C44
O tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
? ????? ? ? ????? ? ? ????? ? ? ????? ?
????????? ????????? ????????? ?????????
? ????? ? ? ????? ? ? ????? ? ? ????? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
Hex: 0660 Hex: 0660 Hex: 0660 Hex: 0660
S tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
? ????? ? ? ??? ? ? ? ? ? ? ? ??? ? ? ?
????????? ????????? ????????? ?????????
????? ? ? ? ????? ? ? ????? ? ????? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ??? ? ????? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
Hex: 06C0 Hex: 0462 Hex: 006C Hex: 08C4
T tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
? ??? ? ? ? ??? ? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
??????? ? ? ????? ? ??????? ? ????? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ??? ? ? ? ??? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
Hex: 04E0 Hex: 0464 Hex: 00E4 Hex: 04C4
Z tetrimino
Spawn Rotate90 Rotate180 Rotate270
????????? ????????? ????????? ?????????
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
????????? ????????? ????????? ?????????
????? ? ? ? ? ??? ? ? ? ? ? ? ? ??? ? ?
????????? ????????? ????????? ?????????
? ????? ? ? ????? ? ????? ? ? ????? ? ?
????????? ????????? ????????? ?????????
? ? ? ? ? ? ??? ? ? ? ????? ? ??? ? ? ?
????????? ????????? ????????? ?????????
Hex: 0C60 Hex: 0264 Hex: 00C6 Hex: 04C8
Run Code Online (Sandbox Code Playgroud)
您可能需要记住,该数组的更聪明的编码方案将导致更长的解码逻辑,因此尝试对其进行过多优化可能是小聪明,大笨蛋。然而,我自己用 JavaScript 编写过一次俄罗斯方块游戏(尽管没有进行大小优化),我知道编写一个函数来旋转每个形状 n 次并不难。假设您的速度没有受到严重限制,为什么不仅为默认方向的每个形状都有一个 LUT 条目,并以编程方式旋转它们呢?您可能会发现这会导致使用的总体空间更少(特别是,如果旋转/转置代码大小小于数组大小的 3/4)。
编辑:这样做的另一个好处是,您不必跟踪网格上形状的旋转状态,您只需要跟踪其当前数组。当有人旋转时,用你的函数旋转数组。这样就无需进行检查(例如,如果旋转 > 3,则旋转 = 0)。
| 归档时间: |
|
| 查看次数: |
1904 次 |
| 最近记录: |