Initial commit
This commit is contained in:
10
doc/开箱玩法/百变竞技/百变竞技.md
Normal file
10
doc/开箱玩法/百变竞技/百变竞技.md
Normal file
@@ -0,0 +1,10 @@
|
||||
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()方法,有两个模式,欧皇模式(总价值最高者胜)和非酋模式(总价值最低者胜),欧皇模式去累加该玩家获得的所有的饰品价值,比较是否为最高或者平局,非酋模式是否为最低或者平局
|
||||
Reference in New Issue
Block a user