首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于 Workerman 实时多人五子棋游戏!

基于 Workerman 实时多人五子棋游戏!

作者头像
Tinywan
发布2025-10-20 17:29:31
发布2025-10-20 17:29:31
13300
代码可运行
举报
文章被收录于专栏:开源技术小栈开源技术小栈
运行总次数:0
代码可运行

🚀 五子棋

基于 WebSocket 的实时多人五子棋游戏,使用 PHP Asyncio Gamekit 框架开发。

🌐 在线体验

在线体验地址:https://github.tinywan.com/gomoku.html

运行日志

代码语言:javascript
代码运行次数:0
运行
复制
# php start_gomoku_server.php start
=== 开源技术小栈 五子棋游戏服务器 ===
监听地址: ws://0.0.0.0:8201
支持游戏: GomokuRoom

Workerman[start_gomoku_server.php] start in DEBUG mode
--------------------------------------------- WORKERMAN ----------------------------------------------
Workerman version:4.2.1          PHP version:8.3.15           Event-Loop:\Workerman\Events\Select
---------------------------------------------- WORKERS -----------------------------------------------
proto   user            worker              listen                      processes    status
tcp     root            GomokuGameServer    websocket://0.0.0.0:8201    1             [OK] 
------------------------------------------------------------------------------------------------------

[2025-10-1815:00:09] [INFO] New player connected: player_68f3ab79e6f572.86105239
玩家 开源技术小栈 加入房间 room_68f3ab7ca4a8c0.36846406
New connection: 5
[2025-10-1815:00:15] [INFO] New player connected: player_68f3ab7fbbaf87.89767589
玩家 Tinywan 加入房间 room_68f3ab7ca4a8c0.36846406
房间 room_68f3ab7ca4a8c0.36846406 开始启动游戏...
五子棋房间 room_68f3ab7ca4a8c0.36846406 创建成功
房间 room_68f3ab7ca4a8c0.36846406 五子棋游戏开始!
玩家 开源技术小栈 分配为黑棋 (1)
玩家 Tinywan 分配为白棋 (2)
房间 room_68f3ab7ca4a8c0.36846406 游戏主循环开始
房间 room_68f3ab7ca4a8c0.36846406 游戏结束: 开源技术小栈 获胜!
房间 room_68f3ab7ca4a8c0.36846406 游戏主循环结束
重新开始 - 玩家 开源技术小栈 分配为黑棋 (1)
重新开始 - 玩家 Tinywan 分配为白棋 (2)
房间 room_68f3ab7ca4a8c0.36846406 游戏重新开始
重新开始 - 玩家 开源技术小栈 分配为黑棋 (1)
重新开始 - 玩家 Tinywan 分配为白棋 (2)
房间 room_68f3ab7ca4a8c0.36846406 游戏重新开始
重新开始 - 玩家 开源技术小栈 分配为黑棋 (1)
重新开始 - 玩家 Tinywan 分配为白棋 (2)
房间 room_68f3ab7ca4a8c0.36846406 游戏重新开始
重新开始 - 玩家 开源技术小栈 分配为黑棋 (1)
重新开始 - 玩家 Tinywan 分配为白棋 (2)
房间 room_68f3ab7ca4a8c0.36846406 游戏重新开始

📁 项目结构

代码语言:javascript
代码运行次数:0
运行
复制
games/
├── config/                 # 配置文件
│   └── game.php           # 游戏配置
├── logs/                  # 日志目录
├── public/                # 前端文件
│   └── gomoku_online.html # 游戏客户端页面
├── src/                   # 服务端源码
│   ├── GomokuGame.php     # 游戏逻辑类
│   ├── GomokuServer.php   # 主服务器类
│   └── MessageHandler.php # 消息处理器
├── vendor/                # 依赖包
├── composer.json          # 依赖配置
├── start_gomoku_server.php # 启动脚本
└── README.md              # 项目说明

🎮 功能特性

