/** Keps track of the player times; */ public void run() { try { while (!gameEnd) { Thread.sleep(1000); if (gameEnd) break; if (currentPlayer) { timeLeftP1--; if (timeLeftP1 <= 0) { player1.sendGameEnd(false); player2.sendGameEnd(true); dbHandler.saveGame(player2.getUserName(), player1.getUserName(), timeLimit); gameEnd = true; break; } } else { timeLeftP2--; if (timeLeftP2 <= 0) { player2.sendGameEnd(false); player1.sendGameEnd(true); dbHandler.saveGame(player1.getUserName(), player2.getUserName(), timeLimit); gameEnd = true; break; } } player1.sendTimeUpdate(timeLeftP1, timeLeftP2); player2.sendTimeUpdate(timeLeftP2, timeLeftP1); } } catch (InterruptedException e) { } }
/** * Checks and handle victory and filled board * * @param activePlayer * @param inactivePlayer * @param x * @param y * @param symbol */ private void gameCheck( PlayerConnection activePlayer, PlayerConnection inactivePlayer, int x, int y, short symbol) { if (gameField[x][y] == 0) { gameField[x][y] = symbol; if (this.VictoryCheck()) { activePlayer.sendGameEnd(true); inactivePlayer.sendGameEnd(false); dbHandler.saveGame(activePlayer.getUserName(), inactivePlayer.getUserName(), timeLimit); gameEnd = true; } else if (this.checkBoardFull()) { activePlayer.sendGameEnd(false); inactivePlayer.sendGameEnd(true); dbHandler.saveGame(inactivePlayer.getUserName(), activePlayer.getUserName(), timeLimit); gameEnd = true; } else { inactivePlayer.sendYourTurn(x, y); } currentPlayer = !currentPlayer; } else { activePlayer.sendIllegalMove(); } }
/** * Handles the case when a player disconects * * @param disconectedPlayer */ public void disconnect(PlayerConnection disconectedPlayer) { if (disconectedPlayer == player1) { player2.sendGameEnd(true); dbHandler.saveGame(player2.getUserName(), player1.getUserName(), timeLimit); } else if (disconectedPlayer == player2) { player1.sendGameEnd(true); dbHandler.saveGame(player1.getUserName(), player2.getUserName(), timeLimit); } gameEnd = true; }