diff --git a/NETWORK_README.md b/NETWORK_README.md new file mode 100644 index 0000000..23279c4 --- /dev/null +++ b/NETWORK_README.md @@ -0,0 +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 +``` + +**注意:** +- Windows系统需要链接 `-lws2_32` 网络库 +- Linux系统不需要额外的网络库链接 + +## 使用方法 + +### 1. 启动游戏 +运行编译后的程序: +```bash +.\gobang.exe +``` + +### 2. 选择网络对战模式 +在主菜单中选择 `3. 网络对战` + +### 3. 选择连接模式 + +#### 模式1:创建房间(作为主机) +- 选择 `1. 创建房间(作为主机)` +- 输入监听端口(默认8888,建议使用1024-65535范围内的端口) +- 程序会显示本机IP地址,将此IP告知对方玩家 +- 等待对方连接 + +#### 模式2:加入房间(连接到主机) +- 选择 `2. 加入房间(连接到主机)` +- 输入主机的IP地址 +- 输入主机的端口号(与主机设置的端口一致) +- 连接到主机 + +### 4. 开始游戏 +- 连接成功后,游戏自动开始 +- 主机为玩家1(●),客户端为玩家2(○) +- 玩家1先手 + +## 游戏操作 + +### 基本操作 +- **落子**:输入坐标 `行号 列号`(如:`7 7`) +- **认输**:输入 `S` 或 `s` +- **悔棋**:输入 `R` 或 `r`(需要对方同意) + +### 网络功能 +- **自动同步**:落子操作会自动同步到对方 +- **断线检测**:自动检测网络连接状态 +- **超时处理**:支持回合时间限制(如果启用计时器) +- **悔棋协商**:悔棋需要对方同意才能生效 + +## 网络配置 + +### 端口设置 +- 默认端口:8888 +- 可用端口范围:1024-65535 +- 确保防火墙允许所选端口的通信 + +### IP地址 +- **局域网**:使用内网IP地址(如:192.168.1.100) +- **互联网**:使用公网IP地址,可能需要路由器端口转发 + +### 防火墙设置 +如果连接失败,请检查防火墙设置: + +#### Windows防火墙 +1. 打开Windows安全中心 +2. 选择「防火墙和网络保护」 +3. 选择「允许应用通过防火墙」 +4. 添加gobang.exe到允许列表 + +#### 路由器设置(互联网对战) +如需通过互联网对战,主机方需要: +1. 在路由器中设置端口转发 +2. 将选定端口转发到主机的内网IP +3. 将路由器的公网IP告知对方 + +## 故障排除 + +### 常见问题 + +1. **连接失败** + - 检查IP地址和端口是否正确 + - 确认防火墙设置 + - 确保两台设备网络连通 + +2. **游戏中断** + - 检查网络连接稳定性 + - 重新启动游戏并重新连接 + +3. **端口被占用** + - 更换其他端口号 + - 关闭占用端口的其他程序 + +### 网络测试 +可以使用以下命令测试网络连通性: +```bash +# 测试连通性 +ping <对方IP地址> + +# 测试端口(需要telnet客户端) +telnet <对方IP地址> <端口号> +``` + +## 技术特性 + +- **协议**:TCP/IP +- **消息格式**:自定义二进制协议 +- **支持功能**: + - 落子同步 + - 认输处理 + - 悔棋协商 + - 断线检测 + - 心跳保活 + +## 安全注意事项 + +1. **局域网使用**:相对安全,适合家庭或办公室环境 +2. **互联网使用**: + - 不要使用默认端口8888 + - 游戏结束后及时关闭程序 + - 注意保护个人网络信息 + +## 更新日志 + +### v1.0 (2025-01-15) +- 新增网络对战功能 +- 支持TCP/IP连接 +- 实现落子同步 +- 添加悔棋协商机制 +- 支持断线检测 +- 兼容现有游戏功能(计时器、禁手规则等) + +--- + +**开发者:** 刘航宇 +**联系邮箱:** 3364451258@qq.com +**项目主页:** https://github.com/LHY0125/Gobang-Game \ No newline at end of file diff --git a/README.md b/README.md index 27110c9..30d8d5c 100644 --- a/README.md +++ b/README.md @@ -5,18 +5,19 @@ ![Version](https://img.shields.io/badge/version-v5.0-blue) ![Platform](https://img.shields.io/badge/platform-Windows-lightgrey) -> 馃幆 **鏈鏂扮増鏈 v5.0** - 鍏ㄩ潰閲嶆瀯锛屾柊澧為厤缃鐞嗐佸鐩樺垎鏋愩佽瘎鍒嗙郴缁熺瓑鏍稿績鍔熻兘 +> 馃幆 **鏈鏂扮増鏈 v6.0** - 缃戠粶鍔熻兘閲嶅ぇ鏇存柊锛屾柊澧炲湪绾垮鎴樸佸叏灞鍙橀噺缁熶竴绠$悊绛夋牳蹇冨姛鑳 ## 馃搵 澶х増鏈洿鏂 -### v5.0 (2025-07-10) - 閲嶅ぇ鏇存柊 -- 鉁 **鏂板閰嶇疆绠$悊绯荤粺** - 鏀寔INI閰嶇疆鏂囦欢鎸佷箙鍖 -- 馃搳 **瀹屾暣澶嶇洏鍔熻兘** - 閫愭鍥炴斁瀵瑰眬骞舵彁渚涗笓涓氳瘎鍒 -- 馃 **鏅鸿兘璇勫垎绯荤粺** - 姣忔妫嬭瘎鍒嗗垎鏋愬拰MVP璇勯 -- 馃捇 **鐜颁唬鍖朥I鐣岄潰** - 閲嶆柊璁捐鐨勭敤鎴蜂氦浜掔晫闈 -- 馃敡 **妯″潡鍖栭噸鏋** - 娓呮櫚鐨勪唬鐮佹灦鏋勶紝渚夸簬缁存姢鎵╁睍 -- 鈿 **绂佹墜瑙勫垯鏀寔** - 鍙夊惎鐢ㄦ爣鍑嗕簲瀛愭绂佹墜瑙勫垯 -- 鈴憋笍 **璁℃椂鍣ㄥ姛鑳** - 鏀寔姣忓洖鍚堟椂闂撮檺鍒惰缃 +### v6.0 (2025-07-10) - 缃戠粶鍔熻兘閲嶅ぇ鏇存柊 +- 馃寪 **缃戠粶瀵规垬妯″紡** - 鏀寔鍦ㄧ嚎澶氫汉瀹炴椂瀵规垬鍔熻兘 +- 馃敆 **鏈嶅姟鍣/瀹㈡埛绔灦鏋** - 瀹屾暣鐨勭綉缁滈氫俊妗嗘灦 +- 馃摗 **瀹炴椂鏁版嵁鍚屾** - 妫嬬洏鐘舵佸拰娓告垙杩涘害瀹炴椂鍚屾 +- 馃洝锔 **缃戠粶瀹夊叏楠岃瘉** - 鍩烘湰鐨勬暟鎹獙璇佸拰闃蹭綔寮婃娴 +- 馃搳 **杩炴帴鐘舵佺鐞** - 鑷姩鏂嚎閲嶈繛鍜屽欢杩熸樉绀 +- 馃彈锔 **鍏ㄥ眬鍙橀噺缁熶竴绠$悊** - 浼樺寲浠g爜缁撴瀯鍜屽彲缁存姢鎬 +- 馃敡 **瀹忓畾涔夌粺涓绠$悊** - 娑堥櫎閲嶅瀹氫箟锛屾彁楂樹唬鐮佽川閲 +- 鈿欙笍 **缃戠粶閰嶇疆绯荤粺** - 鏀寔鏈嶅姟鍣ㄥ湴鍧鍜岀鍙i厤缃 ## 鐩綍 - [C璇█浜斿瓙妫嬩汉鏈哄鎴楢I](#c璇█浜斿瓙妫嬩汉鏈哄鎴榓i) @@ -61,7 +62,7 @@ - [馃敡 鎶鏈紭鍖朷(#-鎶鏈紭鍖) ## 椤圭洰绠浠 -杩欐槸涓涓娇鐢–璇█瀹炵幇鐨勪簲瀛愭浜烘満瀵规垬绯荤粺锛屽畠鍩轰簬 Alpha-Beta 鍓灊浼樺寲鐨 Minimax 绠楁硶锛屽苟鏀寔鑷畾涔夋鐩樺ぇ灏忋佹父鎴忓瓨妗e拰瀹炴椂鎮旀銆 +杩欐槸涓涓娇鐢–璇█瀹炵幇鐨勭幇浠e寲浜斿瓙妫嬪鎴樼郴缁燂紝鏀寔浜烘満瀵规垬銆佸弻浜哄鎴樺拰缃戠粶瀵规垬涓夌妯″紡銆傜郴缁熷熀浜 Alpha-Beta 鍓灊浼樺寲鐨 Minimax 绠楁硶锛屽叿澶囧畬鏁寸殑閰嶇疆绠$悊銆佸鐩樺垎鏋愩佹櫤鑳借瘎鍒嗗拰缃戠粶閫氫俊鍔熻兘銆 ## 鍔熻兘鐗规