核心功能

  • 实时对战: 基于 WebSocket 的实时通信
  • 多人游戏: 支持 2 人同时在线对战
  • 房间管理: 自动匹配和房间分配
  • 游戏规则: 标准五子棋规则,五子连线获胜

游戏控制

  • 落子: 点击棋盘落子
  • 悔棋: 撤销上一步操作
  • 重新开始: 重置游戏状态
  • 结束游戏: 主动结束当前游戏
  • 颜色分配: 自动分配黑棋/白棋

用户体验

  • 名称记忆: 自动保存玩家名称
  • 状态显示: 实时显示游戏状态
  • 玩家列表: 显示房间内所有玩家
  • 按钮控制: 游戏进行中智能禁用按钮

🚀 快速开始

1. 安装依赖

代码语言:javascript
代码运行次数:0
运行
复制
composer install

2. 启动服务器

代码语言:javascript
代码运行次数:0
运行
复制
php start_gomoku_server.php start

3. 访问游戏

打开浏览器访问:public/gomoku_online.html

🔧 技术架构

服务端架构

  • GomokuServer.php: 主服务器类,处理 WebSocket 连接和房间管理
  • GomokuGame.php: 游戏逻辑类,处理棋盘、胜利检测等核心逻辑
  • MessageHandler.php: 消息处理器,统一管理消息格式

前端架构

  • HTML5 Canvas: 绘制游戏棋盘
  • WebSocket: 实时通信
  • LocalStorage: 保存玩家名称
  • 响应式设计: 支持不同屏幕尺寸

消息协议

代码语言:javascript
代码运行次数:0
运行
复制
// 客户端发送
{
"event": "make_move",
"data": {"row": 7, "col": 7}
}

// 服务端响应
{
"event": "game:move_made",
"data": {
    "row": 7,
    "col": 7,
    "player": 1,
    "current_player": 2,
    "board": [...],
    "move_count": 1
  }
}

📋 API 接口

客户端消息

  • set_name: 设置玩家名称
  • quick_match: 快速匹配
  • make_move: 落子
  • undo_move: 悔棋
  • restart_game: 重新开始
  • end_game: 结束游戏
  • get_game_state: 获取游戏状态

服务端消息

  • room:created: 房间创建
  • player:join: 玩家加入
  • player:leave: 玩家离开
  • game:start: 游戏开始
  • game:move_made: 落子成功
  • game:move_undone: 悔棋成功
  • game:restarted: 游戏重新开始
  • game:end: 游戏结束
  • game:state_update: 状态更新

🎯 游戏规则

  1. 棋盘: 15x15 标准五子棋棋盘
  2. 胜利条件: 横、竖、斜任意方向五子连线
  3. 先手: 黑棋先行
  4. 平局: 棋盘填满无胜负
  5. 悔棋: 可撤销上一步操作

🔍 调试功能

服务端日志

  • 玩家连接/断开
  • 游戏开始/结束
  • 落子记录
  • 错误信息

客户端调试

  • 控制台日志输出
  • 消息收发记录
  • 游戏状态跟踪

📝 开发说明

代码组织

  • 模块化设计: 游戏逻辑与网络通信分离
  • 消息统一: 使用 MessageHandler 统一消息格式
  • 配置管理: 集中管理游戏配置
  • 错误处理: 完善的错误处理机制

扩展性

  • 支持自定义棋盘大小
  • 支持自定义胜利条件
  • 支持房间数量限制
  • 支持游戏超时设置
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源技术小栈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀 五子棋
  • 🌐 在线体验
  • 📁 项目结构
  • 🎮 功能特性
    • 核心功能
    • 游戏控制
    • 用户体验
  • 🚀 快速开始
    • 1. 安装依赖
    • 2. 启动服务器
    • 3. 访问游戏
  • 🔧 技术架构
    • 服务端架构
    • 前端架构
    • 消息协议
  • 📋 API 接口
    • 客户端消息
    • 服务端消息
  • 🎯 游戏规则
  • 🔍 调试功能
    • 服务端日志
    • 客户端调试
  • 📝 开发说明
    • 代码组织
    • 扩展性
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档