diff --git a/docker-compose.yml b/docker-compose.yml index 424b5e8..6d021d4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,7 +5,5 @@ services: build: context: . dockerfile: Dockerfile - args: - GOARCH: arm ports: - "8080:8080" diff --git a/main.go b/main.go index 943748c..a698c6f 100644 --- a/main.go +++ b/main.go @@ -162,36 +162,44 @@ func wsHandler(w http.ResponseWriter, r *http.Request) { game.GameStatus.Message = "Please make your move" } else if opponent.Move == "" { - game.GameStatus.Message = "Waiting for opponent" + game.GameStatus.Message = fmt.Sprintf("Waiting for %s\n", opponent.Name) } else { - // Generate a random move for the server - opponentMove := opponent.Move + winner, tie := determineWinner(player, opponent) - // Determine the winner - playerMove := player.Move - winner := determineWinner(playerMove, opponentMove) + responseMsg := "" - if winner == "player" { - player.Score++ - } else if winner == "opponent" { - opponent.Score++ + if tie { + responseMsg = "it's a tie" + } else { + if winner.ID == player.ID { + player.Score++ + } else { + opponent.Score++ + } + responseMsg = fmt.Sprintf("%s won the round", winner.Name) } + // Prepare game result + game.GameStatus.Message = fmt.Sprintf("Player: %s -> %s, Opponent: %s -> %s, %s", + player.Name, + player.Move, + opponent.Name, + opponent.Move, + responseMsg) + + // reseting for next round game.GameStatus.Round++ player.Move = "" opponent.Move = "" fmt.Printf("Player: %s, Opponent: %s\n", player, opponent) - // Prepare game result - game.GameStatus.Message = fmt.Sprintf("Player: %s, Opponent: %s winner is: %s", player.Name, opponent.Name, winner) - game.Type = "game_update" - } game.Players = [2]Player{player, opponent} + game.Type = "game_update" fmt.Print("Game players: ", game.Players) @@ -226,15 +234,18 @@ func getRandomMove() string { } // Function to determine the winner and update the score -func determineWinner(playerMove, serverMove string) string { +func determineWinner(player, opponent Player) (winner Player, tie bool) { + playerMove := player.Move + serverMove := opponent.Move + if playerMove == serverMove { - return "tie" + return Player{}, true } else if (playerMove == "rock" && serverMove == "scissors") || (playerMove == "paper" && serverMove == "rock") || (playerMove == "scissors" && serverMove == "paper") { - return "player" + return player, false } else { - return "opponent" + return opponent, false } } diff --git a/static/index.html b/static/index.html index 5d10382..c4c95b4 100644 --- a/static/index.html +++ b/static/index.html @@ -49,6 +49,11 @@

Rock Paper Scissors Game

Scissors + +
+
+
+
@@ -62,7 +67,7 @@

Rock Paper Scissors Game

Rock Paper Scissors Game - \ No newline at end of file +