Files
Gobang-Game/README.md
T
2025-07-10 10:14:12 +08:00

274 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# C语言五子棋人机对战AI
![Build Status](https://img.shields.io/badge/build-passing-brightgreen)
![License](https://img.shields.io/badge/license-MIT-blue)
![Version](https://img.shields.io/badge/version-v5.0-blue)
![Platform](https://img.shields.io/badge/platform-Windows-lightgrey)
> 🎯 **最新版本 v5.0** - 全面重构,新增配置管理、复盘分析、评分系统等核心功能
## 📋 版本更新
### v5.0 (2025-07-10) - 重大更新
-**新增配置管理系统** - 支持INI配置文件持久化
- 📊 **完整复盘功能** - 逐步回放对局并提供专业评分
- 🧠 **智能评分系统** - 每步棋评分分析和MVP评选
- 💻 **现代化UI界面** - 重新设计的用户交互界面
- 🔧 **模块化重构** - 清晰的代码架构,便于维护扩展
-**禁手规则支持** - 可选启用标准五子棋禁手规则
- ⏱️ **计时器功能** - 支持每回合时间限制设置
## 目录
- [C语言五子棋人机对战AI](#c语言五子棋人机对战ai)
- [📋 版本更新](#-版本更新)
- [v5.0 (2025-07-10) - 重大更新](#v50-2025-07-10---重大更新)
- [目录](#目录)
- [项目简介](#项目简介)
- [功能特性](#功能特性)
- [🎮 游戏模式](#-游戏模式)
- [⚙️ 游戏设置](#-游戏设置)
- [🎯 游戏功能](#-游戏功能)
- [💻 用户体验](#-用户体验)
- [🔧 技术特性](#-技术特性)
- [快速开始](#快速开始)
- [编译项目](#编译项目)
- [运行游戏](#运行游戏)
- [游戏玩法](#游戏玩法)
- [🚀 快速开始](#-快速开始)
- [🎯 对局操作](#-对局操作)
- [⚙️ 配置管理](#-配置管理)
- [📊 复盘功能](#-复盘功能)
- [环境要求](#环境要求)
- [常见问题](#常见问题)
- [权限问题](#权限问题)
- [乱码显示问题](#乱码显示问题)
- [AI 设计实现](#ai-设计实现)
- [核心算法](#核心算法)
- [棋局评估函数](#棋局评估函数)
- [项目结构](#项目结构)
- [📁 核心模块](#-核心模块)
- [🎮 功能模块](#-功能模块)
- [📄 配置和文档](#-配置和文档)
- [🔧 开发工具](#-开发工具)
- [许可证](#许可证)
- [欢迎贡献](#欢迎贡献)
- [未来计划](#未来计划)
- [✅ 已完成功能](#-已完成功能)
- [🚀 开发路线图](#-开发路线图)
- [📱 用户体验提升](#-用户体验提升)
- [🌐 网络功能](#-网络功能)
- [🧠 AI增强](#-ai增强)
- [🔧 技术优化](#-技术优化)
## 项目简介
这是一个使用C语言实现的五子棋人机对战系统,它基于 Alpha-Beta 剪枝优化的 Minimax 算法,并支持自定义棋盘大小、游戏存档和实时悔棋。
## 功能特性
### 🎮 游戏模式
- **人机对战模式** - 与智能AI进行对弈
- **双人对战模式** - 支持本地双人游戏
- **复盘模式** - 回顾和分析历史对局
### ⚙️ 游戏设置
- **自定义棋盘尺寸** - 支持5x5至25x25可调节棋盘
- **多级AI难度** - 1-5级智能难度可选
- **配置管理系统** - 持久化保存游戏设置
- **禁手规则支持** - 可选启用五子棋标准禁手规则
- **回合计时器** - 可设置每回合思考时间限制
### 🎯 游戏功能
- **实时对局控制** - 悔棋、认输、保存等操作
- **自动游戏记录** - 完整保存对局过程到CSV文件
- **智能评分系统** - 对每步棋进行专业评分和分析
- **完整复盘功能** - 逐步回放对局并显示评分
- **MVP评选系统** - 自动评选对局最佳表现者
### 💻 用户体验
- **现代化UI界面** - 清晰直观的终端用户界面
- **完备输入验证** - 确保所有用户输入的有效性和安全性
- **智能错误提示** - 详细的错误信息和操作指导
- **跨平台兼容** - 支持Windows系统,预留跨平台扩展
### 🔧 技术特性
- **模块化架构** - 清晰的代码结构,便于维护和扩展
- **内存优化管理** - 高效的内存使用和资源管理
- **配置文件支持** - INI格式配置文件自动加载保存
- **UTF-8编码支持** - 完美支持中文显示
## 快速开始
### 编译项目
```bash
gcc -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c
```
或者使用优化编译:
```bash
gcc -O2 -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c
```
### 运行游戏
```bash
.\gobang.exe
```
## 游戏玩法
### 🚀 快速开始
1. **启动游戏**:运行 `gobang.exe` 进入主菜单
2. **选择模式**
- `1` - 人机对战模式
- `2` - 双人对战模式
- `3` - 复盘模式
- `4` - 配置管理
- `5` - 游戏规则
- `6` - 关于信息
- `7` - 退出游戏
### 🎯 对局操作
- **落子**:输入坐标 (格式: `行 列`,如 `8 8`)
- **悔棋**:输入 `R``r` 撤销上一步
- **认输**:输入 `S``s` 主动认输
- **保存**:输入 `SAVE` 保存当前对局
- **退出**:输入 `EXIT` 退出当前对局
### ⚙️ 配置管理
- **棋盘大小**5x5 至 25x25 可调 (默认15x15)
- **AI难度**1-5级智能难度 (默认3级)
- **禁手规则**:可选启用标准五子棋禁手
- **计时器**:可设置每回合时间限制
- **配置保存**:所有设置自动保存到 `gobang_config.ini`
### 📊 复盘功能
- **自动记录**:每局游戏自动保存到 `records/` 目录
- **逐步回放**:按步骤重现整局对弈过程
- **评分分析**:显示每步棋的专业评分
- **MVP评选**:自动评选本局最佳表现者
- **胜负统计**:完整的对局结果记录
## 环境要求
- 操作系统: Windows (当前版本使用了Windows特有的 `_kbhit()``Sleep()` 函数,因此暂不跨平台)
- 编译器: GCC (MinGW-w64)
- 终端: 支持UTF-8编码的终端
> **跨平台兼容性说明:**
>
> 为了未来在Linux或macOS等其他操作系统上运行,需要将平台特定的代码(如 `_kbhit()`)替换为跨平台的实现,或使用条件编译(`#ifdef _WIN32`)进行隔离。
## 常见问题
### 权限问题
如果在保存游戏记录时提示“无法创建文件”,这通常是由于程序缺少写入权限。请尝试以下解决方案:
1. **以管理员身份运行**:右键点击 `gobang.exe` 并在管理员权限的终端中运行程序。
2. **更改项目目录权限**:确保项目目录不在受系统保护的目录(如 `C:\Program Files`),建议将项目放在用户目录下,例如 `D:\Code`
3. **手动创建 `records` 目录**:如果 `records` 目录不存在,请在 `gobang.exe` 所在目录手动创建一个。
### 乱码显示问题
如果在Windows终端中出现中文字符显示为乱码,这是由于终端代码页不匹配导致的。请在程序运行前执行以下命令:
```bash
chcp 65001
```
这会把当前终端的代码页切换为UTF-8,从而正确显示中文字符。为了方便,你可以创建一个批处理文件 `.bat` 来自动执行此操作。
**start_game.bat**
```batch
@echo off
chcp 65001
.\gobang.exe
```
## AI 设计实现
项目的AI主要基于以下技术实现:
### 核心算法
- **Minimax算法 (Minimax)**:作为博弈树的基础模型,为双人对弈的每一步选择最优解法。
- **Alpha-Beta 剪枝 (Alpha-Beta Pruning)**:对Minimax算法的重大优化,通过剪掉那些不影响最终决策的树枝来提高AI的计算效率,使其能够在有限时间内达到更深的搜索深度。
- **搜索深度**:AI的思考深度,默认为3层,可以根据难度等级进行调整。深度越大,AI预测能力越强,但计算耗时也越长。
### 棋局评估函数
为了对棋局进行价值评估,AI使用了一套复杂的评分系统,其主要依据包括:
- **棋型识别 (Pattern Recognition)**:能够识别并评估游戏中的关键棋型,如“连五”、“活四”、“冲四”、“活三”等,并为每种棋型赋予不同权重。
- **位置权重 (Positional Value)**:棋盘上不同位置的战略价值不同,中心位置通常比边缘位置更有优势。评估函数会为棋盘上的落子点附加位置分。
- **威胁检测 (Threat Detection)**:评估那些能够直接形成制胜局面的落子点,如“四三”或“活三”,并对这些点给予极高的评价值,以抓住制胜机会。
- **双向连通性**:在评估一个点时,会同时判断其是否拥有足够的空间形成有效棋型,避免在被封锁的位置下出无效棋。
## 项目结构
### 📁 核心模块
- **`main.c`** - 主程序入口,负责初始化与游戏模式选择
- **`gobang.c/h`** - 核心游戏逻辑,包括棋盘操作、胜负判断
- **`game_mode.c/h`** - 游戏模式实现 (人机对战、双人对战、复盘模式)
- **`ai.c/h`** - AI算法实现 (Minimax + Alpha-Beta剪枝)
### 🎮 功能模块
- **`ui.c/h`** - 用户界面模块,负责所有显示和交互
- **`record.c/h`** - 游戏记录系统 (保存、加载、复盘、评分)
- **`init_board.c/h`** - 棋盘初始化和游戏设置
- **`config.c/h`** - 配置管理系统 (参数设置、文件读写)
### 📄 配置和文档
- **`gobang_config.ini`** - 游戏配置文件 (自动生成和保存)
- **`records/`** - 对局记录目录 (CSV格式存储)
- **`MD/README.md`** - 项目说明文档
- **`MD/AI_function.md`** - AI算法详细说明
### 🔧 开发工具
- **`.vscode/`** - VS Code 配置文件
- **`.idea/`** - IntelliJ IDEA 配置文件
- **`.vs/`** - Visual Studio 配置文件
## 许可证
本项目采用 [MIT 许可证](https://opensource.org/licenses/MIT)授权。
这意味着你可以自由地使用、复制、修改、合并、出版、分发、再授权和/或销售本软件的副本,只需在所有副本或重要部分中包含原始的版权声明和本许可声明即可。
## 欢迎贡献
我们非常欢迎任何形式的反馈和贡献!如果你发现了Bug、有功能建议,或希望改进代码,请随时通过以下方式参与:
- **提交 Issue**:对于问题反馈或新想法,请在 [GitHub Issues](https://github.com/LHY0125/Gobang-Game/issues) 页面提交详细描述。
- **发起 Pull Request**:如果你对源码进行了改进,欢迎提交 Pull Request。请确保你的代码风格与项目保持一致,并提供清晰的改动说明。
你的每一次贡献都将使这个项目变得更好!
## 未来计划
### ✅ 已完成功能
- [x] **模块化架构设计** - 完成代码重构,实现清晰的模块分离
- [x] **配置管理系统** - 实现INI配置文件的自动加载和保存
- [x] **完整复盘功能** - 支持对局记录、回放和专业评分分析
- [x] **用户界面优化** - 实现现代化的终端UI界面
- [x] **智能评分系统** - 完成每步棋的评分和MVP评选功能
- [x] **禁手规则支持** - 添加标准五子棋禁手规则选项
### 🚀 开发路线图
#### 📱 用户体验提升
- [ ] **图形用户界面 (GUI)**:使用 `SDL2``Qt` 开发现代化图形界面
- [ ] **主题系统**:支持多种UI主题和棋盘样式
- [ ] **音效系统**:添加落子音效和背景音乐
#### 🌐 网络功能
- [ ] **在线对战模式**:实现网络多人对战功能
- [ ] **排行榜系统**:在线玩家等级和排名系统
- [ ] **观战功能**:支持观看其他玩家对局
#### 🧠 AI增强
- [ ] **开局库系统**:集成专业开局棋谱数据库
- [ ] **神经网络AI**:基于深度学习的高级AI对手
- [ ] **AI训练模式**:允许AI通过对局学习和改进
#### 🔧 技术优化
- [ ] **跨平台支持**:完整支持Linux和macOS系统
- [ ] **性能优化**:多线程搜索和内存优化
- [ ] **数据库支持**:使用SQLite存储对局历史和统计