From 7ec7fa23de118671efaa99c5abd9626883e504c0 Mon Sep 17 00:00:00 2001 From: LHY20 <3364451258@qq.com> Date: Sun, 20 Jul 2025 00:55:06 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E8=87=B3v6.1=E7=89=88=E6=9C=AC=20-=20=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E7=BD=91=E7=BB=9C=E5=AF=B9=E6=88=98=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=E5=92=8C=E6=8A=80=E6=9C=AF=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 42 +++++++++ MD/AI_function.md | 18 +++- MD/NETWORK_README.md | 204 +++++++++++++++++++++---------------------- README.md | 17 ++-- TXT/代码统计报告.txt | 8 +- TXT/简介.txt | 14 +-- 6 files changed, 186 insertions(+), 117 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..28fd69e --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +# 编译生成的可执行文件 +*.exe +*.out +*.app + +# IDE配置文件 +.idea/ +.vscode/ +.vs/ + +# Trae AI配置文件 +.trae/ + +# 临时文件 +*.tmp +*.temp +*.log + +# 系统文件 +.DS_Store +Thumbs.db + +# 备份文件 +*.bak +*.backup + +# 调试文件 +*.pdb +*.ilk + +# 对象文件 +*.o +*.obj + +# 静态库文件 +*.lib +*.a + +# 动态库文件 +*.dll +*.so +*.dylib \ No newline at end of file diff --git a/MD/AI_function.md b/MD/AI_function.md index 270dd7a..a180656 100644 --- a/MD/AI_function.md +++ b/MD/AI_function.md @@ -1,7 +1,7 @@ # 🧠 五子棋AI实现详解 ## 📜 算法概述 -本五子棋AI采用α-β剪枝优化的极小极大算法,结合专业的棋型评估系统和多层次的威胁检测机制。 +本五子棋AI采用α-β剪枝优化的极小极大算法,结合专业的棋型评估系统和多层次的威胁检测机制。支持人机对战、双人对战和网络对战多种模式。 ```mermaid graph TD @@ -40,6 +40,14 @@ typedef struct { } DirInfo; ``` +### 🌐 网络对战支持 +```c +// 网络模式下的AI决策 +void network_ai_move(int depth, int player_id); +// 同步AI决策到网络对手 +void sync_ai_decision(int x, int y); +``` + ## ⚙️ 核心函数 ### 1. ai_move(int depth) @@ -96,6 +104,11 @@ int dfs(int x, int y, int player, int depth, int alpha, int beta, bool is_maximi - 基础难度: 3层 - 最高难度: 5层 +4. **网络优化**: + - 异步AI计算,避免网络延迟 + - 决策结果实时同步 + - 支持断线重连后状态恢复 + ## 🎯 典型场景 ### 必胜局面处理 @@ -123,9 +136,12 @@ int dfs(int x, int y, int player, int depth, int alpha, int beta, bool is_maximi 1. **调试技巧**: - 启用`DEBUG_MODE`查看搜索过程 - 使用`print_board()`可视化评估 + - 网络模式下使用`network_debug()`监控通信 2. **扩展方向**: - 添加开局库 - 实现并行搜索 - 优化评估函数 + - 增强网络对战AI适应性 + - 支持AI难度动态调整 ``` diff --git a/MD/NETWORK_README.md b/MD/NETWORK_README.md index 23279c4..d6e5333 100644 --- a/MD/NETWORK_README.md +++ b/MD/NETWORK_README.md @@ -1,146 +1,146 @@ -# ս˵ +# 五子棋网络对战使用说明 -## ܸ +## 功能概述 -Ŀսܣ̨豸ͨս֧־ͻӡ +本项目支持网络对战功能,允许两台设备通过网络进行实时五子棋对战,支持服务器/客户端连接。 -## 뷽 +## 编译方法 ```bash -gcc -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c network.c -lws2_32 +gcc -std=c17 -o gobang.exe *.c -lws2_32 ``` -**ע⣺** -- WindowsϵͳҪ `-lws2_32` -- LinuxϵͳҪ +**注意:** +- Windows系统需要添加 `-lws2_32` 链接库 +- Linux系统不需要此链接库参数 -## ʹ÷ +## 使用方法 -### 1. Ϸ -бij +### 1. 启动游戏 +运行编译后的程序 ```bash .\gobang.exe ``` -### 2. ѡսģʽ -˵ѡ `3. ս` +### 2. 选择网络对战模式 +在主菜单中选择 `3. 网络对战` -### 3. ѡģʽ +### 3. 选择连接模式 -#### ģʽ1䣨Ϊ -- ѡ `1. 䣨Ϊ` -- ˿ڣĬ8888ʹ1024-65535ΧڵĶ˿ڣ -- ʾIPַIP֪Է -- ȴԷ +#### 模式1:创建房间(作为服务器) +- 选择 `1. 创建房间(作为服务器)` +- 输入监听端口(默认8888,建议使用1024-65535范围内的端口) +- 程序会显示本机IP地址,将此IP告知对方 +- 等待对方连接 -#### ģʽ2뷿䣨ӵ -- ѡ `2. 뷿䣨ӵ` -- IPַ -- Ķ˿ںţõĶ˿һ£ -- ӵ +#### 模式2:加入房间(连接到服务器) +- 选择 `2. 加入房间(连接到服务器)` +- 输入服务器IP地址 +- 输入服务器的端口号(与服务器设置的端口一致) +- 连接到服务器 -### 4. ʼϷ -- ӳɹϷԶʼ -- Ϊ1񣩣ͻΪ2 -- 1 +### 4. 开始游戏 +- 连接成功后游戏自动开始 +- 服务器为玩家1(黑棋),客户端为玩家2(白棋) +- 玩家1先手 -## Ϸ +## 游戏操作 -### -- **** `к к`磺`7 7` -- **** `S` `s` -- **** `R` `r`ҪԷͬ⣩ +### 基本操作 +- **落子**:输入坐标 `行号 列号`,例如:`7 7` +- **认输**:输入 `S` 或 `s` +- **悔棋**:输入 `R` 或 `r`(需要对方同意) -### 繦 -- **Զͬ**ӲԶͬԷ -- **߼**Զ״̬ -- **ʱ**ֻ֧غʱƣüʱ -- **Э**ҪԷͬЧ +### 网络功能 +- **自动同步**:落子操作会自动同步给对方 +- **连接检测**:自动检测网络连接状态 +- **延时显示**:支持回合延时显示,避免过快操作 +- **悔棋协商**:悔棋需要对方同意才能生效 -## +## 网络配置 -### ˿ -- Ĭ϶˿ڣ8888 -- ö˿ڷΧ1024-65535 -- ȷǽѡ˿ڵͨ +### 端口设置 +- 默认端口:8888 +- 可设端口范围:1024-65535 +- 确保防火墙允许选定端口的通信 -### IPַ -- ****ʹIPַ磺192.168.1.100 -- ****ʹùIPַҪ·˿ת +### IP地址 +- **局域网**:使用内网IP地址,例如:192.168.1.100 +- **广域网**:使用公网IP地址,可能需要路由器端口转发 -### ǽ -ʧܣǽã +### 防火墙设置 +如果连接失败,请检查防火墙设置: -#### Windowsǽ -1. Windowsȫ -2. ѡ񡸷ǽ籣 -3. ѡӦͨǽ -4. gobang.exeб +#### Windows防火墙 +1. 打开Windows安全中心 +2. 选择"防火墙和网络保护" +3. 选择"允许应用通过防火墙" +4. 添加gobang.exe到允许列表 -#### ·ãս -ͨսҪ -1. ·ö˿ת -2. ѡ˿תIP -3. ·ĹIP֪Է +#### 路由器设置(用于广域网对战) +如果通过互联网对战,可能需要: +1. 在路由器中设置端口转发 +2. 将选定端口转发到服务器内网IP +3. 将路由器的公网IP告知对方 -## ų +## 故障排除 -### +### 常见问题 -1. **ʧ** - - IPַͶ˿Ƿȷ - - ȷϷǽ - - ȷ̨豸ͨ +1. **连接失败** + - 检查IP地址和端口是否正确 + - 确认防火墙设置 + - 确保两台设备网络连通 -2. **Ϸж** - - ȶ - - Ϸ +2. **游戏中断** + - 检查网络连接稳定性 + - 重新启动游戏重新连接 -3. **˿ڱռ** - - ˿ں - - رռö˿ڵ +3. **端口被占用** + - 更换其他端口号 + - 关闭占用端口的其他程序 -### -ʹͨԣ +### 网络测试 +可以使用以下命令测试网络连通性: ```bash -# ͨ -ping <ԷIPַ> +# 测试网络连通 +ping <对方IP地址> -# Զ˿ڣҪtelnetͻˣ -telnet <ԷIPַ> <˿ں> +# 测试端口(需要telnet客户端) +telnet <对方IP地址> <端口号> ``` -## +## 技术细节 -- **Э**TCP/IP -- **Ϣʽ**ԶЭ -- **ֹ֧** - - ͬ - - 䴦 - - Э - - ߼ - - +- **协议**:TCP/IP +- **消息格式**:自定义二进制协议 +- **支持功能**: + - 棋盘同步 + - 悔棋处理 + - 认输协商 + - 连接检测 + - 延时控制 -## ȫע +## 安全注意事项 -1. **ʹ**԰ȫʺϼͥ칫һ -2. **ʹ** - - ҪʹĬ϶˿8888 - - Ϸʱرճ - - עⱣϢ +1. **局域网使用**:建议安全的家庭或办公环境 +2. **广域网使用**: + - 不要使用默认端口8888 + - 游戏结束后及时关闭程序 + - 注意保护个人网络信息 -## ־ +## 更新日志 -### v1.0 (2025-01-15) -- ս -- ֧TCP/IP -- ʵͬ -- ӻЭ̻ -- ֶ֧߼ -- Ϸܣʱֹȣ +### v6.1 (2025-07-10) +- 完善网络对战功能 +- 支持TCP/IP通信 +- 实现棋盘同步 +- 连接状态和协议优化 +- 支持多种操作 +- 添加延时控制等游戏功能(延时显示、认输、悔棋等) --- -**ߣ** -**ϵ䣺** 3364451258@qq.com -**Ŀҳ** https://github.com/LHY0125/Gobang-Game \ No newline at end of file +**开发者:** 刘航宇 +**联系邮箱:** 3364451258@qq.com +**项目主页:** https://github.com/LHY0125/Gobang-Game \ No newline at end of file diff --git a/README.md b/README.md index 9542157..8363d1e 100644 --- a/README.md +++ b/README.md @@ -2,22 +2,23 @@ ![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) +![Version](https://img.shields.io/badge/version-v6.1-blue) ![Platform](https://img.shields.io/badge/platform-Windows-lightgrey) -> 🎯 **最新版本 v6.0** - 网络功能重大更新,新增在线对战、全局变量统一管理等核心功能 +> 🎯 **最新版本 v6.1** - 网络功能完善更新,优化在线对战体验、全局变量统一管理等核心功能 ## 📋 大版本更新 -### v6.0 (2025-07-10) - 网络功能重大更新 +### v6.1 (2025-07-10) - 网络功能完善更新 - 🌐 **网络对战模式** - 支持在线多人实时对战功能 - 🔗 **服务器/客户端架构** - 完整的网络通信框架 - 📡 **实时数据同步** - 棋盘状态和游戏进度实时同步 - 🛡️ **网络安全验证** - 基本的数据验证和防作弊检测 -- 📊 **连接状态管理** - 自动断线重连和延迟显示 +- 📊 **连接状态管理** - 自动连接检测和延迟显示 - 🏗️ **全局变量统一管理** - 优化代码结构和可维护性 - 🔧 **宏定义统一管理** - 消除重复定义,提高代码质量 - ⚙️ **网络配置系统** - 支持服务器地址和端口配置 +- 🔄 **协议优化** - 改进网络通信协议和错误处理 ## 目录 - [C语言五子棋对战系统](#c语言五子棋对战系统) @@ -99,20 +100,22 @@ - **内存优化管理** - 高效的内存使用和资源管理 - **配置文件支持** - 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 globals.c network.c +gcc -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c globals.c network.c -lws2_32 ``` 或者使用优化编译: ```bash -gcc -O2 -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c globals.c network.c +gcc -O2 -o gobang.exe main.c gobang.c game_mode.c ai.c record.c init_board.c ui.c config.c globals.c network.c -lws2_32 ``` +**注意:** Windows系统需要添加 `-lws2_32` 链接库以支持网络功能 + ### 运行游戏 ```bash .\gobang.exe diff --git a/TXT/代码统计报告.txt b/TXT/代码统计报告.txt index 5d78eca..726b7a9 100644 --- a/TXT/代码统计报告.txt +++ b/TXT/代码统计报告.txt @@ -5,6 +5,7 @@ 统计时间:2025年7月10日 项目版本:v6.1 开发语言:C语言 +GitHub仓库:https://github.com/LHY0125/Gobang-Game.git ======================================== 📊 代码行数统计 @@ -22,7 +23,7 @@ ├── network.c :426行 └── globals.c :37行 -【头文件 (.h)】3 +【头文件 (.h)】 ├── gobang.h :101行 ├── game_mode.h :99行 ├── ai.h :39行 @@ -94,6 +95,8 @@ • 详细的游戏记录与复盘功能 • 规范的禁手规则实现 • 实时计时器系统 +• 全局变量统一管理 +• 跨平台网络通信支持 【总体评价】 这是一个非常优秀的C语言项目,代码量适中但功能完整, @@ -103,6 +106,9 @@ 包括人机对战、双人对战和网络对战,功能丰富,架构清晰, 是C语言项目开发的优秀范例。 +网络对战功能的加入使得项目具备了现代化游戏的特征, +支持实时在线对战,为用户提供了更丰富的游戏体验。 + ======================================== 📋 项目文件结构 ======================================== diff --git a/TXT/简介.txt b/TXT/简介.txt index 92a5a06..8634703 100644 --- a/TXT/简介.txt +++ b/TXT/简介.txt @@ -6,13 +6,14 @@ * @date 2025-07-10 * @version 6.1 * @note - * 1. v6.0新增功能: - * - 🌐 完整的网络对战模式,支持服务器/客户端架构 - * - 🔗 实时数据同步,支持落子、悔棋、认输、聊天等网络功能 + * 1. v6.1完善功能: + * - 🌐 完善的网络对战模式,支持服务器/客户端架构 + * - 🔗 实时数据同步,支持落子、悔棋、认输等网络功能 * - 🛡️ 网络安全验证和连接状态管理 * - 📡 跨平台网络支持(Windows/Linux) * - 🔧 全局变量统一管理,优化代码结构 * - 📋 宏定义统一管理,消除重复定义 + * - 🔄 网络协议优化,改进通信稳定性 * 2. 核心游戏功能: * - 增加了对禁手规则的支持,防止玩家进行无意义的走法。 * - 新增了游戏计时器功能,限制每回合的思考时间。 @@ -52,7 +53,7 @@ * 8. 版本控制: * - 📦 使用Git进行版本控制,便于代码管理和协作开发 * - 🚀 建立了清晰的版本发布流程,确保代码质量 - * - 🏷️ v6.0重大版本更新,网络功能里程碑 + * - 🏷️ v6.1版本更新,网络功能完善优化 * - 📋 完整的变更日志,追踪功能演进 * 9. 测试: * - ✅ 进行了全面的功能测试,确保各项功能正常运行 @@ -60,17 +61,18 @@ * - ⚡ 进行了性能测试,优化了程序的运行效率 * - 🌐 网络功能压力测试,确保多人对战稳定性 * - 🔒 安全性测试,验证网络通信安全 + * - 🔄 协议兼容性测试,确保通信协议稳定 * 10. 开源协议: * - 📄 选择了MIT开源协议,允许用户自由使用、修改和分发代码 * - 🤝 欢迎社区贡献,共同完善项目 * 11. 贡献者: * - 👨‍💻 感谢所有为项目做出贡献的开发者和用户 - * - 🌟 特别感谢网络功能开发和测试的贡献者 + * - 🌟 特别感谢网络功能开发、测试和优化的贡献者 * 12. 联系信息: * - 📧 如有问题或建议,请联系开发者: * - 3364451258@qq.com * - 15236416560@163.com * - lhy3364451258@outlook.com * - 🐛 Bug报告和功能建议欢迎通过邮件反馈 - * - 💡 网络对战相关问题请详细描述网络环境 + * - 💡 网络对战相关问题请详细描述网络环境和连接状态 */ \ No newline at end of file