Files
roll-room/doc/开箱玩法/百变竞技/百变竞技.md
2026-04-23 16:58:11 +08:00

11 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

1.创建对战房间先效验创建房间参数0是欧皇1是非酋几人对战配置宝箱的信息以及费用回合数是1-15次验证余额是否足够初始化座位
再去构建对战对象再去扣减房主的报名费房主自动入第一个座再去保存对战人员的信息创建房间成功通过异步WebSocket广播通知大厅有新房间
2.玩家加入对战房间先获取锁防止并发加入再去效验对战信息joinFightCheck方法方法首先查询未对战信息
再去查询是否报名再去检查余额是否足够再去寻找空位入座检查是否重复加入更新对战座位信息扣除加入人员报名费保存参与记录异步WebSocket广播用户加入房间
3.fightBegin开始游戏方法获取锁防止重复开始检查游戏是否开始执行多回合的抽奖newComputerFight()方法再去计算胜负computerWinner()方法,该方法包含对战模式,座位信息,抽奖结果,
去分配奖品,如果是多个赢家,失败者的奖品价值平分,赢家的奖品归自己,失败者的奖品累计,去平分失败者的总价值,如果是单个玩家或全员平局,单个赢家,将失败者奖品分给赢家,全员平局的话就轮流分配,
最后再去批量保存开箱记录更新对战状态为进行中在异步WebSocket广播构建开箱结果广播给房间用户和大厅
3.1.newComputerFight()方法获取宝箱配置获取所有玩家的id设置回合计数器外层遍历每一个宝箱内层记录宝箱开启的次数执行一回合的抽奖roundLottery()方法将对局结果addAll全部加入宝箱记录集合中回合数累加再去更新宝箱历史开箱统计在补充对战的id
3.1.1.roundLottery()方法遍历当前回合所有的玩家再去使用经典开箱方法singleLottery(),获取饰品详情,再去构建开箱的记录
3.2 computerWinner()方法,有两个模式,欧皇模式(总价值最高者胜)和非酋模式(总价值最低者胜),欧皇模式去累加该玩家获得的所有的饰品价值,比较是否为最高或者平局,非酋模式是否为最低或者平局