德州扑克牌局回顾功能实现

开发思路
整个牌局回顾以秒为单位,用定时器去执行播放,把牌局中的每个操作都记录下来,一个动作在什么时间开始的,用了多长时间,然后在定时器中查询该时间是否需要播放动作

一、数据源存储
1.我们将整个牌局分为三部分,牌局准备阶段,牌局进行阶段,牌局结算阶段,分别存储在gameStart,playing,result里面
2.gameStart里面存放着玩家信息,比如userName,pic,seatchips,card等数据
3.playing里面存放每个玩家和发牌的动作,比如check,call,turn等操作,这是一个有序的表结构(行动时间排序)
4.result存放结算信息,比如输赢情况
伪代码
game = {start = {player1, player2}, playing = {{actionName = “check” , playerInfo = {uid = 10086}}}, reslut = {playInfo = {winChips = 100, uid = 10086}}}

二、数据解析
1.我们通过web请求获取到之前存放在服务器的数据源
2.遍历game里面的元素,给每个操作定义好一个操作时间,用来统计整个回放需要多长时间,然后以时间为索引建立一个list,比如[1] = {start , playTime}, [playTime + 1] = {playing,playTime}

三、数据播放
1.启一个定时器,以秒为单位,每过一秒就去看list里面有没有这个时间的数据,假设list[time]有动作,则获取出来,然后执行playData函数(专门用来播放每个行动的)

四、有进度条的播放器(可以快进后退的)
假设牌局时长是20s,现在托动进度条到10s的位置
1.首先我们要知道牌局在10s的时候有没有动作,如果有,则记录该时间,如果没有动作则需要向前或向后想到最接近10s的动作然后记录那个时间(selectTime)
2.播放动作前,我们需要reset牌桌状态,这里我的做法是先把桌子恢复到最开始的状态,然后去设置每个玩家的状态,pot奖池和公共牌情况
3.为了设置玩家在指定时间的状态需要在数据解析做一些处理,以每个玩家为个体,记录下他自己所有的操作数据,player = {[2] = {“check”}, [4] = {“call”}}
4.遍历每个个体,获取最接近selectTime的行动(小于selectTime),然后重置该玩家状态
5.最后播放selectTime的动作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值