# gobang **Repository Path**: wangzm132/gobang ## Basic Information - **Project Name**: gobang - **Description**: 一个开源的五子棋游戏项目,支持多人在线对战,提供简洁的用户界面和强大的游戏逻辑。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-13 - **Last Updated**: 2026-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gobang 一个基于 C++ 开发的开源五子棋在线对战项目,支持多人实时匹配、房间对战、实时聊天及天梯积分系统,采用高性能网络通信架构与简洁国风界面,是 Web 全栈开发的实战典范。 --- ## 项目介绍 基于 **WebSocket + HTML5 Canvas + C++ 后端** 实现的双人五子棋对战系统,解决了传统对战的跨设备限制与多用户身份冲突问题,提供从用户注册、智能匹配到胜负判定的全流程功能,兼顾开发学习与实际使用场景。 ### 核心特性 - 🎮 **天梯匹配对战**:按积分划分青铜/白银/黄金三个段位,智能匹配同水平玩家 - 🎯 **精准胜负判定**:自动检测横/竖/斜向五子连珠,实时判定对战结果 - 💬 **房间实时聊天**:对战中支持文字交流,含敏感词过滤机制 - 🔑 **安全身份认证**:基于 Session 管理用户状态,支持注册/登录与信息持久化 - ⚡ **断线处理机制**:对手掉线自动判定胜利,保障游戏体验 - 🎨 **国风视觉设计**:水墨山水背景 + 清晰棋盘布局,兼顾美观与操作便捷性 - 🛠️ **跨平台兼容**:支持主流浏览器,Linux 服务器部署,适配多设备访问 --- ## 技术栈 ### 开发环境 - 操作系统:Linux(CentOS 7.6 / Ubuntu 22.04) - 开发工具:VSCode / Vim - 编译工具:g++ / gdb / CMake - 版本控制:Git ### 核心技术 - **后端**:C++11、WebSocketpp、JsonCpp、MySQL、Boost、Pthread - **前端**:HTML5、CSS3、JavaScript、WebSocket、Canvas、AJAX、jQuery - **数据存储**:MySQL(用户信息/积分)、内存存储(房间/匹配队列) - **网络通信**:HTTP 协议(静态资源/接口)、WebSocket 协议(实时通信) ##项目结构 ## 项目结构 ``` ```plaintext gobang/ ├── wwwroot/ # 前端静态资源目录 │ ├── html/ # 页面文件 │ │ ├── login.html # 登录页 │ │ ├── register.html # 注册页 │ │ ├── game_hall.html # 游戏大厅(匹配/用户信息) │ │ └── game_room.html # 游戏房间(棋盘/聊天) │ ├── css/ # 样式文件 │ │ ├── common.css # 全局通用样式 │ │ ├── login.css # 登录/注册页样式 │ │ ├── game_hall.css # 游戏大厅样式 │ │ └── game_room.css # 棋盘/聊天区样式 │ ├── js/ # 前端脚本 │ │ ├── jquery.min.js # 第三方依赖库 │ │ └── common.js # 通用工具函数(AJAX/WS连接) │ └── image/ # 静态资源 │ └── sky.jpeg # 水墨风格背景图 ├── src/ # 后端核心代码 │ ├── util/ # 工具类模块 │ │ ├── json_util.cpp # Json 序列化/反序列化 │ │ ├── mysql_util.cpp # MySQL 数据库操作封装 │ │ ├── string_util.cpp # 字符串处理工具 │ │ └── file_util.cpp # 文件读取工具 │ ├── core/ # 核心业务模块 │ │ ├── user_table.cpp # 用户数据管理(注册/登录/积分) │ │ ├── online_manager.cpp # 在线用户连接管理 │ │ ├── room.cpp # 房间逻辑(对战/聊天) │ │ ├── room_manager.cpp # 房间创建/销毁管理 │ │ ├── session.cpp # 会话管理(身份认证) │ │ └── matcher.cpp # 玩家匹配系统(段位分组) │ ├── network/ # 网络通信模块 │ │ └── server.cpp # WebSocket/HTTP 服务器 │ └── main.cpp # 程序入口 ├── config/ # 配置文件 │ └── config.h # 端口、数据库等配置项 ├── docs/ # 项目文档 │ ├── 环境搭建.md # 开发/部署环境配置指南 │ ├── 模块设计.md # 核心模块设计说明 │ └── 问题排查.md # 常见问题解决方案 ├── CMakeLists.txt # 项目构建文件 ├── requirements.md # 依赖库说明 ├── README.md # 项目说明文档 └── LICENSE # 开源协议(MIT) ``` ## 环境搭建 ### CentOS 7.6 环境 ``` #### 更换软件源 ```bash sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sudo yum clean all && sudo yum makecache ``` #### 安装基础工具 sudo yum install -y wget centos-release-scl-rh centos-release-scl epel-release lrzsz git cmake #### 安装编译器与调试器 sudo yum install -y devtoolset-7-gcc devtoolset-7-gcc-c++ gdb echo "source /opt/rh/devtoolset-7/enable" >> ~/.bashrc && source ~/.bashrc #### 安装依赖库 sudo yum install -y boost-devel.x86_64 jsoncpp-devel #### 安装 MySQL 5.7 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm sudo rpm -ivh mysql57-community-release-el7-10.noarch.rpm sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo yum install -y mysql-community-server mysql-community-devel sudo systemctl start mysqld && sudo systemctl enable mysqld #### 安装 WebSocketpp git clone https://github.com/zaphoyd/websocketpp.git cd websocketpp && mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. && sudo make install ``` ``` ## 使用说明 ### 1. 注册与登录 - 访问注册页,输入用户名和密码完成注册(用户名唯一) - 登录页输入账号密码,验证通过后跳转至游戏大厅 - 支持会话保持,短时间内无需重复登录 ### 2. 匹配对战 - 游戏大厅展示用户积分、比赛场次及获胜次数 - 点击「开始匹配」,系统根据积分分配至对应段位队列 - 匹配成功后自动进入游戏房间,黑棋先行,双方交替落子 ### 3. 对战操作 - 点击棋盘空白位置落子,不可在已有棋子位置重复落子 - 实时显示对战状态(轮到己方 / 对方走棋) - 支持房间内聊天,输入文字点击发送即可交流 - 先连成五子(横 / 竖 / 斜向)者获胜,系统自动更新双方积分 - 对手掉线时,系统判定当前用户「不战而胜」 ### 4. 退出与重连 - 关闭页面即退出当前房间,返回大厅可重新匹配 - 断线后重新登录,可恢复用户积分与历史对战记录 --- ## 核心模块设计 ### 1. 网络通信模块 - 基于 WebSocketpp 实现 HTTP + WebSocket 双协议支持 - HTTP 负责静态资源(页面 / CSS/JS)与注册登录接口 - WebSocket 负责实时通信(匹配状态 / 落子 / 聊天消息) ### 2. 业务逻辑模块 - **用户管理**:处理注册、登录、积分更新等数据操作 - **匹配系统**:三段位队列设计,基于条件变量实现高效匹配 - **房间管理**:对战房间创建 / 销毁、落子校验、胜负判定 - **会话管理**:Session 生命周期控制,支持过期自动销毁 ### 3. 工具类模块 - **Json 工具**:序列化 / 反序列化网络传输数据 - **MySQL 工具**:数据库连接池、CRUD 操作封装 - **字符串工具**:字符串分割、敏感词过滤等通用功能 --- ## 扩展方向 - **局时 / 步时限制**:为每局游戏或每步落子设置时间限制,超时判负 - **棋谱保存与回放**:记录对战过程,支持历史对局回放 - **观战功能**:支持观众进入房间观看实时对战 - **好友系统**:支持添加好友、邀请对战及战绩分享 --- ## 开源协议 本项目采用 MIT 开源协议,允许个人学习、研究、商用(需保留原作者版权声明),禁止恶意篡改或违规使用。 ```