diff --git a/console-client/app/src/main/java/io/vs/guessgame/client/GuessGameApp.java b/console-client/app/src/main/java/io/vs/guessgame/client/GuessGameApp.java index 4a92774c497aba88070bc23e3a3a291cf2798d47..6977b5a0837177579fbc3c9fb5d86eb8f990bffe 100644 --- a/console-client/app/src/main/java/io/vs/guessgame/client/GuessGameApp.java +++ b/console-client/app/src/main/java/io/vs/guessgame/client/GuessGameApp.java @@ -61,6 +61,8 @@ public class GuessGameApp { case GAME_OVER: System.out.println("You lost! Too many wrong guesses!"); break GAME_LOOP; + default: + throw new IOException("Invalid Server Code"); } } } catch (IOException e) { diff --git a/iterative-server/app/src/main/java/io/vs/guessgame/server/IterativeServer.java b/iterative-server/app/src/main/java/io/vs/guessgame/server/IterativeServer.java index a7502f051ec3316733fb1c026c9252f796fdd43b..8934484e002f54f87609c08b8774052364ac4d2d 100644 --- a/iterative-server/app/src/main/java/io/vs/guessgame/server/IterativeServer.java +++ b/iterative-server/app/src/main/java/io/vs/guessgame/server/IterativeServer.java @@ -12,15 +12,16 @@ public class IterativeServer { private static final Random RANDOM = new Random(); private static int MAX_ATTEMPTS = 3; - /* Just to improve readability of the code: + /* + * Just to improve readability of the code: * - * Client Status Codes: + * Client Status Codes: * 0 = Start Game * - * Server Status Codes: - * 0 = Server Ready, Game initialized - * 1 = Correct Guess, Client wins! - * 2 = Incorrect Guess + * Server Status Codes: + * 0 = Server Ready, Game initialized + * 1 = Correct Guess, Client wins! + * 2 = Incorrect Guess * 9 = Game Over */ private static final int START_GAME = 0; @@ -29,51 +30,56 @@ public class IterativeServer { private static final int INCORRECT_GUESS = 2; private static final int GAME_OVER = 9; - public static void main(String[] args) { - try (ServerSocket gameSocket = new ServerSocket(SERVER_PORT)){ + public static void main(String[] args) { + try (ServerSocket gameSocket = new ServerSocket(SERVER_PORT)) { System.out.println("Guess Game Server up and running ..."); while (true) { // Wait for client access Socket gamerSocket = gameSocket.accept(); - System.out.print("Server starts a new game ..."); + try (gamerSocket) { + System.out.println("Server starts a new game ..."); - // Init communication streams and wait for message to start a game - InputStream fromClient = gamerSocket.getInputStream(); - OutputStream toClient = gamerSocket.getOutputStream(); - int clientCode = fromClient.read(); - if (clientCode == START_GAME) { - System.out.print("Server starts a new game ..."); - // Init game and send server ready (0)! - int pick = RANDOM.nextInt(10); //pick random number (0-9) - int attempts = 0; //init number of attempts - toClient.write(SERVER_READY); + // Init communication streams and wait for message to start a game + InputStream fromClient = gamerSocket.getInputStream(); + OutputStream toClient = gamerSocket.getOutputStream(); + int clientCode = fromClient.read(); + if (clientCode == START_GAME) { + // Init game and send server ready (0)! + int pick = RANDOM.nextInt(10); // pick random number (0-9) + int attempts = 0; // init number of attempts + System.out.println("Server picked random number "+pick); + toClient.write(SERVER_READY); - while (true) {//enter game loop - // Wait for first attempt of client to guess number - int guess = fromClient.read(); - // Check guess - if (guess == pick) { - toClient.write(CORRECT_GUESS); // great! - break; - } else { - attempts++; - if (attempts < MAX_ATTEMPTS) - toClient.write(INCORRECT_GUESS); // wrong guess! - else { - toClient.write(GAME_OVER); // game over! + while (true) {// enter game loop + // Wait for first attempt of client to guess number + int guess = fromClient.read(); + // Check guess + if (guess == pick) { + toClient.write(CORRECT_GUESS); // great! break; + } else { + attempts++; + if (attempts < MAX_ATTEMPTS) + toClient.write(INCORRECT_GUESS); // wrong guess! + else { + toClient.write(GAME_OVER); // game over! + break; + } } } - } - System.out.println("Server: Game terminated!"); - attempts = 0; - } else { - System.err.println("Server: Received unexpected client code! Closing connection!"); + System.out.println("Server: Game terminated!"); + attempts = 0; + } else { + System.err.println("Server: Received unexpected client code! Closing connection!"); + gamerSocket.close(); + } + } catch (IOException e) { + System.err.println("Server: encountered connection problems. Cannot wait for connection requests!"); + e.printStackTrace(); } - gamerSocket.close();// close connection } } catch (IOException e) { - System.err.println("Server: encountered connection problems. Cannot wait for connection requests!"); + System.err.println("Server: Can't create a ServerSocket!"); e.printStackTrace(); } }