如何在扑克中重新分配边池?

时间:2019-06-26 07:56:52

标签: java android poker

这是一个带有蓝牙的扑克游戏,我在重新分配侧锅时遇到一些困难。有人对此有任何经验吗?




    for(int k = 0; k < numberOfPlayer; k++)
                {
                    canWinSidePotUpTo[k] = -1;
                }
                for(int i = 0 ; i < sidePot.size(); i++) {
                        if (sideTempToRaiseListSorted.get(i) != sideTempToRaiseListSorted.get(i + 1)) {
                            for (int k = 0; k < numberOfPlayer; k++) {
                                print("All in ToRaiseList[" + k + "] = " + toRaiseList[k]);
                                print("All in TempToRaise[" + k + "] = " + tempToRaise[k]);
                                if (sideTempToRaiseListSorted.get(i) == max(toRaiseList) - max(tempToRaise)) {
                                    continue;
                                }
                                if (sideTempToRaiseListSorted.get(i) == (toRaiseList[k] - tempToRaise[k])) {
                                    canWinSidePotUpTo[k] = j;
                                }
                                if (sideTempToRaiseListSorted.get(i + 1) == (toRaiseList[k] - tempToRaise[k])) {
                                    canWinSidePotUpTo[k] = j;
                                }
                                print("All In canWinSidePotUpTo[" + k + "] " + canWinSidePotUpTo[k] + " + i = " + i);
                            }
                            print("All In sideTempToRaiseListSorted.get(" + i + ") " + sideTempToRaiseListSorted.get(i) + " + i = " + i);
                            print("All In sideTempToRaiseListSorted.get(" + (i + 1) + ") " + sideTempToRaiseListSorted.get(i + 1) + " + i + 1 = " + i + 1);
                        }

                    j++;
                }

预期结果是能够设置数组canWinSidePotUpTo [player] 对于每个玩家。 边池从索引0开始,如果玩家只能赢得底池,则canWinSidePotUpTo [player] = -1。 allin的所有玩家的canWinSidePotUpTo [player] = -1,然后canWinSidePotUpTo [player]应根据allin的堆栈进行设置... 实际结果是:

All In canWinSidePotUpTo[0] -1 + i = 1
All In canWinSidePotUpTo[1] 1 + i = 1
All In canWinSidePotUpTo[2] 1 + i = 1
All In canWinSidePotUpTo[3] -1 + i = 1

结果为:

player:hand:stack allin
0:AA:900
1:KK:1100
2:QQ:1300
3:JJ:1500
pot = 3600
sidepot(0)= 600
sidepot(1) = 400
Flop:AKQJ9

欢迎任何帮助!

1 个答案:

答案 0 :(得分:0)

在软件中,我认为按照与现场游戏经销商相反的顺序进行操作更为简单。在娱乐场中,首先要赢得边池,然后才是边池-主要是因为在下注过程中将边池合并,有时这是唯一的方法。

但是在软件中,您可以在下注时跟踪每个玩家对底池的总贡献,包括下注和盲注。您不必事后进行计算。因此,要授予底池,您只需从最佳手牌入手。授予他他的贡献,再加上其他每个玩家的最高金额,然后从列表中删除他(以及其他没有贡献的玩家)。然后重复:找到剩余的最佳手牌,奖励他剩余的手牌,再加上其他手数的最多,再从列表中删除,等等。