# gomoku **Repository Path**: xiongjun_gitee/gomoku ## Basic Information - **Project Name**: gomoku - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-23 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 五子棋 (Gomoku) — 多人在线对弈 基于 Flask + SocketIO 的实时多人五子棋 Web 应用,支持创建房间、实时对弈、再来一局(黑白交换),手机与桌面均可使用。 ## 功能 - **用户系统**:注册、登录、退出、管理员面板(删除用户) - **房间机制**:创建房间 → 对手输入房间号加入 → 双方实时对弈 - **实时对弈**:WebSocket 驱动,落子即时同步,回合指示、最后落子标记、获胜连线高亮 - **再来一局**:游戏结束后双方确认 → 黑白交换 → 立即开始新一局 - **双标签页支持**:同一浏览器两个标签页可分别登录不同用户独立对弈(基于 Token 认证) - **手机适配**:棋盘自适应屏幕宽度,侧边栏堆叠布局,触摸友好 ## 快速开始 ### 开发模式 ```bash cd server pip install -r requirements.txt python app.py # → http://0.0.0.0:5001 ``` > **必须从 `server/` 目录运行**,`app.py` 依赖 `sys.path.insert(0, ...)` 处理相对导入。 ### 生产部署 (Gunicorn) ```bash cd server pip install -r requirements.txt gunicorn==20.1.0 gevent gevent-websocket # 启动 gunicorn -c gunicorn_config.py wsgi:app # 或使用 systemd(推荐) sudo systemctl start wuziqi ``` Gunicorn 配置文件在 `server/gunicorn_config.py`,使用 `geventwebsocket` worker 支持 WebSocket,端口 5001。 ## 项目结构 ``` server/ # Python Flask 后端 app.py # 入口,create_app() 组装所有组件 config.py # 全局常量(SECRET_KEY, BOARD_SIZE, 管理员凭据) wsgi.py # Gunicorn WSGI 入口 gunicorn_config.py # Gunicorn 配置(geventwebsocket worker, port 5001) requirements.txt # Python 依赖 db/ database.py # SQLite 连接与建表 auth/ # 用户认证(Blueprint: /api/auth) routes.py # 注册、登录、注销、删账户 models.py # 用户模型与 seed admin.py # 管理员面板(Blueprint: /api/admin) auth_store.py # Token 认证存储(内存 dict) game/ gomoku.py # 棋盘逻辑类 GomokuGame(落子、判赢、重置) room_manager.py # 房间状态管理(纯内存,重启丢失) routes.py # REST: /api/game/*(创建/加入/离开房间、房间状态、我的房间) socket_handlers.py # WebSocket 事件(落子、加入、离开、再来一局) web/ # 静态前端(vanilla HTML/CSS/JS) index.html # 登录/注册页 lobby.html # 大厅(创建/加入房间) game.html # 对弈页(棋盘 + 侧边栏) js/ utils.js # apiCall()、Token 管理、通知系统、导航栏 auth.js # 登录注册逻辑 lobby.js # 大厅逻辑 + 管理员面板 gomoku.js # GomokuBoard 客户端棋盘类 game.js # SocketIO 连接 + 棋盘渲染 + 全局 GAME_STATE css/ style.css # 全局样式(中式美学主题,含手机适配) board.css # 棋盘专用样式(含手机适配、缩放时线宽自适应) ``` ## 技术要点 | 项 | 说明 | |---|---| | 认证 | Token 认证(`X-Auth-Token` header),支持同一浏览器多标签页独立登录 | | WebSocket | Flask-SocketIO + geventwebsocket worker (生产) / simple-websocket threading (开发) | | 房间状态 | `RoomManager` 纯内存 dict,服务器重启即丢失 | | 棋盘渲染 | CSS `repeating-linear-gradient` 绘制网格线,线宽 `max(1px, calc(...))` 自适应缩放 | | 前端风格 | ES5 vanilla JS,无模块系统,`