diff --git a/src/GomokuGame.java b/src/GomokuGame.java index f44fed5..3e53eda 100644 --- a/src/GomokuGame.java +++ b/src/GomokuGame.java @@ -15,15 +15,19 @@ public class GomokuGame { private Player player1; private Player player2; + private Player currentPlayer; private GomokuBoard board; private GomokuRenderer renderer; + private boolean playRenderer= true; Color colorP1; - int currP; + int currentPlayerInt; int nbTokens1, nbTokens2; + Coordinate cellCoor = null; + public static void main(String[] args) { // Test GomokuGame g = new GomokuGame(); @@ -52,16 +56,28 @@ public class GomokuGame { this.board = new GomokuBoard(15, 15); this.colorP1 = colorPlayer1; - this.currP = this.player1.color == Color.WHITE ? 1 : 2; + currentPlayer = this.player1.color == Color.WHITE ? this.player1: this.player2; + this.currentPlayerInt = this.player1.color == Color.WHITE ? 1 : 2; this.nbTokens1 = 60; this.nbTokens2 = 60; } public void startGame() { - + /* GomokuCell actualPlayedCell = play(player1); - if( NB_CELL_PLAY >= board.countMax(board.countAlignedCells(actualPlayedCell))) + if( NB_CELL_PLAY <= board.countMax(board.countAlignedCells(actualPlayedCell))) + { + System.out.println("c'est gangée !"); + } + */ + GomokuCell currentPlay = null; + while (currentPlay == null) { + currentPlay = this.play(this.currentPlayer); + } + this.currentPlayer = this.nextPlayer(); + + if( NB_CELL_PLAY <= board.countMax(board.countAlignedCells(currentPlay))) { System.out.println("c'est gangée !"); } @@ -73,10 +89,30 @@ public class GomokuGame { * @param Player get player to play the cell. */ public GomokuCell play(Player player) { - - GomokuCell cellToPlay = player.chooseMove(board); - cellToPlay.setState(player.color); + GomokuCell cellToPlay = null; + if (this.playRenderer){ // If we play the game with the renderer. + while (this.cellCoor == null) { + try{ + wait(16); + } + catch(InterruptedException e){ + this.save(null); + System.out.println(e); + } + } + cellToPlay= this.board.get(this.cellCoor.x, this.cellCoor.y); + if (!cellToPlay.isPlayable()) { // If the cell is not playable we return null to not play. + return null; + } + cellToPlay.setState(player.color); + this.cellCoor = null; + } + else{ + cellToPlay = player.chooseMove(board); + cellToPlay.setState(player.color); + } return cellToPlay; + } @@ -85,7 +121,7 @@ public class GomokuGame { // save the game state to the file // 1. Open the file // 2. Write the first line with: - // w h colorP1 currP nbTokens1 nbTokens2 + // w h colorP1 currentPlayerInt nbTokens1 nbTokens2 // 3. Write the next h lines with the board // 4. Close the file // 5. Return true if successful, false otherwise @@ -101,7 +137,7 @@ public class GomokuGame { this.getBoard().getWidth(), this.getBoard().getHeight(), colorP1, - currP, + currentPlayerInt, nbTokens1, nbTokens2 )); @@ -143,7 +179,7 @@ public class GomokuGame { // load the game state from the file // 1. Open the file // 2. Read the first line to get: - // w h colorP1 currP nbTokens1 nbTokens2 + // w h colorP1 currentPlayerInt nbTokens1 nbTokens2 // 3. Read the next h lines to get the board // 4. Close the file // 5. Initialize the board with the read values @@ -164,7 +200,7 @@ public class GomokuGame { w = Integer.parseInt(parts[0]); h = Integer.parseInt(parts[1]); colorP1 = Color.valueOf(parts[2]); - currP = Integer.parseInt(parts[3]); + currentPlayerInt = Integer.parseInt(parts[3]); nbTokens1 = Integer.parseInt(parts[4]); nbTokens2 = Integer.parseInt(parts[5]); @@ -221,6 +257,13 @@ public class GomokuGame { return true; } + private Player nextPlayer(){ + if (this.currentPlayer == this.player1){ + return this.player2; + } + return player1; + } + public GomokuBoard getBoard() { return this.board; }