# PokeMMon：用 MiniMax 算法重现初代宝可梦对战的 AI 项目

> 一个使用 Python 和 PyGame 开发的初代宝可梦对战系统复刻项目，实现了 MiniMax、Alpha-Beta 剪枝和 ExpectiMax 等 AI 算法来控制对手行为。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-05-29T16:15:55.000Z
- 最近活动: 2026-05-29T16:22:04.696Z
- 热度: 159.9
- 关键词: 宝可梦, MiniMax, Alpha-Beta剪枝, ExpectiMax, 游戏AI, PyGame, 博弈论, Python
- 页面链接: https://www.zingnex.cn/forum/thread/pokemmon-minimax-ai
- Canonical: https://www.zingnex.cn/forum/thread/pokemmon-minimax-ai
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**：nebuchadneZZar01 (Michele Ferro)
- **来源平台**：GitHub
- **原始标题**：PokeMMon: Pokémon battles simulator, with the use of MiniMax-Type algorithms
- **原始链接**：https://github.com/nebuchadneZZar01/PokeMMon
- **发布时间**：持续更新

## 项目背景

PokeMMon 是一个为人工智能课程开发的学术项目，旨在通过经典游戏场景实践博弈论和搜索算法。项目复刻了第一代宝可梦游戏（红/蓝/黄版）的战斗系统，并融入第二世代（金/银/水晶版）的一些优化和 Bug 修复。

所有使用的素材（角色、音效、图像和创意）版权归 The Pokémon Company、Nintendo、Game Freak 和 Creatures Inc. 所有。

## 技术实现

### 游戏引擎

项目使用 Python 3.10+ 和 PyGame 模块开发，提供了完整的图形化对战界面。玩家可以在熟悉的宝可梦战斗场景中体验与 AI 对手的策略博弈。

### AI 算法实现

项目的核心亮点是实现了三种 MiniMax 类型的博弈算法：

#### 1. MiniMax（基础版）

经典的极小化极大算法，通过递归遍历游戏树，假设对手也会选择最优策略，从而做出当前局面下的最佳决策。

#### 2. Alpha-Beta 剪枝

在 MiniMax 基础上加入剪枝优化，通过维护 alpha（己方最优值）和 beta（对手最优值）两个边界，剪掉不可能影响最终决策的分支，显著提升搜索效率。

#### 3. ExpectiMax

针对存在随机因素（如技能命中率、暴击判定）的游戏场景，ExpectiMax 在决策节点之外引入机会节点，计算期望效用值而非确定性的极值，更适合处理带有概率性的游戏状态。

## 使用方法

### 环境准备

确保系统已安装 Python 3.10 或更高版本，然后通过 pip 安装依赖：

```bash
pip install pygame
```

### 运行游戏

克隆仓库后，在项目根目录运行：

```bash
python main.py
```

### 命令行参数

项目支持多种自定义选项：

```
usage: main.py [-h] [--ai AI] [--depth DEPTH] [--s S]

options:
  -h, --help     显示帮助信息
  --ai AI        AI 算法选择 [random/minimax/alphabeta/expectimax]，默认 minimax
  --depth DEPTH  搜索树最大深度，默认 7
  --s S          音效开关 [Y/n]，默认开启
```

### 使用示例

使用 Alpha-Beta 剪枝算法（默认深度），开启音效：

```bash
python main.py --ai alphabeta --s y
```

## 算法可视化

游戏运行时，命令行会输出 AI 决策过程的日志，展示算法如何评估不同行动的价值，帮助理解 MiniMax 类算法的工作原理。

## 教育价值

这个项目具有多重学习意义：

### 博弈论实践

通过真实的游戏场景，直观展示对抗性搜索算法的应用。玩家可以观察 AI 如何在不同局势下做出决策，理解"最优策略"的计算过程。

### 算法对比

支持在相同局面下切换不同算法，对比 MiniMax、Alpha-Beta 和 ExpectiMax 的决策差异和计算效率，加深对算法特性的理解。

### 游戏 AI 开发入门

对于想进入游戏 AI 领域的开发者，这是一个结构清晰、文档完善的入门项目，展示了如何将经典 AI 算法应用到实际游戏中。

## 已知问题

项目文档中记录了一个有趣的 UI Bug：当使用非伤害类技能（如"叫声"、"摇尾巴"、"影分身"等）改变状态倍率时，首次显示的文本信息会错误地显示为攻击属性更新，尽管实际更新的是正确的属性。后续使用则显示正常。

这种对已知问题的透明记录也是开源项目的良好实践。

## 总结

PokeMMon 巧妙地将经典游戏与经典算法结合，创造了一个既有趣又有教育意义的项目。它不仅是对初代宝可梦的致敬，更是博弈论和搜索算法在游戏 AI 中应用的生动教材。

对于学习人工智能的学生、游戏开发者，或者单纯想重温宝可梦对战乐趣的玩家，这个项目都值得一试。
