德州扑克分池结算思路

Posted by Lewis on Friday, May 31, 2019

TOC

最近刚开始接触go,决定写个德州扑克的服务器练下手,虽然经常去澳门玩,但是此前没有玩过德州,熟悉下规则后,实现过程中发现分池和结算没弄懂的话实现起来还是比较蛋疼的,特此记录下。

当桌子上allin的玩家多了后因为下注额不同就会形成分池

比如A,B,C三个玩家,A下注100,B下注80,C下注60,那么结算时就会形成三个奖池,第一个主池A,B,C三人共同参与,每人下注60,总共180,第二个奖池A,B参与,每人20,共40,第三个奖池只有A参与,只有20

奖池分配原则

1.只有参与了该奖池的玩家才能参与该奖池的分配

2.每个奖池中,牌型最大者赢得该奖池,牌型相同平分奖池

思路:记录每回合玩家下的总注额,然后从小到大排列,计算出每份奖池的注额及参与玩家(这里需要注意参与玩家必须是最后有可能赢取筹码的玩家,即坚持到最后一圈没有盖牌的玩家。而已盖牌的玩家下的注一定比最后参与结算的最小下注玩家还要少,所以盖牌玩家的筹码放到主池内),然后逐奖池按分配原则去处理。

业务逻辑流程采用状态机控制,牌型计算为保证效率依靠各种位运算,这块不多说,假设已知每个玩家的下注额及牌型结果和权值,demo工程

https://github.com/newway1992/texasPoker