dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit f135880f5a05976fec949a06097ca6ad0dd1e615
parent 0067ba71f6e44437b35591df670603ee8b2836bd
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Fri,  8 Dec 2023 05:56:36 -0500

handle odd chips

Diffstat:
Mpkg/web/handlers/poker/poker.go | 12+++++++++++-
Mpkg/web/handlers/poker/poker_test.go | 16++++++++++++++++
2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/pkg/web/handlers/poker/poker.go b/pkg/web/handlers/poker/poker.go @@ -798,7 +798,9 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) { if len(group.Players) == 1 && group.Players[0].Cash > 0 { // Only 1 player win and is not all-in player := group.Players[0] - res = append(res, PlayerGain{player, mainPot, groupIdx, handStr}) + piece := mainPot + res = append(res, PlayerGain{player, piece, groupIdx, handStr}) + mainPot -= piece } else if len(group.Players) == 1 && group.Players[0].Cash == 0 { // Only 1 player win but is all-in player := group.Players[0] @@ -834,6 +836,7 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) { for _, p := range group.Players { if p.Cash > 0 { res = append(res, PlayerGain{p, piece, groupIdx, handStr}) + mainPot -= piece } } } @@ -842,6 +845,13 @@ func processPot(winners []GameResult, mainPot int) (res []PlayerGain) { } } } + + idx := 0 + for mainPot > 0 { + res[idx].Gain += 1 + idx = (idx + 1) % len(res) + mainPot-- + } return res } diff --git a/pkg/web/handlers/poker/poker_test.go b/pkg/web/handlers/poker/poker_test.go @@ -89,6 +89,22 @@ func Test_processPot(t *testing.T) { assert.Equal(t, 1, len(res)) assert.Equal(t, "p2", res[0].Player.Username) assert.Equal(t, 1000, res[0].Gain) + + p1 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p1"} + p2 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p2"} + p3 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p3"} + p4 = &PokerPlayer{Cash: 1, RoundTotalBet: 5, Username: "p4"} + //p5 = &PokerPlayer{Cash: 1, RoundTotalBet: 3, Folded: true, Username: "p5"} + arr = []GameResult{ + {1, []*PokerPlayer{p1, p2, p3}}, + {2, []*PokerPlayer{p4}}, + } + sortGameResults(arr) + res = processPot(arr, 23) + assert.Equal(t, 3, len(res)) + assert.Equal(t, 8, res[0].Gain) + assert.Equal(t, 8, res[1].Gain) + assert.Equal(t, 7, res[2].Gain) } func Test_isRoundSettled(t *testing.T) {