---
title: Python命令行扫雷游戏项目要求详解：涵盖游戏逻辑、交互设计、显示标准及高级特性实现考量
created: 2026-03-30
updated: 2026-03-30
type: summary
tags: ["cli", "game", "notes", "python", "telegram"]
external: http://go/ui/posts/2298/
status: inbox
---

我觉得一个经典但考验层次很多的题目是：**命令行版扫雷游戏**。

原因是它表面简单，但要做好需要：

- 正确实现递归展开（BFS/DFS flood fill）
- 游戏状态管理（标记旗帜、胜负判断）
- 命令行渲染（清屏、格式化输出）
- 输入解析与边界处理
- 第一步保证不踩雷（高级加分项）

---

以下是题目prompt，你可以直接喂给其他AI：

---

**题目：用 Python 实现命令行扫雷游戏**

请用 Python 实现一个可以在命令行中运行的扫雷游戏，要求如下：

**基本规则**
- 棋盘大小为 9×9，共 10 个地雷，随机分布
- 每个格子有三种状态：未揭开、已揭开、已插旗（`F`）
- 揭开一个格子时：
  - 若是地雷，游戏结束，显示所有地雷位置
  - 若周围有地雷，显示周围地雷数量（1–8）
  - 若周围没有地雷，**递归展开**所有相邻的空格
- 所有非地雷格子均揭开时，玩家胜利

**交互方式**
- 每轮显示当前棋盘状态，坐标从 `(0,0)` 到 `(8,8)`
- 玩家输入指令格式：
  - `r 行 列`：揭开该格子，例如 `r 3 4`
  - `f 行 列`：插旗/取消插旗，例如 `f 0 0`
  - `q`：退出游戏
- 输入非法时给出提示，不崩溃

**显示要求**
- 未揭开的格子显示 `.`
- 插旗显示 `F`
- 已揭开且无相邻雷显示空格或 `0`
- 已揭开有相邻雷显示对应数字
- 胜利或失败时显示完整棋盘并给出结果提示

**加分要求（可选，但体现水平）**
- 第一步保证不踩雷（第一次输入 `r` 后再生成地雷，排除该格及周围8格）
- 胜利后显示用时

请将完整代码写在一个 `minesweeper.py` 文件中，无需任何第三方库，只使用 Python 标准库。

---

评分维度供你参考：

| 维度 | 考察点 |
|---|---|
| 正确性 | flood fill 是否对，旗帜逻辑是否准确 |
| 健壮性 | 非法输入不崩溃，边界处理 |
| 代码质量 | 结构清晰，函数分离 |
| 加分项 | 第一步保护、计时 |
