From f4fe897e17a63b4e7e83b2a90a20d778922d97b5 Mon Sep 17 00:00:00 2001 From: Christos Houtouridis Date: Tue, 6 Nov 2018 16:47:25 +0200 Subject: [PATCH] A maximum number of rounds per game added for safety --- src/SnakePkg/Game.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/SnakePkg/Game.java b/src/SnakePkg/Game.java index 77b2b92..c0ed9f2 100644 --- a/src/SnakePkg/Game.java +++ b/src/SnakePkg/Game.java @@ -32,6 +32,7 @@ public class Game { /** Constants */ /**@{ */ static final int MAX_PLAYERS = 4; /**< The maximum number of allowed players in the game */ + static final int MAX_GAME_ROUNDS = 10000; /**< the maximum allowed round of the game */ /**@} */ /** Private data members */ @@ -163,7 +164,7 @@ public class Game { } /** - * A game round. In each round every player plays when is its turn + * A game round. In each round every player plays when is his turn * * @return The winner if we have one, or null */ @@ -221,20 +222,26 @@ public class Game { Player winner; do // Keep going until someone finishes winner = game.round (); - while (winner == null); - game.scoreSort (); // sort players based on their score - + while (winner == null + && game.getRound() < MAX_GAME_ROUNDS); + if (game.getRound() == MAX_GAME_ROUNDS) { + // Check if we finished + System.out.println("Game did not finished in " + MAX_GAME_ROUNDS + " rounds. Abort."); + return; + } + // Print the results System.out.println("***** Game finished *****"); System.out.println(""); System.out.println("Rounds: " + game.getRound()); System.out.println("Winner: " + winner.getName() + " [" + winner.getScore() +" points]"); System.out.println("Score: "); + game.scoreSort (); // sort players based on their score for (int i=game.getPlayers().size()-1 ; i>=0 ; --i) { // Loop all players Player p = game.getPlayers().get(i); if (p == winner) - System.out.println(" *" +p.getName() + ": " + p.getScore() +" points"); + System.out.println(" * " +p.getName() + ": " + p.getScore() +" points"); else System.out.println(" " +p.getName() + ": " + p.getScore() +" points"); }