diff --git a/README.md b/README.md index 99fbcea..663f293 100644 --- a/README.md +++ b/README.md @@ -1,178 +1,178 @@ -# C语言五子棋人机对战AI +# C璇█浜斿瓙妫嬩汉鏈哄鎴楢I ![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-v4.0-blue) +![Version](https://img.shields.io/badge/version-v5.0-blue) ![Platform](https://img.shields.io/badge/platform-Windows-lightgrey) -> ? **最新版本 v4.0** - 全面重构,新增配置管理、复盘分析、评分系统等核心功能 +> 馃幆 **鏈鏂扮増鏈 v5.0** - 鍏ㄩ潰閲嶆瀯锛屾柊澧為厤缃鐞嗐佸鐩樺垎鏋愩佽瘎鍒嗙郴缁熺瓑鏍稿績鍔熻兘 -## ? 版本更新 +## 馃搵 鐗堟湰鏇存柊 -### v5.0 (2025-07-10) - 重大更新 -- ? **新增配置管理系统** - 支持INI配置文件持久化 -- ? **完整复盘功能** - 逐步回放对局并提供专业评分 -- ? **智能评分系统** - 每步棋评分分析和MVP评选 -- ? **现代化UI界面** - 重新设计的用户交互界面 -- ? **模块化重构** - 清晰的代码架构,便于维护扩展 -- ?? **禁手规则支持** - 可选启用标准五子棋禁手规则 -- ?? **计时器功能** - 支持每回合时间限制设置 +### v5.0 (2025-07-10) - 閲嶅ぇ鏇存柊 +- 鉁 **鏂板閰嶇疆绠$悊绯荤粺** - 鏀寔INI閰嶇疆鏂囦欢鎸佷箙鍖 +- 馃搳 **瀹屾暣澶嶇洏鍔熻兘** - 閫愭鍥炴斁瀵瑰眬骞舵彁渚涗笓涓氳瘎鍒 +- 馃 **鏅鸿兘璇勫垎绯荤粺** - 姣忔妫嬭瘎鍒嗗垎鏋愬拰MVP璇勯 +- 馃捇 **鐜颁唬鍖朥I鐣岄潰** - 閲嶆柊璁捐鐨勭敤鎴蜂氦浜掔晫闈 +- 馃敡 **妯″潡鍖栭噸鏋** - 娓呮櫚鐨勪唬鐮佹灦鏋勶紝渚夸簬缁存姢鎵╁睍 +- 鈿 **绂佹墜瑙勫垯鏀寔** - 鍙夊惎鐢ㄦ爣鍑嗕簲瀛愭绂佹墜瑙勫垯 +- 鈴憋笍 **璁℃椂鍣ㄥ姛鑳** - 鏀寔姣忓洖鍚堟椂闂撮檺鍒惰缃 -## 目录 -- [C语言五子棋人机对战AI](#c语言五子棋人机对战ai) - - [? 版本更新](#-版本更新) - - [v5.0 (2025-07-10) - 重大更新](#v50-2025-07-10---重大更新) - - [目录](#目录) - - [项目简介](#项目简介) - - [功能特性](#功能特性) - - [? 游戏模式](#-游戏模式) - - [?? 游戏设置](#?-游戏设置) - - [? 游戏功能](#-游戏功能) - - [? 用户体验](#-用户体验) - - [? 技术特性](#-技术特性) - - [快速开始](#快速开始) - - [编译项目](#编译项目) - - [运行游戏](#运行游戏) - - [游戏玩法](#游戏玩法) - - [? 快速开始](#-快速开始) - - [? 对局操作](#-对局操作) - - [?? 配置管理](#?-配置管理) - - [? 复盘功能](#-复盘功能) - - [环境要求](#环境要求) - - [常见问题](#常见问题) - - [权限问题](#权限问题) - - [乱码显示问题](#乱码显示问题) - - [AI 设计实现](#ai-设计实现) - - [核心算法](#核心算法) - - [棋局评估函数](#棋局评估函数) - - [项目结构](#项目结构) - - [? 核心模块](#-核心模块) - - [? 功能模块](#-功能模块) - - [? 配置和文档](#-配置和文档) - - [? 开发工具](#-开发工具) - - [许可证](#许可证) - - [欢迎贡献](#欢迎贡献) - - [未来计划](#未来计划) - - [? 已完成功能](#-已完成功能) - - [? 开发路线图](#-开发路线图) - - [? 用户体验提升](#-用户体验提升) - - [? 网络功能](#-网络功能) - - [? AI增强](#-ai增强) - - [? 技术优化](#-技术优化) +## 鐩綍 +- [C璇█浜斿瓙妫嬩汉鏈哄鎴楢I](#c璇█浜斿瓙妫嬩汉鏈哄鎴榓i) + - [馃搵 鐗堟湰鏇存柊](#-鐗堟湰鏇存柊) + - [v5.0 (2025-07-10) - 閲嶅ぇ鏇存柊](#v50-2025-07-10---閲嶅ぇ鏇存柊) + - [鐩綍](#鐩綍) + - [椤圭洰绠浠媇(#椤圭洰绠浠) + - [鍔熻兘鐗规(#鍔熻兘鐗规) + - [馃幃 娓告垙妯″紡](#-娓告垙妯″紡) + - [鈿欙笍 娓告垙璁剧疆](#-娓告垙璁剧疆) + - [馃幆 娓告垙鍔熻兘](#-娓告垙鍔熻兘) + - [馃捇 鐢ㄦ埛浣撻獙](#-鐢ㄦ埛浣撻獙) + - [馃敡 鎶鏈壒鎬(#-鎶鏈壒鎬) + - [蹇熷紑濮媇(#蹇熷紑濮) + - [缂栬瘧椤圭洰](#缂栬瘧椤圭洰) + - [杩愯娓告垙](#杩愯娓告垙) + - [娓告垙鐜╂硶](#娓告垙鐜╂硶) + - [馃殌 蹇熷紑濮媇(#-蹇熷紑濮) + - [馃幆 瀵瑰眬鎿嶄綔](#-瀵瑰眬鎿嶄綔) + - [鈿欙笍 閰嶇疆绠$悊](#-閰嶇疆绠$悊) + - [馃搳 澶嶇洏鍔熻兘](#-澶嶇洏鍔熻兘) + - [鐜瑕佹眰](#鐜瑕佹眰) + - [甯歌闂](#甯歌闂) + - [鏉冮檺闂](#鏉冮檺闂) + - [涔辩爜鏄剧ず闂](#涔辩爜鏄剧ず闂) + - [AI 璁捐瀹炵幇](#ai-璁捐瀹炵幇) + - [鏍稿績绠楁硶](#鏍稿績绠楁硶) + - [妫嬪眬璇勪及鍑芥暟](#妫嬪眬璇勪及鍑芥暟) + - [椤圭洰缁撴瀯](#椤圭洰缁撴瀯) + - [馃搧 鏍稿績妯″潡](#-鏍稿績妯″潡) + - [馃幃 鍔熻兘妯″潡](#-鍔熻兘妯″潡) + - [馃搫 閰嶇疆鍜屾枃妗(#-閰嶇疆鍜屾枃妗) + - [馃敡 寮鍙戝伐鍏穄(#-寮鍙戝伐鍏) + - [璁稿彲璇乚(#璁稿彲璇) + - [娆㈣繋璐$尞](#娆㈣繋璐$尞) + - [鏈潵璁″垝](#鏈潵璁″垝) + - [鉁 宸插畬鎴愬姛鑳絔(#-宸插畬鎴愬姛鑳) + - [馃殌 寮鍙戣矾绾垮浘](#-寮鍙戣矾绾垮浘) + - [馃摫 鐢ㄦ埛浣撻獙鎻愬崌](#-鐢ㄦ埛浣撻獙鎻愬崌) + - [馃寪 缃戠粶鍔熻兘](#-缃戠粶鍔熻兘) + - [馃 AI澧炲己](#-ai澧炲己) + - [馃敡 鎶鏈紭鍖朷(#-鎶鏈紭鍖) -## 项目简介 -这是一个使用C语言实现的五子棋人机对战系统,它基于 Alpha-Beta 剪枝优化的 Minimax 算法,并支持自定义棋盘大小、游戏存档和实时悔棋。 +## 椤圭洰绠浠 +杩欐槸涓涓娇鐢–璇█瀹炵幇鐨勪簲瀛愭浜烘満瀵规垬绯荤粺锛屽畠鍩轰簬 Alpha-Beta 鍓灊浼樺寲鐨 Minimax 绠楁硶锛屽苟鏀寔鑷畾涔夋鐩樺ぇ灏忋佹父鎴忓瓨妗e拰瀹炴椂鎮旀銆 -## 功能特性 +## 鍔熻兘鐗规 -### ? 游戏模式 -- **人机对战模式** - 与智能AI进行对弈 -- **双人对战模式** - 支持本地双人游戏 -- **复盘模式** - 回顾和分析历史对局 +### 馃幃 娓告垙妯″紡 +- **浜烘満瀵规垬妯″紡** - 涓庢櫤鑳紸I杩涜瀵瑰紙 +- **鍙屼汉瀵规垬妯″紡** - 鏀寔鏈湴鍙屼汉娓告垙 +- **澶嶇洏妯″紡** - 鍥為【鍜屽垎鏋愬巻鍙插灞 -### ?? 游戏设置 -- **自定义棋盘尺寸** - 支持5x5至25x25可调节棋盘 -- **多级AI难度** - 1-5级智能难度可选 -- **配置管理系统** - 持久化保存游戏设置 -- **禁手规则支持** - 可选启用五子棋标准禁手规则 -- **回合计时器** - 可设置每回合思考时间限制 +### 鈿欙笍 娓告垙璁剧疆 +- **鑷畾涔夋鐩樺昂瀵** - 鏀寔5x5鑷25x25鍙皟鑺傛鐩 +- **澶氱骇AI闅惧害** - 1-5绾ф櫤鑳介毦搴﹀彲閫 +- **閰嶇疆绠$悊绯荤粺** - 鎸佷箙鍖栦繚瀛樻父鎴忚缃 +- **绂佹墜瑙勫垯鏀寔** - 鍙夊惎鐢ㄤ簲瀛愭鏍囧噯绂佹墜瑙勫垯 +- **鍥炲悎璁℃椂鍣** - 鍙缃瘡鍥炲悎鎬濊冩椂闂撮檺鍒 -### ? 游戏功能 -- **实时对局控制** - 悔棋、认输、保存等操作 -- **自动游戏记录** - 完整保存对局过程到CSV文件 -- **智能评分系统** - 对每步棋进行专业评分和分析 -- **完整复盘功能** - 逐步回放对局并显示评分 -- **MVP评选系统** - 自动评选对局最佳表现者 +### 馃幆 娓告垙鍔熻兘 +- **瀹炴椂瀵瑰眬鎺у埗** - 鎮旀銆佽杈撱佷繚瀛樼瓑鎿嶄綔 +- **鑷姩娓告垙璁板綍** - 瀹屾暣淇濆瓨瀵瑰眬杩囩▼鍒癈SV鏂囦欢 +- **鏅鸿兘璇勫垎绯荤粺** - 瀵规瘡姝ユ杩涜涓撲笟璇勫垎鍜屽垎鏋 +- **瀹屾暣澶嶇洏鍔熻兘** - 閫愭鍥炴斁瀵瑰眬骞舵樉绀鸿瘎鍒 +- **MVP璇勯夌郴缁** - 鑷姩璇勯夊灞鏈浣宠〃鐜拌 -### ? 用户体验 -- **现代化UI界面** - 清晰直观的终端用户界面 -- **完备输入验证** - 确保所有用户输入的有效性和安全性 -- **智能错误提示** - 详细的错误信息和操作指导 -- **跨平台兼容** - 支持Windows系统,预留跨平台扩展 +### 馃捇 鐢ㄦ埛浣撻獙 +- **鐜颁唬鍖朥I鐣岄潰** - 娓呮櫚鐩磋鐨勭粓绔敤鎴风晫闈 +- **瀹屽杈撳叆楠岃瘉** - 纭繚鎵鏈夌敤鎴疯緭鍏ョ殑鏈夋晥鎬у拰瀹夊叏鎬 +- **鏅鸿兘閿欒鎻愮ず** - 璇︾粏鐨勯敊璇俊鎭拰鎿嶄綔鎸囧 +- **璺ㄥ钩鍙板吋瀹** - 鏀寔Windows绯荤粺锛岄鐣欒法骞冲彴鎵╁睍 -### ? 技术特性 -- **模块化架构** - 清晰的代码结构,便于维护和扩展 -- **内存优化管理** - 高效的内存使用和资源管理 -- **配置文件支持** - INI格式配置文件自动加载保存 -- **UTF-8编码支持** - 完美支持中文显示 +### 馃敡 鎶鏈壒鎬 +- **妯″潡鍖栨灦鏋** - 娓呮櫚鐨勪唬鐮佺粨鏋勶紝渚夸簬缁存姢鍜屾墿灞 +- **鍐呭瓨浼樺寲绠$悊** - 楂樻晥鐨勫唴瀛樹娇鐢ㄥ拰璧勬簮绠$悊 +- **閰嶇疆鏂囦欢鏀寔** - 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` - 退出游戏 +### 馃殌 蹇熷紑濮 +1. **鍚姩娓告垙**锛氳繍琛 `gobang.exe` 杩涘叆涓昏彍鍗 +2. **閫夋嫨妯″紡**锛 + - `1` - 浜烘満瀵规垬妯″紡 + - `2` - 鍙屼汉瀵规垬妯″紡 + - `3` - 澶嶇洏妯″紡 + - `4` - 閰嶇疆绠$悊 + - `5` - 娓告垙瑙勫垯 + - `6` - 鍏充簬淇℃伅 + - `7` - 閫鍑烘父鎴 -### ? 对局操作 -- **落子**:输入坐标 (格式: `行 列`,如 `8 8`) -- **悔棋**:输入 `R` 或 `r` 撤销上一步 -- **认输**:输入 `S` 或 `s` 主动认输 -- **保存**:输入 `SAVE` 保存当前对局 -- **退出**:输入 `EXIT` 退出当前对局 +### 馃幆 瀵瑰眬鎿嶄綔 +- **钀藉瓙**锛氳緭鍏ュ潗鏍 (鏍煎紡: `琛 鍒梎锛屽 `8 8`) +- **鎮旀**锛氳緭鍏 `R` 鎴 `r` 鎾ら攢涓婁竴姝 +- **璁よ緭**锛氳緭鍏 `S` 鎴 `s` 涓诲姩璁よ緭 +- **淇濆瓨**锛氳緭鍏 `SAVE` 淇濆瓨褰撳墠瀵瑰眬 +- **閫鍑**锛氳緭鍏 `EXIT` 閫鍑哄綋鍓嶅灞 -### ?? 配置管理 -- **棋盘大小**:5x5 至 25x25 可调 (默认15x15) -- **AI难度**:1-5级智能难度 (默认3级) -- **禁手规则**:可选启用标准五子棋禁手 -- **计时器**:可设置每回合时间限制 -- **配置保存**:所有设置自动保存到 `gobang_config.ini` +### 鈿欙笍 閰嶇疆绠$悊 +- **妫嬬洏澶у皬**锛5x5 鑷 25x25 鍙皟 (榛樿15x15) +- **AI闅惧害**锛1-5绾ф櫤鑳介毦搴 (榛樿3绾) +- **绂佹墜瑙勫垯**锛氬彲閫夊惎鐢ㄦ爣鍑嗕簲瀛愭绂佹墜 +- **璁℃椂鍣**锛氬彲璁剧疆姣忓洖鍚堟椂闂撮檺鍒 +- **閰嶇疆淇濆瓨**锛氭墍鏈夎缃嚜鍔ㄤ繚瀛樺埌 `gobang_config.ini` -### ? 复盘功能 -- **自动记录**:每局游戏自动保存到 `records/` 目录 -- **逐步回放**:按步骤重现整局对弈过程 -- **评分分析**:显示每步棋的专业评分 -- **MVP评选**:自动评选本局最佳表现者 -- **胜负统计**:完整的对局结果记录 +### 馃搳 澶嶇洏鍔熻兘 +- **鑷姩璁板綍**锛氭瘡灞娓告垙鑷姩淇濆瓨鍒 `records/` 鐩綍 +- **閫愭鍥炴斁**锛氭寜姝ラ閲嶇幇鏁村眬瀵瑰紙杩囩▼ +- **璇勫垎鍒嗘瀽**锛氭樉绀烘瘡姝ユ鐨勪笓涓氳瘎鍒 +- **MVP璇勯**锛氳嚜鍔ㄨ瘎閫夋湰灞鏈浣宠〃鐜拌 +- **鑳滆礋缁熻**锛氬畬鏁寸殑瀵瑰眬缁撴灉璁板綍 -## 环境要求 -- 操作系统: Windows (当前版本使用了Windows特有的 `_kbhit()` 和 `Sleep()` 函数,因此暂不跨平台) -- 编译器: GCC (MinGW-w64) -- 终端: 支持UTF-8编码的终端 +## 鐜瑕佹眰 +- 鎿嶄綔绯荤粺: Windows (褰撳墠鐗堟湰浣跨敤浜哤indows鐗规湁鐨 `_kbhit()` 鍜 `Sleep()` 鍑芥暟锛屽洜姝ゆ殏涓嶈法骞冲彴) +- 缂栬瘧鍣: GCC (MinGW-w64) +- 缁堢: 鏀寔UTF-8缂栫爜鐨勭粓绔 -> **跨平台兼容性说明:** +> **璺ㄥ钩鍙板吋瀹规ц鏄:** > -> 为了未来在Linux或macOS等其他操作系统上运行,需要将平台特定的代码(如 `_kbhit()`)替换为跨平台的实现,或使用条件编译(`#ifdef _WIN32`)进行隔离。 +> 涓轰簡鏈潵鍦↙inux鎴杕acOS绛夊叾浠栨搷浣滅郴缁熶笂杩愯锛岄渶瑕佸皢骞冲彴鐗瑰畾鐨勪唬鐮侊紙濡 `_kbhit()`锛夋浛鎹负璺ㄥ钩鍙扮殑瀹炵幇锛屾垨浣跨敤鏉′欢缂栬瘧锛坄#ifdef _WIN32`锛夎繘琛岄殧绂汇 -## 常见问题 +## 甯歌闂 -### 权限问题 -如果在保存游戏记录时提示“无法创建文件”,这通常是由于程序缺少写入权限。请尝试以下解决方案: +### 鏉冮檺闂 +濡傛灉鍦ㄤ繚瀛樻父鎴忚褰曟椂鎻愮ず鈥滄棤娉曞垱寤烘枃浠垛濓紝杩欓氬父鏄敱浜庣▼搴忕己灏戝啓鍏ユ潈闄愩傝灏濊瘯浠ヤ笅瑙e喅鏂规锛 -1. **以管理员身份运行**:右键点击 `gobang.exe` 并在管理员权限的终端中运行程序。 -2. **更改项目目录权限**:确保项目目录不在受系统保护的目录(如 `C:\Program Files`),建议将项目放在用户目录下,例如 `D:\Code`。 -3. **手动创建 `records` 目录**:如果 `records` 目录不存在,请在 `gobang.exe` 所在目录手动创建一个。 +1. **浠ョ鐞嗗憳韬唤杩愯**锛氬彸閿偣鍑 `gobang.exe` 骞跺湪绠$悊鍛樻潈闄愮殑缁堢涓繍琛岀▼搴忋 +2. **鏇存敼椤圭洰鐩綍鏉冮檺**锛氱‘淇濋」鐩洰褰曚笉鍦ㄥ彈绯荤粺淇濇姢鐨勭洰褰曪紙濡 `C:\Program Files`锛夛紝寤鸿灏嗛」鐩斁鍦ㄧ敤鎴风洰褰曚笅锛屼緥濡 `D:\Code`銆 +3. **鎵嬪姩鍒涘缓 `records` 鐩綍**锛氬鏋 `records` 鐩綍涓嶅瓨鍦紝璇峰湪 `gobang.exe` 鎵鍦ㄧ洰褰曟墜鍔ㄥ垱寤轰竴涓 -### 乱码显示问题 -如果在Windows终端中出现中文字符显示为乱码,这是由于终端代码页不匹配导致的。请在程序运行前执行以下命令: +### 涔辩爜鏄剧ず闂 +濡傛灉鍦╓indows缁堢涓嚭鐜颁腑鏂囧瓧绗︽樉绀轰负涔辩爜锛岃繖鏄敱浜庣粓绔唬鐮侀〉涓嶅尮閰嶅鑷寸殑銆傝鍦ㄧ▼搴忚繍琛屽墠鎵ц浠ヤ笅鍛戒护锛 ```bash chcp 65001 ``` -这会把当前终端的代码页切换为UTF-8,从而正确显示中文字符。为了方便,你可以创建一个批处理文件 `.bat` 来自动执行此操作。 +杩欎細鎶婂綋鍓嶇粓绔殑浠g爜椤靛垏鎹负UTF-8锛屼粠鑰屾纭樉绀轰腑鏂囧瓧绗︺備负浜嗘柟渚匡紝浣犲彲浠ュ垱寤轰竴涓壒澶勭悊鏂囦欢 `.bat` 鏉ヨ嚜鍔ㄦ墽琛屾鎿嶄綔銆 **start_game.bat** ```batch @@ -181,93 +181,93 @@ chcp 65001 .\gobang.exe ``` -## AI 设计实现 +## AI 璁捐瀹炵幇 -项目的AI主要基于以下技术实现: +椤圭洰鐨凙I涓昏鍩轰簬浠ヤ笅鎶鏈疄鐜帮細 -### 核心算法 +### 鏍稿績绠楁硶 -- **Minimax算法 (Minimax)**:作为博弈树的基础模型,为双人对弈的每一步选择最优解法。 -- **Alpha-Beta 剪枝 (Alpha-Beta Pruning)**:对Minimax算法的重大优化,通过剪掉那些不影响最终决策的树枝来提高AI的计算效率,使其能够在有限时间内达到更深的搜索深度。 -- **搜索深度**:AI的思考深度,默认为3层,可以根据难度等级进行调整。深度越大,AI预测能力越强,但计算耗时也越长。 +- **Minimax绠楁硶 (Minimax)**锛氫綔涓哄崥寮堟爲鐨勫熀纭妯″瀷锛屼负鍙屼汉瀵瑰紙鐨勬瘡涓姝ラ夋嫨鏈浼樿В娉曘 +- **Alpha-Beta 鍓灊 (Alpha-Beta Pruning)**锛氬Minimax绠楁硶鐨勯噸澶т紭鍖栵紝閫氳繃鍓帀閭d簺涓嶅奖鍝嶆渶缁堝喅绛栫殑鏍戞灊鏉ユ彁楂楢I鐨勮绠楁晥鐜囷紝浣垮叾鑳藉鍦ㄦ湁闄愭椂闂村唴杈惧埌鏇存繁鐨勬悳绱㈡繁搴︺ +- **鎼滅储娣卞害**锛欰I鐨勬濊冩繁搴︼紝榛樿涓3灞傦紝鍙互鏍规嵁闅惧害绛夌骇杩涜璋冩暣銆傛繁搴﹁秺澶э紝AI棰勬祴鑳藉姏瓒婂己锛屼絾璁$畻鑰楁椂涔熻秺闀裤 -### 棋局评估函数 +### 妫嬪眬璇勪及鍑芥暟 -为了对棋局进行价值评估,AI使用了一套复杂的评分系统,其主要依据包括: +涓轰簡瀵规灞杩涜浠峰艰瘎浼帮紝AI浣跨敤浜嗕竴濂楀鏉傜殑璇勫垎绯荤粺锛屽叾涓昏渚濇嵁鍖呮嫭锛 -- **棋型识别 (Pattern Recognition)**:能够识别并评估游戏中的关键棋型,如“连五”、“活四”、“冲四”、“活三”等,并为每种棋型赋予不同权重。 -- **位置权重 (Positional Value)**:棋盘上不同位置的战略价值不同,中心位置通常比边缘位置更有优势。评估函数会为棋盘上的落子点附加位置分。 -- **威胁检测 (Threat Detection)**:评估那些能够直接形成制胜局面的落子点,如“四三”或“活三”,并对这些点给予极高的评价值,以抓住制胜机会。 -- **双向连通性**:在评估一个点时,会同时判断其是否拥有足够的空间形成有效棋型,避免在被封锁的位置下出无效棋。 +- **妫嬪瀷璇嗗埆 (Pattern Recognition)**锛氳兘澶熻瘑鍒苟璇勪及娓告垙涓殑鍏抽敭妫嬪瀷锛屽鈥滆繛浜斺濄佲滄椿鍥涒濄佲滃啿鍥涒濄佲滄椿涓夆濈瓑锛屽苟涓烘瘡绉嶆鍨嬭祴浜堜笉鍚屾潈閲嶃 +- **浣嶇疆鏉冮噸 (Positional Value)**锛氭鐩樹笂涓嶅悓浣嶇疆鐨勬垬鐣ヤ环鍊间笉鍚岋紝涓績浣嶇疆閫氬父姣旇竟缂樹綅缃洿鏈変紭鍔裤傝瘎浼板嚱鏁颁細涓烘鐩樹笂鐨勮惤瀛愮偣闄勫姞浣嶇疆鍒嗐 +- **濞佽儊妫娴 (Threat Detection)**锛氳瘎浼伴偅浜涜兘澶熺洿鎺ュ舰鎴愬埗鑳滃眬闈㈢殑钀藉瓙鐐癸紝濡傗滃洓涓夆濇垨鈥滄椿涓夆濓紝骞跺杩欎簺鐐圭粰浜堟瀬楂樼殑璇勪环鍊硷紝浠ユ姄浣忓埗鑳滄満浼氥 +- **鍙屽悜杩為氭**锛氬湪璇勪及涓涓偣鏃讹紝浼氬悓鏃跺垽鏂叾鏄惁鎷ユ湁瓒冲鐨勭┖闂村舰鎴愭湁鏁堟鍨嬶紝閬垮厤鍦ㄨ灏侀攣鐨勪綅缃笅鍑烘棤鏁堟銆 -## 项目结构 +## 椤圭洰缁撴瀯 -### ? 核心模块 -- **`main.c`** - 主程序入口,负责初始化与游戏模式选择 -- **`gobang.c/h`** - 核心游戏逻辑,包括棋盘操作、胜负判断 -- **`game_mode.c/h`** - 游戏模式实现 (人机对战、双人对战、复盘模式) -- **`ai.c/h`** - AI算法实现 (Minimax + Alpha-Beta剪枝) +### 馃搧 鏍稿績妯″潡 +- **`main.c`** - 涓荤▼搴忓叆鍙o紝璐熻矗鍒濆鍖栦笌娓告垙妯″紡閫夋嫨 +- **`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`** - 配置管理系统 (参数设置、文件读写) +### 馃幃 鍔熻兘妯″潡 +- **`ui.c/h`** - 鐢ㄦ埛鐣岄潰妯″潡锛岃礋璐f墍鏈夋樉绀哄拰浜や簰 +- **`record.c/h`** - 娓告垙璁板綍绯荤粺 (淇濆瓨銆佸姞杞姐佸鐩樸佽瘎鍒) +- **`init_board.c/h`** - 妫嬬洏鍒濆鍖栧拰娓告垙璁剧疆 +- **`config.c/h`** - 閰嶇疆绠$悊绯荤粺 (鍙傛暟璁剧疆銆佹枃浠惰鍐) -### ? 配置和文档 -- **`gobang_config.ini`** - 游戏配置文件 (自动生成和保存) -- **`records/`** - 对局记录目录 (CSV格式存储) -- **`MD/README.md`** - 项目说明文档 -- **`MD/AI_function.md`** - AI算法详细说明 +### 馃搫 閰嶇疆鍜屾枃妗 +- **`gobang_config.ini`** - 娓告垙閰嶇疆鏂囦欢 (鑷姩鐢熸垚鍜屼繚瀛) +- **`records/`** - 瀵瑰眬璁板綍鐩綍 (CSV鏍煎紡瀛樺偍) +- **`MD/README.md`** - 椤圭洰璇存槑鏂囨。 +- **`MD/AI_function.md`** - AI绠楁硶璇︾粏璇存槑 -### ? 开发工具 -- **`.vscode/`** - VS Code 配置文件 -- **`.idea/`** - IntelliJ IDEA 配置文件 -- **`.vs/`** - Visual Studio 配置文件 +### 馃敡 寮鍙戝伐鍏 +- **`.vscode/`** - VS Code 閰嶇疆鏂囦欢 +- **`.idea/`** - IntelliJ IDEA 閰嶇疆鏂囦欢 +- **`.vs/`** - Visual Studio 閰嶇疆鏂囦欢 -## 许可证 +## 璁稿彲璇 -本项目采用 [MIT 许可证](https://opensource.org/licenses/MIT)授权。 +鏈」鐩噰鐢 [MIT 璁稿彲璇乚(https://opensource.org/licenses/MIT)鎺堟潈銆 -这意味着你可以自由地使用、复制、修改、合并、出版、分发、再授权和/或销售本软件的副本,只需在所有副本或重要部分中包含原始的版权声明和本许可声明即可。 +杩欐剰鍛崇潃浣犲彲浠ヨ嚜鐢卞湴浣跨敤銆佸鍒躲佷慨鏀广佸悎骞躲佸嚭鐗堛佸垎鍙戙佸啀鎺堟潈鍜/鎴栭攢鍞湰杞欢鐨勫壇鏈紝鍙渶鍦ㄦ墍鏈夊壇鏈垨閲嶈閮ㄥ垎涓寘鍚師濮嬬殑鐗堟潈澹版槑鍜屾湰璁稿彲澹版槑鍗冲彲銆 -## 欢迎贡献 +## 娆㈣繋璐$尞 -我们非常欢迎任何形式的反馈和贡献!如果你发现了Bug、有功能建议,或希望改进代码,请随时通过以下方式参与: +鎴戜滑闈炲父娆㈣繋浠讳綍褰㈠紡鐨勫弽棣堝拰璐$尞锛佸鏋滀綘鍙戠幇浜咮ug銆佹湁鍔熻兘寤鸿锛屾垨甯屾湜鏀硅繘浠g爜锛岃闅忔椂閫氳繃浠ヤ笅鏂瑰紡鍙備笌锛 -- **提交 Issue**:对于问题反馈或新想法,请在 [GitHub Issues](https://github.com/LHY0125/Gobang-Game/issues) 页面提交详细描述。 -- **发起 Pull Request**:如果你对源码进行了改进,欢迎提交 Pull Request。请确保你的代码风格与项目保持一致,并提供清晰的改动说明。 +- **鎻愪氦 Issue**锛氬浜庨棶棰樺弽棣堟垨鏂版兂娉曪紝璇峰湪 [GitHub Issues](https://github.com/LHY0125/Gobang-Game/issues) 椤甸潰鎻愪氦璇︾粏鎻忚堪銆 +- **鍙戣捣 Pull Request**锛氬鏋滀綘瀵规簮鐮佽繘琛屼簡鏀硅繘锛屾杩庢彁浜 Pull Request銆傝纭繚浣犵殑浠g爜椋庢牸涓庨」鐩繚鎸佷竴鑷达紝骞舵彁渚涙竻鏅扮殑鏀瑰姩璇存槑銆 -你的每一次贡献都将使这个项目变得更好! +浣犵殑姣忎竴娆¤础鐚兘灏嗕娇杩欎釜椤圭洰鍙樺緱鏇村ソ锛 -## 未来计划 +## 鏈潵璁″垝 -### ? 已完成功能 -- [x] **模块化架构设计** - 完成代码重构,实现清晰的模块分离 -- [x] **配置管理系统** - 实现INI配置文件的自动加载和保存 -- [x] **完整复盘功能** - 支持对局记录、回放和专业评分分析 -- [x] **用户界面优化** - 实现现代化的终端UI界面 -- [x] **智能评分系统** - 完成每步棋的评分和MVP评选功能 -- [x] **禁手规则支持** - 添加标准五子棋禁手规则选项 +### 鉁 宸插畬鎴愬姛鑳 +- [x] **妯″潡鍖栨灦鏋勮璁** - 瀹屾垚浠g爜閲嶆瀯锛屽疄鐜版竻鏅扮殑妯″潡鍒嗙 +- [x] **閰嶇疆绠$悊绯荤粺** - 瀹炵幇INI閰嶇疆鏂囦欢鐨勮嚜鍔ㄥ姞杞藉拰淇濆瓨 +- [x] **瀹屾暣澶嶇洏鍔熻兘** - 鏀寔瀵瑰眬璁板綍銆佸洖鏀惧拰涓撲笟璇勫垎鍒嗘瀽 +- [x] **鐢ㄦ埛鐣岄潰浼樺寲** - 瀹炵幇鐜颁唬鍖栫殑缁堢UI鐣岄潰 +- [x] **鏅鸿兘璇勫垎绯荤粺** - 瀹屾垚姣忔妫嬬殑璇勫垎鍜孧VP璇勯夊姛鑳 +- [x] **绂佹墜瑙勫垯鏀寔** - 娣诲姞鏍囧噯浜斿瓙妫嬬鎵嬭鍒欓夐」 -### ? 开发路线图 +### 馃殌 寮鍙戣矾绾垮浘 -#### ? 用户体验提升 -- [ ] **图形用户界面 (GUI)**:使用 `SDL2` 或 `Qt` 开发现代化图形界面 -- [ ] **主题系统**:支持多种UI主题和棋盘样式 -- [ ] **音效系统**:添加落子音效和背景音乐 +#### 馃摫 鐢ㄦ埛浣撻獙鎻愬崌 +- [ ] **鍥惧舰鐢ㄦ埛鐣岄潰 (GUI)**锛氫娇鐢 `SDL2` 鎴 `Qt` 寮鍙戠幇浠e寲鍥惧舰鐣岄潰 +- [ ] **涓婚绯荤粺**锛氭敮鎸佸绉峌I涓婚鍜屾鐩樻牱寮 +- [ ] **闊虫晥绯荤粺**锛氭坊鍔犺惤瀛愰煶鏁堝拰鑳屾櫙闊充箰 -#### ? 网络功能 -- [ ] **在线对战模式**:实现网络多人对战功能 -- [ ] **排行榜系统**:在线玩家等级和排名系统 -- [ ] **观战功能**:支持观看其他玩家对局 +#### 馃寪 缃戠粶鍔熻兘 +- [ ] **鍦ㄧ嚎瀵规垬妯″紡**锛氬疄鐜扮綉缁滃浜哄鎴樺姛鑳 +- [ ] **鎺掕姒滅郴缁**锛氬湪绾跨帺瀹剁瓑绾у拰鎺掑悕绯荤粺 +- [ ] **瑙傛垬鍔熻兘**锛氭敮鎸佽鐪嬪叾浠栫帺瀹跺灞 -#### ? AI增强 -- [ ] **开局库系统**:集成专业开局棋谱数据库 -- [ ] **神经网络AI**:基于深度学习的高级AI对手 -- [ ] **AI训练模式**:允许AI通过对局学习和改进 +#### 馃 AI澧炲己 +- [ ] **寮灞搴撶郴缁**锛氶泦鎴愪笓涓氬紑灞妫嬭氨鏁版嵁搴 +- [ ] **绁炵粡缃戠粶AI**锛氬熀浜庢繁搴﹀涔犵殑楂樼骇AI瀵规墜 +- [ ] **AI璁粌妯″紡**锛氬厑璁窤I閫氳繃瀵瑰眬瀛︿範鍜屾敼杩 -#### ? 技术优化 -- [ ] **跨平台支持**:完整支持Linux和macOS系统 -- [ ] **性能优化**:多线程搜索和内存优化 -- [ ] **数据库支持**:使用SQLite存储对局历史和统计 \ No newline at end of file +#### 馃敡 鎶鏈紭鍖 +- [ ] **璺ㄥ钩鍙版敮鎸**锛氬畬鏁存敮鎸丩inux鍜宮acOS绯荤粺 +- [ ] **鎬ц兘浼樺寲**锛氬绾跨▼鎼滅储鍜屽唴瀛樹紭鍖 +- [ ] **鏁版嵁搴撴敮鎸**锛氫娇鐢⊿QLite瀛樺偍瀵瑰眬鍘嗗彶鍜岀粺璁