/** 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 a new move made by player userName on position xy * * @param userName * @param x * @param y */ public synchronized void NewMove(String userName, int x, int y) { if (userName.equals(player1.getUserName())) { if (currentPlayer) { System.out.println("preGameCheck"); gameCheck(player1, player2, x, y, (short) 1); } else { player1.sendIllegalMove(); } } else if (userName.equals(player2.getUserName())) { if (!currentPlayer) { gameCheck(player2, player1, x, y, (short) 2); } else { player2.sendIllegalMove(); } } else System.out.println("oh gawd"); }
/** * Initilizes the game * * @param player1 * @param player2 * @param timeLimit */ public Game(PlayerConnection player1, PlayerConnection player2, int timeLimit) { this.player1 = player1; this.player2 = player2; this.timeLimit = timeLimit; gameEnd = false; gameField = new short[15][15]; // Creates the gameField // Fills all the cells in gameField to the value of 0. for (int a = 0; a < 15; a++) for (int b = 0; b < 15; b++) gameField[a][b] = 0; dbHandler = DBHandler.getDatabase(); // Gets a reference to the database if (timeLimit > 0) { timeLeftP1 = timeLimit * 60; timeLeftP2 = timeLeftP1; this.start(); } player1.setCurrentGame(this); player2.setCurrentGame(this); // Choose the random player to start the game Random rnd = new Random(); int temp = rnd.nextInt(9); if (temp % 2 == 0) currentPlayer = true; else currentPlayer = false; // Calls the GameStarted method for every player. player1.GameStarted(currentPlayer, player2.getUserName(), timeLimit); player2.GameStarted(!currentPlayer, player1.getUserName(), timeLimit); }
public void b() { for (int i = 0; i < this.c.size(); ++i) { PlayerConnection playerconnection = (PlayerConnection) this.c.get(i); try { playerconnection.e(); } catch (Exception exception) { if (playerconnection.networkManager instanceof MemoryNetworkManager) { CrashReport crashreport = CrashReport.a((Throwable) exception, "Ticking memory connection"); CrashReportSystemDetails crashreportsystemdetails = crashreport.a("Ticking connection"); crashreportsystemdetails.a( "Connection", (Callable) (new CallableConnection(this, playerconnection))); throw new ReportedException(crashreport); } this.b .getLogger() .warning( "Failed to handle packet for " + playerconnection.player.getLocalizedName() + "/" + playerconnection.player.q() + ": " + exception, (Throwable) exception); playerconnection.disconnect("Internal server error"); } if (playerconnection.disconnected) { this.c.remove(i--); } playerconnection.networkManager.a(); } }
/** * 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; }
public static boolean validatePlayerForConnection(int characterID, PlayerConnection pc) { if (pc.getCharacterID() == characterID) { return true; } return false; }