4.0 KiB
4.0 KiB
Phase 1 完成总结
完成内容
1. 项目结构
/home/ubuntu/nanocode/net-games/
├── config.py # 全局配置
├── server.py # Flask-SocketIO 主服务器 (端口 8900)
├── test_engine.py # 单元测试 (31个测试)
├── test_client.html # 测试客户端 (HTML + Socket.IO)
├── engine/ # 游戏引擎核心
│ ├── __init__.py
│ ├── player.py # Player / HumanPlayer / AIPlayer
│ ├── game_base.py # GameBase / GameState 游戏基类
│ ├── room_manager.py # RoomManager / Room 房间管理
│ ├── ai_adapter.py # AIAdapter 适配器基类
│ └── test_game.py # 示例游戏(猜数字)
├── doudizhu/ # 斗地主游戏 (Phase 2)
├── chinese-chess/ # 中国象棋 (Phase 3)
└── docs/ # 设计文档
├── ARCHITECTURE.md
├── API.md
├── DATABASE.md
└── PHASE1_SUMMARY.md # 本文件
2. 核心组件
| 组件 | 文件 | 功能 |
|---|---|---|
| Player | engine/player.py |
玩家抽象基类,支持人类/AI |
| Room | engine/room_manager.py |
房间状态管理 |
| RoomManager | engine/room_manager.py |
单例模式,管理所有房间 |
| GameBase | engine/game_base.py |
游戏抽象基类 |
| GameState | engine/game_base.py |
游戏状态管理 |
| AIAdapter | engine/ai_adapter.py |
AI适配器基类 |
| Server | server.py |
Flask-SocketIO 服务 |
3. 测试验证
单元测试: 31个测试全部通过 ✅
cd /home/ubuntu/nanocode/net-games
python3 test_engine.py
测试结果:
- TestPlayer: 6个测试
- TestRoom: 5个测试
- TestRoomManager: 6个测试
- TestTestGame: 9个测试
- TestGameState: 5个测试
- IntegrationTest: 1个测试
服务器状态: ✅ 运行中 (端口 8900)
PID: 743650, 743652
监听: 0.0.0.0:8900
4. API 端点
| 端点 | 方法 | 说明 |
|---|---|---|
/ |
GET | 服务状态 |
/api/rooms |
GET | 房间列表 |
/api/rooms/<code> |
GET | 房间详情 |
/api/stats |
GET | 服务统计 |
5. Socket.IO 事件
通用事件:
connect/disconnect- 连接管理create_room- 创建房间join_room- 加入房间leave_room- 离开房间set_ready- 准备状态start_game- 开始游戏game_action- 游戏操作ping/pong- 心跳
6. 技术选型确认
| 技术 | 版本 | 说明 |
|---|---|---|
| Python | 3.12.3 | 运行环境 |
| Flask | 3.1.3 | Web框架 |
| Flask-SocketIO | 最新 | 实时通信 |
| Socket.IO | 4.x | WebSocket 协议 |
| 线程模式 | threading | 开发模式 |
7. 验证方式
1. 访问 HTTP API:
curl http://129.211.173.87:8900/
curl http://129.211.173.87:8900/api/stats
curl http://129.211.173.87:8900/api/rooms
2. 打开测试客户端:
在浏览器中打开 http://129.211.173.87:8900/test_client.html
(需要将 test_client.html 放到服务器能访问的位置)
3. 运行单元测试:
cd /home/ubuntu/nanocode/net-games
python3 test_engine.py
下一阶段 (Phase 2): 斗地主实现
计划内容
-
斗地主规则引擎 (
doudizhu/game_logic.py)- 牌型定义(单张、对子、顺子、炸弹等)
- 出牌合法性验证
- 胜负判定
-
AI 适配器
RuleBasedAdapter- 基于规则的贪心策略DeepSeekAdapter- 大模型 AI(服务端调用)
-
Socket.IO 事件处理
- 叫地主/抢地主
- 出牌/不出
- 状态同步
-
前端界面
- 复用现有斗地主 UI
- 对接 Socket.IO 通信
备注
- 服务器当前运行在端口 8900
- 使用 TestGame(猜数字)验证引擎功能
- 所有 API Key 将在服务端管理,前端无法访问
- 可随时重启服务器:
pkill -f "python3 server.py" && python3 server.py