基于python的俄罗斯方块 – 苏的小站

成功 用自己的方式度过一生

个人作品展示

苏的小站 · 科技爱好者

爱好者

面试作品 简历展示、项目简介、技术栈
风格 现代、简约

基于python的俄罗斯方块

注:这是本人基于pygame模块写的一个贪吃蛇,主要针对于新手练习。

项目地址:suyihang15/Tetris_game: 基于python的俄罗斯方块

下载地址:https://github.com/suyihang15/Tetris_game/releases/download/1.0.0/tetris_game.exe

俄罗斯方块(Tetris_game)

基于 Python 和 Pygame 实现的经典俄罗斯方块游戏,遵循现代俄罗斯方块标准规则。

功能特性

标准规则

7 种标准方块**:I、O、T、S、Z、J、L,每种方块有独立的颜色

SRS 旋转系统**(Super Rotation System):每种方块拥有 4 个旋转状态

SRS 踢墙系统**(Wall Kick):旋转时若位置被阻挡,自动尝试偏移位置,支持 I 方块和 JLSTZ 方块的两套踢墙表

高级机制

Ghost Piece(投影预览)**:显示方块落到底部时的预估位置

Lock Delay(锁定延迟)**:方块着地后有短暂时间可继续操作,避免误放

锁定移动上限**:着地后最多可移动/旋转 15 次,超过则强制锁定

DAS / ARR 按键重复**:按住左右键时,延迟 170ms 后以 50ms 间隔连续移动,手感流畅

Hard Drop(硬降)**:空格键一键落到底部,并获得双倍距离分数

Soft Drop(软降)**:按住下键加速下落,每下落一格 +1 分

游戏功能

分数与等级系统(每消除 10 行升一级,最高下落间隔 50ms)

等级加成消除分数(1 行~4 行:100/300/500/800 × 等级)

下一方块预览面板

暂停 / 重新开始功能

游戏结束画面

操作方式

| ← → | 左右移动方块 |

| ↑ | 旋转方块 |

| ↓ | 加速下落 |

| 空格 | 直接落到底部 |

| P | 暂停 / 继续 |

| R | 重新开始(游戏结束后) |

运行环境

Python 3.6+

Pygame

安装依赖后运行:

pip install pygame

python tetris.py

整体架构

项目为单文件实现,包含一个 `Tetris` 类,通过 Pygame 管理游戏循环、渲染和输入。

核心数据结构

棋盘 `board`**:20 行 × 10 列的二维数组,存储每个格子的占用状态

方块形状 `SHAPES`**:字典结构,每个方块名对应 4 个旋转状态(每个状态为 4 个坐标的列表)

踢墙表 `KICK_JLSTZ` / `KICK_I`**:SRS 标准定义的旋转偏移量,按旋转方向索引

方块颜色

| 方块 | 颜色 | 色值 |

|——|——|——|

| I | 青色 | (0, 240, 240) |

| O | 黄色 | (240, 240, 0) |

| T | 紫色 | (160, 0, 240) |

| S | 绿色 | (0, 240, 0) |

| Z | 红色 | (240, 0, 0) |

| J | 蓝色 | (0, 0, 240) |

| L | 橙色 | (240, 160, 0) |

渲染系统

棋盘格子 30px × 30px,右侧 200px 信息面板

窗口分辨率:500 × 600

方块高光效果:内层填充亮色、外层边框,模拟立体感

Ghost Piece 以半透明线条边框呈现

半透明遮罩覆盖暂停和游戏结束画面

游戏循环

每帧执行:

1. `handle_events()` — 处理键盘事件

2. `update(dt)` — 更新按键重复、方块下落计时、锁定延迟

3. `draw()` — 渲染棋盘、方块、Ghost Piece、UI 面板

运行帧率固定为 60 FPS。

文件说明

/

├── tetris.py    # 游戏主程序

└── README.md    # 本说明文档

总结:希望能帮助入门的人学习。



发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注