diff --git a/src/main/java/latice/application/LaticeApplicationConsole.java b/src/main/java/latice/application/LaticeApplicationConsole.java index bf0f1ad..ac850f9 100644 --- a/src/main/java/latice/application/LaticeApplicationConsole.java +++ b/src/main/java/latice/application/LaticeApplicationConsole.java @@ -24,7 +24,6 @@ public class LaticeApplicationConsole { for (Color color : Color.values()) { for (Shape shape : Shape.values()) { Tile tile = new Tile(color, shape); - System.out.println(color.getStringColor() + shape.getStringShape()+ ".png"); listOfTile.add(tile); @@ -38,19 +37,14 @@ public class LaticeApplicationConsole { Deck deck1 = new Deck(listOfTile); Deck deck2 = new Deck(listOfTile); - Rack rack1 = new Rack(deck1); - Rack rack2 = new Rack(deck2); - - Score scorePlayer1 = new Score(); - Score scorePlayer2 = new Score(); + Player player1 = new Player("player1", deck1); Player player2 = new Player("player2", deck2); - System.out.println("-----------------"); + GameBoard board = new GameBoard(); - board.displayGameBoard(); - System.out.println(Objects.equals(board.getGridBoard()[1][0], Tile.class)); + Scanner play = new Scanner(System.in); Player player; Boolean round; @@ -74,15 +68,17 @@ public class LaticeApplicationConsole { while (round) { player.getRack().displayRack(); System.out.println("Vous avez " + player.getScore() +" points, que voulez-vous faire ?\n" - + " 1. Jouer une Tuile (à partir de la deuxième tuile jouée, cela coûtera 2 points)\n" - + " 2. Acheter une action supplémentaire\n" + + " 1. Jouer une Tuile\n" + + " 2. Acheter une action supplémentaire(coûte 2 points)\n" + " 3. Changer le Rack et passer(coûte 3 points)\n" + " 4. Passer\n"); System.out.print("Choix : "); int choiceMenu = Integer.parseInt(play.next()); switch(choiceMenu) { + case 1: if (freeTile) { + freeTile = false; Boolean rulesCheck = false; while (rulesCheck == false) { @@ -102,17 +98,25 @@ public class LaticeApplicationConsole { player.getRack().removeTile(tile); board.displayGameBoard(); + }else { + System.out.println("Vous n'avez pas acheter une action pour jouer un autre tuile dans ce tour ! Veuillez en acheter une ou passer votre tour !"); } + break; case 2: - if (player.getScore()>=3) { - //Buy another action and remove 2 points from score - player.Play(play, board, 0); - player.removePointsFromScore(2); + if (freeTile) { + System.out.println("Vous avez dejà une action pour jouer une tuile ! Veuillez jouer votre tuile d'abord pour ensuite acheter une nouvelle action pour jouer une autre tuile !"); }else { - System.out.println("Il vous faut 2 points pour acheter une nouvelle action !"); + if (player.getScore()>=2) { + //Buy another action and remove 2 points from score + player.Play(play, board, 0); + player.removePointsFromScore(2); + freeTile = true; + }else { + System.out.println("Il vous faut 2 points pour acheter une nouvelle action !"); + } } break; diff --git a/src/main/java/latice/application/LaticeApplicationWindow.java b/src/main/java/latice/application/LaticeApplicationWindow.java index 02f79f1..677ef32 100644 --- a/src/main/java/latice/application/LaticeApplicationWindow.java +++ b/src/main/java/latice/application/LaticeApplicationWindow.java @@ -64,7 +64,7 @@ public class LaticeApplicationWindow extends Application { //lists for tiles ArrayList listRackTile; ArrayList listOfTilesInRack; - ArrayList listOfTile = new ArrayList(); + //ArrayList listOfTile = new ArrayList(); static StackPane rootLayout; public static int indexTileClicked; @@ -260,21 +260,21 @@ public class LaticeApplicationWindow extends Application { //Creating tiles - for (Color color : Color.values()) { + /*for (Color color : Color.values()) { for (Shape shape : Shape.values()) { Tile tile = new Tile(color, shape); listOfTile.add(tile); } - } + }*/ - System.out.println("-----------------"); + /*System.out.println("-----------------"); System.out.println("Notre Deck :"); Deck deck = new Deck(listOfTile); System.out.println("-----------------"); Rack rack = new Rack(deck); - System.out.println("-----------------"); + System.out.println("-----------------");*/ //Player @@ -299,11 +299,11 @@ public class LaticeApplicationWindow extends Application { changeButton.setPrefHeight(Constant.ACTION_BUTTONS_HEIGHT); //Buy another action Button - Image buyActionImage = new Image("buyAction.png"); + /*Image buyActionImage = new Image("buyAction.png"); ImageView buyActionView = new ImageView(buyActionImage); buyActionButton = new Button("Buy Action (2 points)", buyActionView); buyActionButton.setPrefWidth(Constant.ACTION_BUTTONS_WIDTH); - buyActionButton.setPrefHeight(Constant.ACTION_BUTTONS_HEIGHT); + buyActionButton.setPrefHeight(Constant.ACTION_BUTTONS_HEIGHT);*/ confirmButton.setOnMouseClicked(new EventHandler() { //confirming the end of the round and switching round @@ -320,12 +320,13 @@ public class LaticeApplicationWindow extends Application { e.printStackTrace(); } + confirmBtnClickedCount++; - player.getRack().displayRack(); + + ////// for the actual player ////// player.getRack().updateRack(); - player.getRack().displayRack(); - + ////// changing player ////// //making names colored in red to make the players know which player's round is if (confirmBtnClickedCount%2 == 0) { playerFX.setFillName(Constant.realColor.BLACK); @@ -339,12 +340,14 @@ public class LaticeApplicationWindow extends Application { playerFX.setFillName(Constant.realColor.RED); } + ////// for the next player ////// isFreePlacement = true; rackTileImage = player.getRack().createTileImage(); + //Setting drag n drop on tiles setDragnDropOnRack(rackTileImage, player); setDragnDropOnRectangles(rect, board, referee, player); - rackTileImage.getChildren().addAll(confirmButton, changeButton, buyActionButton); + rackTileImage.getChildren().addAll(confirmButton, changeButton/*, buyActionButton*/); borderPane.setBottom(rackTileImage); @@ -378,7 +381,7 @@ public class LaticeApplicationWindow extends Application { }); - //With Image + //Rack with Image rackTileImage = player.getRack().createTileImage(); //Adding lists to Arraylists @@ -393,7 +396,7 @@ public class LaticeApplicationWindow extends Application { public void handle(MouseEvent arg0) { ////// for the actual player ////// - if (player.getScore() > 1) { + if (player.getScore() >= 3) { System.out.println("Changing Rack"); confirmBtnClickedCount++; player.getRack().changeRack(); @@ -421,7 +424,7 @@ public class LaticeApplicationWindow extends Application { //Setting drag n drop on tiles setDragnDropOnRack(rackTileImage, player); - rackTileImage.getChildren().addAll(confirmButton, changeButton, buyActionButton); + rackTileImage.getChildren().addAll(confirmButton, changeButton/*, buyActionButton*/); setDragnDropOnRectangles(rect, board, referee, player); borderPane.setBottom(rackTileImage); @@ -434,16 +437,16 @@ public class LaticeApplicationWindow extends Application { }); - buyActionButton.setOnMouseClicked(new EventHandler() { + /*buyActionButton.setOnMouseClicked(new EventHandler() { @Override public void handle(MouseEvent arg0) { gameInfoLabel.setText(player.getName() + ", you can now play another time !"); } - }); + });*/ - rackTileImage.getChildren().addAll(confirmButton, changeButton, buyActionButton); + rackTileImage.getChildren().addAll(confirmButton, changeButton/*, buyActionButton*/); setDragnDropOnRack(rackTileImage, player); System.out.println(); borderPane.setBottom(rackTileImage); @@ -564,7 +567,7 @@ public class LaticeApplicationWindow extends Application { }else { //if it's not the first round of the game - //not removing the tile from the rack + //putting the position of the gameboard's case on the tile from the rack player.getRack().getListRackTile().get(indexTileClicked).setPosition(new Position(a,b)); //verify if a tile is already placed diff --git a/src/main/java/latice/controller/PlayerNameInputController.java b/src/main/java/latice/controller/PlayerNameInputController.java index 3ceb0a2..d00b3f5 100644 --- a/src/main/java/latice/controller/PlayerNameInputController.java +++ b/src/main/java/latice/controller/PlayerNameInputController.java @@ -60,8 +60,8 @@ public class PlayerNameInputController { //setting player names String name1 = nomJoueur1.getText(); String name2 = nomJoueur2.getText(); + System.out.println("nom des joueurs :"); System.out.println(nomJoueur1.getText()); - System.out.println("nom des joueurs"); System.out.println(nomJoueur2.getText()); namePlayer1 = name1; namePlayer2 = name2; diff --git a/src/main/java/latice/model/Player.java b/src/main/java/latice/model/Player.java index f01ca15..13a53d0 100644 --- a/src/main/java/latice/model/Player.java +++ b/src/main/java/latice/model/Player.java @@ -22,20 +22,7 @@ public class Player { public Player(String name, Deck deck) { this(name, new Score(), deck, new Rack(deck)); - } - - /*public Player(Score score, Deck deck, Rack rack) { - this(namePlayer,score,deck,rack); - //Demande le nom du joueur - Scanner enterPlayerName = new Scanner(System.in); - System.out.println("Veuilez entrer votre nom :"); - String namePlayer = enterPlayerName.next(); - - - }*/ - - - + } public String getName() { return this.name; diff --git a/src/main/java/latice/model/Rules.java b/src/main/java/latice/model/Rules.java index a0d634c..018a811 100644 --- a/src/main/java/latice/model/Rules.java +++ b/src/main/java/latice/model/Rules.java @@ -111,32 +111,38 @@ public class Rules { return this.moonRule(board, tile); }else { System.out.println("-----------------------------"); - if (this.sunRule(board, tile)){ - player.addPointsToScore(2); - } - int nbr = this.neighborRule(board, tile); - if (nbr == 0) { - System.out.println("l'emplacement où est posé la tuile n'a pas de voisin ou il n'y a pas de correspondance avec les voisins !"); + if (this.checkPositionRule(board, tile) == false ) { + System.out.println("Erreur ! la tuile ne peut pas être placé ici car il y a déjà une tuile placé"); return false; - }else { - if (nbr == 2) { - System.out.println("Vous avez gagné 1 point"); - player.addPointsToScore(1); - }else if (nbr == 3) { - System.out.println("Vous avez gagné 2 points"); - player.addPointsToScore(2); - }else if (nbr == 4) { - System.out.println("Vous avez gagné 4 points"); - player.addPointsToScore(4); + int nbr = this.neighborRule(board, tile); + if (nbr == 0) { + System.out.println("Erreur ! L'emplacement où est posé la tuile n'a pas de voisin ou il n'y a pas de correspondance avec les voisins !"); + return false; + + }else { + if (nbr == 2) { + System.out.println("Vous avez gagné 1 point"); + player.addPointsToScore(1); + }else if (nbr == 3) { + System.out.println("Vous avez gagné 2 points"); + player.addPointsToScore(2); + }else if (nbr == 4) { + System.out.println("Vous avez gagné 4 points"); + player.addPointsToScore(4); + } + + if (this.sunRule(board, tile)){ + player.addPointsToScore(2); + } } return true; - } + } + + } } - -} diff --git a/src/main/java/latice/model/console/GameBoard.java b/src/main/java/latice/model/console/GameBoard.java index 0bf319e..2bd45b3 100644 --- a/src/main/java/latice/model/console/GameBoard.java +++ b/src/main/java/latice/model/console/GameBoard.java @@ -17,7 +17,7 @@ public class GameBoard { for (int i = 0; i < DIMENSION; i++) { for (int j = 0; j < DIMENSION; j++) { - System.out.print("|"); + if (i == 4 && j == 4) { //Affiche la lune au centre du plateau this.gridBoard[i][j] = MOON; @@ -38,10 +38,7 @@ public class GameBoard { }else { this.gridBoard[i][j] = BLUE; } - - if (j == 8) { - System.out.println("|"); - } + } } } @@ -53,28 +50,28 @@ public class GameBoard { System.out.print(i+1 + ". "); for (int j = 0; j < DIMENSION; j++) { System.out.print("|"); - if (i == 4 && j == 4) { //Affiche la lune au centre du plateau + if (i == 4 && j == 4) { //display moon in the center of the board if (this.gridBoardTile[i][j] == null) { System.out.print(this.gridBoard[i][j]); }else { System.out.print(" " + this.gridBoardTile[i][j].getShapeConsole() + this.gridBoardTile[i][j].getColorConsole() + " "); } - }else if (i == j && (i <= 2 || i >= 6)) { //Affiche la diagonale ('\') de soleil + }else if (i == j && (i <= 2 || i >= 6)) { //display the diagonal ('\') of the sun if (this.gridBoardTile[i][j] == null) { System.out.print(this.gridBoard[i][j]); }else { System.out.print(" " + this.gridBoardTile[i][j].getShapeConsole() + this.gridBoardTile[i][j].getColorConsole() + " "); } - }else if (i == DIMENSION-1-j && (i <= 2 || i >= 6)) { //Affiche la diagonale ('/') de soleil + }else if (i == DIMENSION-1-j && (i <= 2 || i >= 6)) { //display the diagonal ('/') of the sun if (this.gridBoardTile[i][j] == null) { System.out.print(this.gridBoard[i][j]); }else { System.out.print(" " + this.gridBoardTile[i][j].getShapeConsole() + this.gridBoardTile[i][j].getColorConsole() + " "); } - }else if ( ((i == 0 || i == 8)&& j == 4) || (i== 4 && (j == 0 || j == 8)) ) {//Affiche les soleils au mileu de chaque coté ('+') + }else if ( ((i == 0 || i == 8)&& j == 4) || (i== 4 && (j == 0 || j == 8)) ) {//display the suns at the middle of each side ('+') if (this.gridBoardTile[i][j] == null) { System.out.print(this.gridBoard[i][j]); }else { diff --git a/src/main/java/latice/model/console/Rack.java b/src/main/java/latice/model/console/Rack.java index 2c01ed4..6f6c8c5 100644 --- a/src/main/java/latice/model/console/Rack.java +++ b/src/main/java/latice/model/console/Rack.java @@ -20,7 +20,7 @@ public class Rack { Tile tile; - System.out.println("Il y a dans le rack : " + listRackTile.size() + " valeurs"); + //System.out.println("Il y a dans le rack : " + listRackTile.size() + " valeurs"); for (int i = 0; i < 5; i++) { int index = (int)(Math.random()*(((this.deck.getListTile()).size()-1)-0+1)+0); //(int)(Math.random()*(max-min+1)+min); @@ -28,16 +28,10 @@ public class Rack { tile = (this.deck.getListTile()).get(index); this.listRackTile.add(tile); this.deck.getListTile().remove(index); - - - - - - - + } - System.out.println("Il y a dans le rack : " + this.listRackTile.size() + " valeurs"); + //System.out.println("Il y a dans le rack : " + this.listRackTile.size() + " valeurs"); } public ArrayList getListRackTile() { @@ -52,7 +46,7 @@ public class Rack { public void updateRack() { Tile tile; - System.out.println("nomdre de tuile dans le rack : " + this.listRackTile.size()); + //System.out.println("nomdre de tuile dans le rack : " + this.listRackTile.size()); for (int i = this.listRackTile.size(); i < 5 ; i++) { int index = (int)(Math.random()*( ((this.deck.getListTile()).size()-1)-0+1)+0); //(int)(Math.random()*(max-min+1)+min);