Featured image of post 俄罗斯方蟹 (Crabtris)

俄罗斯方蟹 (Crabtris)

这是什么

俄罗斯方蟹 (Crabtris) = Crab (蟹) + Tetris (俄罗斯方块)。 这是一个用 C 语言实现的、在终端运行的俄罗斯方块游戏。不过它的方块不是自上而下,而是横着走

GitHub: https://github.com/wsgggws/Crabtris

游戏截图

Crabtris

设计哲学

蟹如人生呀,戏 T!

  1. 尺寸: 蟹身长 22 坐标点,宽 10 坐标点。
  2. 玩法: 方块向右前进,玩家控制上下移动与旋转。
  3. 极简: 没有开始选项,没有暂停功能。
  4. 硬核: 结束只能 Ctrl+c 强制退出。
  5. 无尽: 能消列,但不计分数。只看你能坚持通过多少个障碍,玩多久。

技术实现

1. 地图设计

使用一个二维数组表示地图。虽然逻辑上有宽度,但可视区域只有 22 列。另外 3 行用于隐藏缓冲,以便随机产生新的方块。

(0,0)---------------> x (WIDTH)
|
| .
|
v y (HEIGHT)

2. 元素构成

  • 固定的方块: 已经落下的死方块。
  • 移动的方块: 玩家控制的活方块。
  • 空气: 空白区域。
  • 边界: 地图边缘。

3. 方块模型

使用 4 个坐标点表示一个方块 (Tetromino)。支持经典的 7 种方块形状 (I, J, L, O, S, T, Z)。

4. 动画原理

利用终端控制字符(ANSI Escape Codes)或 termios 库。 每一帧都将光标重置到 (0,0),然后重绘整个地图。通过高频的重绘(每秒 N 帧),利用视觉暂留形成动画效果。

使用 Hugo 构建
主题 StackJimmy 设计