mirror of
https://github.com/LHY0125/Gobang-Game.git
synced 2026-05-09 18:09:46 +08:00
更新项目文档至v6.1版本 - 完善网络对战功能说明和技术文档
This commit is contained in:
+42
@@ -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
|
||||
+17
-1
@@ -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难度动态调整
|
||||
```
|
||||
|
||||
+102
-102
@@ -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. 启动游戏
|
||||
运行编译后的程序:
|
||||
### 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
|
||||
**开发者:** 刘航宇
|
||||
**联系邮箱:** 3364451258@qq.com
|
||||
**项目主页:** https://github.com/LHY0125/Gobang-Game
|
||||
@@ -2,22 +2,23 @@
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
> 🎯 **最新版本 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
|
||||
|
||||
+7
-1
@@ -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语言项目开发的优秀范例。
|
||||
|
||||
网络对战功能的加入使得项目具备了现代化游戏的特征,
|
||||
支持实时在线对战,为用户提供了更丰富的游戏体验。
|
||||
|
||||
========================================
|
||||
📋 项目文件结构
|
||||
========================================
|
||||
|
||||
+8
-6
@@ -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报告和功能建议欢迎通过邮件反馈
|
||||
* - 💡 网络对战相关问题请详细描述网络环境
|
||||
* - 💡 网络对战相关问题请详细描述网络环境和连接状态
|
||||
*/
|
||||
Reference in New Issue
Block a user