Как перераспределить побочные банки в покере? - PullRequest
0 голосов
/ 26 июня 2019

Это игра в покер с Bluetooth, и я сталкиваюсь с некоторыми трудностями при перераспределении побочных банков. У кого-нибудь есть опыт с этим?




    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. Все игроки, у которых есть все, имеют 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 голосов
/ 26 июня 2019

В программном обеспечении, я думаю, проще сделать это в порядке, обратном тому, что сделал бы дилер в реальном времени. В казино побочные поты выдаются первыми, а затем основными - главным образом потому, что поты объединяются во время ставок, а иногда это единственный способ сделать это.

Но в программном обеспечении вы можете отслеживать во время ставок суммарный вклад каждого игрока в банк, включая анте и блайнды, в процессе совершения ставок. Вам не нужно рассчитывать это после факта. Таким образом, чтобы выиграть пот, вы просто начинаете с лучшей руки. Наградите его своим вкладом, плюс до этой суммы от каждого из других игроков, затем удалите его (и любых других игроков без вклада) из списка. Затем повторите: найдите лучшую оставшуюся руку, наградите его оставшимся вкладом плюс сумму до каждого из остальных, затем удалите из списка и т. Д.

...