# tetris_cli_game **Repository Path**: diabio/tetris_cli_game ## Basic Information - **Project Name**: tetris_cli_game - **Description**: 这个一个在linux环境下基于c++开发的Tetris游戏 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-02 - **Last Updated**: 2025-06-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: cmake, Cpp ## README # C++ 终端俄罗斯方块游戏 (Tetris CLI Game) ## 简介 这是一个使用 C++ 语言在 Linux 终端环境下开发的经典俄罗斯方块 (Tetris) 游戏。这个项目利用 `ncurses` 库实现了丰富的字符图形界面、颜色、得分系统和流畅的交互体验,旨在提供一个精致且原汁原味的终端游戏体验。 (这个项目主要是本人学习c++的练习项目,如有错误请多见谅) ## 特性 (v1.0) * **经典玩法**:实现了俄罗斯方块的核心游戏逻辑,包括方块下落、左右移动、旋转。 * **7 种标准方块**:支持 I, O, T, S, Z, J, L 所有七种方块类型,并采用标准 Tetris (SRS) 旋转系统。 * **丰富色彩**:每个方块都配有独特的颜色,提升视觉效果。 * **精致界面**:游戏区域、下一个方块预览、得分信息等均有明确的边框分隔。 * **幽灵方块 (Ghost Piece)**:显示当前方块最终将落地的位置,帮助玩家规划。 * **硬下落 (Hard Drop)**:按下空格键可使方块瞬间落到底部并固定。 * **软下落 (Soft Drop)**:按下方向键下可加快方块下落速度,并获得额外得分。 * **消除行与得分**:自动检测并消除满行,根据消除行数获得分数奖励(单行、双行、三行、Tetris)。 * **等级系统**:根据得分提升游戏等级,方块下落速度随等级提升而加快。 * **游戏状态管理**:支持游戏暂停/恢复,以及游戏结束后的重新开始选项。 * **模块化设计**:采用面向对象编程思想,将游戏逻辑(`Game`)、游戏板(`Board`)、方块类型(`Tetromino`)和方块实例(`Piece`)等组件分离,代码结构清晰。 * **CMake 构建系统**:项目通过 CMake 进行管理,方便跨平台编译和依赖管理。 ## 技术栈 * **语言**: C++17 * **图形库**: `ncurses` (用于终端用户界面) * **构建工具**: `CMake` * **标准库**: `std::chrono` (计时), `std::random` (随机数生成) ## 先决条件 在 Linux 环境下编译和运行此游戏,你需要安装以下工具和库: * **C++ 编译器**: `g++` (支持 C++17) * **构建工具**: `CMake` * **ncurses 开发库**: * **Debian/Ubuntu**: `sudo apt update && sudo apt install libncursesw5-dev` * **Fedora/RHEL**: `sudo dnf install ncurses-devel` * **Arch Linux**: `sudo pacman -S ncurses` ## 构建与运行 ```bash # 进入项目根目录 mkdir build cmake .. # 编译项目 make # 运行项目 ./bin/tetris ``` ## 游戏控制 * **左方向键 (`KEY_LEFT`)**: 向左移动方块 * **右方向键 (`KEY_RIGHT`)**: 向右移动方块 * **上方向键 (`KEY_UP`)**: 旋转方块 * **下方向键 (`KEY_DOWN`)**: 软下落 (加速下落,并获得每格 1 分) * **空格键 (` `)**: 硬下落 (瞬间落到底部并固定,获得每格 2 分) * **P 键**: 暂停/恢复游戏 * **Q 键**: 退出游戏 * **R 键**: (游戏结束界面) 重新开始游戏