Skip to content

Latest commit

 

History

History
226 lines (185 loc) · 5.83 KB

File metadata and controls

226 lines (185 loc) · 5.83 KB

测试指南 - 拖拉机纸牌游戏模拟器

前置条件

确保后端服务器正在运行:

cd tractor-game-simulator/server
npm start

服务器应该显示:

🚀 拖拉机纸牌游戏服务器已启动
📡 端口: 5001
🌐 客户端URL: http://localhost:3000

启动前端客户端

在新的终端窗口中:

cd tractor-game-simulator/client
npm run dev

前端将运行在 http://localhost:3000

多人测试步骤

1. 创建房间(客户端1)

  1. 打开浏览器访问 http://localhost:3000
  2. 点击"创建房间"按钮
  3. 填写以下信息:
    • 房间名称:例如"测试房间"
    • 你的昵称:例如"玩家1"
    • 底牌数量:8(默认)
    • 发牌间隔:500毫秒(默认)
  4. 点击"创建"
  5. 应该看到房间等待界面,显示房间ID和配置

2. 其他玩家加入(客户端2-4)

由于当前版本还没有实现房间列表和加入房间UI,需要使用以下方法测试多人游戏:

方法1:使用浏览器的隐私/无痕模式

  1. 在同一台电脑上打开3个隐私/无痕浏览器窗口
  2. 每个窗口访问 http://localhost:3000
  3. 每个窗口创建一个新房间(目前只能这样测试单人流程)

方法2:使用浏览器控制台手动加入

  1. 打开浏览器开发者工具(F12)
  2. 在Console中执行:
// 获取房间ID(从第一个客户端复制)
const roomId = "房间ID粘贴在这里";

// 发送加入房间请求
window.socketService = await import('./src/services/socket');
socketService.default.socket.emit('join_room', {
  roomId: roomId,
  playerName: '玩家2'
});

方法3:使用不同的浏览器或设备

  • Chrome:http://localhost:3000
  • Firefox:http://localhost:3000
  • Safari:http://localhost:3000
  • 另一台电脑:http://<服务器IP>:3000

3. 测试游戏流程

阶段1:等待开始 (WAITING)

  • 确认所有玩家都显示在玩家列表中
  • 确认房主标识正确
  • 房主点击"开始游戏"按钮

阶段2:摸牌阶段 (DRAWING)

  • 确认系统自动发牌
  • 观察手牌逐渐增加
  • 测试"展示选中的牌"功能:
    1. 点击手牌选择
    2. 点击"展示选中的牌"
    3. 其他玩家应该看到通知消息
  • 房主点击"指定埋底玩家(结束摸牌)"
  • 在弹窗中选择一个玩家
  • 点击"确认"

阶段3:埋底阶段 (BURYING)

  • 埋底玩家应该看到提示
  • 埋底玩家选择8张牌(或配置的底牌数量)
  • 点击"确认埋底"
  • 系统自动进入出牌阶段

阶段4:出牌阶段 (PLAYING)

  • 房主点击"设置首发玩家"
  • 在弹窗中选择首发玩家
  • 点击"确认"
  • 轮到的玩家可以出牌:
    1. 选择要出的牌(点击手牌)
    2. 点击"出牌"按钮
    3. 或者点击"跳过"按钮
  • 观察出牌模式:
    • 有序出牌:按顺序轮流出牌
    • 自由抢先:任何人都可以出牌
  • 继续出牌直到所有玩家手牌打完

阶段5:展示底牌 (REVEALING)

  • 游戏结束后自动显示底牌
  • 所有玩家点击"确认"按钮
  • 所有人确认后进入结束阶段

阶段6:游戏结束 (FINISHED)

  • 房主可以:
    • 调整分数:选择玩家和新分数
    • 调整等级:选择玩家和新等级
    • 点击"重新开始"
  • 重新开始后返回等待阶段

测试检查清单

UI测试

  • 房间创建成功
  • 玩家列表正确显示
  • 房主标识显示
  • 手牌正确显示
  • 卡牌样式正确(花色、点数)
  • 选中卡牌有高亮效果
  • 出牌区域显示正确
  • 当前回合玩家高亮显示

功能测试

  • 创建房间
  • 加入房间(多个玩家)
  • 开始游戏
  • 自动发牌
  • 展示手牌
  • 指定埋底玩家
  • 埋底操作
  • 设置首发玩家
  • 出牌操作
  • 跳过回合
  • 回合切换(有序模式)
  • 自由抢先(自由模式)
  • 展示底牌
  • 确认底牌
  • 调整分数
  • 调整等级
  • 重新开始游戏

实时同步测试

  • 玩家加入时所有客户端更新
  • 游戏开始时所有客户端切换界面
  • 手牌发送到正确的玩家
  • 出牌后所有客户端看到
  • 回合切换后所有客户端更新
  • 分数/等级调整后所有客户端更新

错误处理测试

  • 非房主无法开始游戏
  • 非房主无法指定埋底玩家
  • 非房主无法设置首发玩家
  • 非当前玩家无法出牌(有序模式)
  • 埋底牌数不正确时提示错误
  • 非房主无法调整分数/等级
  • 玩家断线时游戏终止

已知限制

当前版本的限制:

  1. 没有加入房间UI(需要手动通过console加入)
  2. 没有房间列表
  3. 没有牌型验证(可以出任意牌)
  4. 没有胜负判定逻辑
  5. 手牌排序是自动的,不支持手动拖拽排序

调试技巧

查看后端日志

后端服务器会输出详细的日志,包括:

  • 玩家连接/断开
  • 房间创建/销毁
  • 游戏状态变化
  • 错误信息

查看前端控制台

打开浏览器开发者工具(F12)查看:

  • Socket连接状态
  • 收到的事件
  • 房间状态更新
  • 错误消息

检查网络流量

在开发者工具的Network标签中:

  1. 筛选"WS"(WebSocket)
  2. 查看Socket.IO消息
  3. 确认事件正确发送和接收

故障排查

服务器无法启动

# 检查端口占用
lsof -i :5001

# 如果被占用,杀死进程或更改端口

前端无法连接

  1. 确认后端服务器在运行
  2. 检查浏览器控制台错误
  3. 确认URL正确(http://localhost:3000)
  4. 检查CORS设置

卡牌不显示

  1. 检查浏览器控制台是否有CSS错误
  2. 确认组件正确导入
  3. 检查卡牌数据格式是否正确

状态不同步

  1. 检查room_updated事件是否正确接收
  2. 查看后端日志确认事件已发送
  3. 确认所有客户端都在同一个Socket.IO房间