From 13fc91139cc6ed3a70f7203b5873cd8e8ee4881c Mon Sep 17 00:00:00 2001 From: qypol342 Date: Sat, 8 Jun 2024 18:44:15 +0200 Subject: [PATCH] fix tie eadge case --- internal/services/game.go | 37 +++++++++++++++++++++++------------- template/messenger.html.tmpl | 4 +++- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/internal/services/game.go b/internal/services/game.go index 10cb454..c126206 100644 --- a/internal/services/game.go +++ b/internal/services/game.go @@ -341,9 +341,9 @@ func sendEndRound(gameId, winner string, tie bool) { senders.SetScore(p.Conn, "opponent", getOpponentScore(g.Players, p)) if !tie { senders.SendMessage(p.Conn, - fmt.Sprintf("Winner is %s! Next round will start in 3s", winner), "empty-3s") + fmt.Sprintf("Winner is %s! Next round will start in 3s", winner), "") } else { - senders.SendMessage(p.Conn, "Tie! Next round will start in 3s", "empty-3s") + senders.SendMessage(p.Conn, "Tie! Next round will start in 3s", "") } } } @@ -443,14 +443,21 @@ func incrementWinner(gameId string) (string, bool) { } winner := "" - winnerMove := "" - for k, p := range g.Players { - if isLeftWinning(p.Move, winnerMove) { - winner = k - winnerMove = p.Move + for _, p := range g.Players { + isLeftWinner, isTie := isLeftWinning(p.Move, getOpponentMove(g.Players, p)) + + if !isTie { + if isLeftWinner { + winner = p.Name + } else { + winner = getOpponent(g.Players, p).Name + } } + + break } + if winner != "" { tmpPlayer := g.Players[winner] tmpPlayer.Score += 1 @@ -464,24 +471,28 @@ func incrementWinner(gameId string) (string, bool) { } -func isLeftWinning(leftMove, rightMove string) bool { +func isLeftWinning(leftMove, rightMove string) (bool, bool) { + if leftMove == rightMove { + return false, true + } + if leftMove == "paper" && rightMove == "rock" { - return true + return true, false } if leftMove == "rock" && rightMove == "scissors" { - return true + return true, false } if leftMove == "scissors" && rightMove == "paper" { - return true + return true, false } if leftMove != "" && rightMove == "" { - return true + return true, false } - return false + return false, false } diff --git a/template/messenger.html.tmpl b/template/messenger.html.tmpl index 3d51d5c..49c8c47 100644 --- a/template/messenger.html.tmpl +++ b/template/messenger.html.tmpl @@ -1,12 +1,14 @@ {{ define "messenger" }} -
+
{{ if .Message }}

{{.Message}}

{{ end }} +{{ if ne .Timer "" }}
+ {{ end }}
{{ end }}