diff --git a/pom.xml b/pom.xml
index 8d6d7fe..7b09c1b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,6 +17,12 @@
5.8.2
test
+
+ org.assertj
+ assertj-core
+ 3.4.1
+ test
+
diff --git a/src/main/java/latice/application/LaticeApplicationWindow.java b/src/main/java/latice/application/LaticeApplicationWindow.java
index 479ff61..6258652 100644
--- a/src/main/java/latice/application/LaticeApplicationWindow.java
+++ b/src/main/java/latice/application/LaticeApplicationWindow.java
@@ -66,9 +66,6 @@ public class LaticeApplicationWindow extends Application {
Image image = new Image("backgroundLatice.png");
ImageView imageView = new ImageView(image);
- Tile blueBird = new Tile(Color.NAVYBLUE, Shape.BIRD);
- Tile greenLeaf = new Tile(Color.GREEN, Shape.FEATHER);
- Tile redFlower = new Tile(Color.RED, Shape.FLOWER);
ArrayList listRackTile;
ArrayList listTileImage;
@@ -93,10 +90,10 @@ public class LaticeApplicationWindow extends Application {
static Stage primaryStageCopy;
StackPane parentStackPane = new StackPane();
+ Label moonErrorLabel = new Label();
int validateBtnClickedCount;
-
public static void main(String[] args) {
Application.launch(args);
@@ -113,11 +110,16 @@ public class LaticeApplicationWindow extends Application {
//--------------------------------------------------------------------------------------
//Title
+ VBox topVbox = new VBox();
Text title = new Text("Latice");
title.setFont(new Font(30));
- root.setTop(title);
- root.setAlignment(title, Pos.CENTER);
- //--------------------------------------------------------------------------------------
+ topVbox.getChildren().add(title);
+ topVbox.setAlignment(Pos.CENTER);
+ moonErrorLabel.setFont(new Font(20));
+ moonErrorLabel.setTextFill(realColor.RED);
+ topVbox.getChildren().add(moonErrorLabel);
+ root.setTop(topVbox);
+
//Image
Pane pane = new Pane();
BackgroundImage myBG= new BackgroundImage(image,
@@ -200,7 +202,8 @@ public class LaticeApplicationWindow extends Application {
System.out.println("-----------------");
//deck.displayListTile();
-
+
+
//Confirm Button
Image checkMark = new Image("checkMark.png");
@@ -212,18 +215,46 @@ public class LaticeApplicationWindow extends Application {
@Override
public void handle(MouseEvent arg0) {
- validateBtnClickedCount++;
+
System.out.println("confirmed placement");
+ validateBtnClickedCount++;
+
}
});
+
//With Image
Rack rack2 = new Rack(deck);
HBox rackImage = rack2.createTileImage();
- rackImage.getChildren().add(confirmButton);
- rackImage.setMargin(rackImage.getChildren().get(4), new Insets(0,150,0,0));
+
+
+ //RackChange Button
+ Image changeIconImage = new Image("changeIcon.png");
+ ImageView changeIconView = new ImageView(changeIconImage);
+ Button changeButton = new Button("Change Rack", changeIconView);
+
+
+ changeButton.setOnMouseClicked(new EventHandler() {
+
+ @Override
+ public void handle(MouseEvent arg0) {
+
+
+ System.out.println("Changing Rack");
+ rack2.changeRack();
+
+ rackImage.getChildren().clear();
+
+ rackImage.getChildren().addAll(rack2.createTileImage(), confirmButton, changeButton);
+
+ //Setting drag n drop on tiles
+ setDragnDropOnRack(rackImage);
+ }
+
+ });
+ rackImage.getChildren().addAll(confirmButton, changeButton);
root.setBottom(rackImage);
//Adding lists to Arraylists
@@ -235,8 +266,7 @@ public class LaticeApplicationWindow extends Application {
//------------------------------------------------------------------------
-
- //Setting OnDragDetected on tiles
+ //Setting drag n drop on tiles
setDragnDropOnRack(rackImage);
System.out.println((indexTileClicked));
@@ -250,20 +280,57 @@ public class LaticeApplicationWindow extends Application {
rectFX.dragnDropOnAllRectangles(player2, indexTileClicked, validateBtnClickedCount);
//------------------------------------------------------------------------
- //rules / referee implementaion
-
- this.transition(namePlayer1, namePlayer2);
- //root.setLeft(namePlayer1);
-
- //###################### display name, score and deck of each player ######################//
- HBox players = new HBox();
-
- ArrayList allPlayers = new ArrayList<>();
- allPlayers.add(player1);
- allPlayers.add(player2);
-
- for (Player nameplayer : allPlayers ) {
- VBox player = new VBox();
+ @Override
+ public void handle(DragEvent arg0) {
+ if (arg0.isDropCompleted() == false) {
+ r[a][b].setFill(realColor.TRANSPARENT);
+ }
+ arg0.consume();
+ }
+
+ });
+
+ r[a][b].setOnDragOver(new EventHandler () {
+ @Override
+ public void handle(DragEvent arg0) {
+ arg0.acceptTransferModes(TransferMode.ANY);
+ arg0.consume();
+ }
+ });
+
+ r[a][b].setOnDragDropped(new EventHandler() {
+ @Override
+ public void handle(DragEvent arg0) {
+ System.out.println("entered");
+ Dragboard dragboard = arg0.getDragboard();
+
+ r[a][b].setFill(new ImagePattern(listTileImage.get(getIndexTileClicked())));
+ arg0.setDropCompleted(true);
+ assocRectangleTile.put(r[a][b], listRackTile.get(getIndexTileClicked()));
+ System.out.println(assocRectangleTile.toString());
+ moonErrorLabel.setText("");
+ if (validateBtnClickedCount == 0){
+ if (r[a][b] == r[4][4]) {
+ System.out.println("MOON valid placement");
+ }else {
+ moonErrorLabel.setText("Error ! Please place the first tile on the moon");
+ //removing all tiles from gameboard
+ for(int i=0; i() {
+ int a = i;
+ rackImage.getChildren().get(a).setOnDragDetected(new EventHandler() {
@Override
public void handle(MouseEvent arg0) {
- Dragboard dragboard = rackImage.getChildren().get(index).startDragAndDrop(TransferMode.ANY);
+ Dragboard dragboard = rackImage.getChildren().get(a).startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
- dragboard.setDragView(listTileImage.get(index));
+ dragboard.setDragView(listTileImage.get(a));
content.putString("Hello !");
- indexTileClicked = index;
- //setIndexTileClicked(index);
+ setIndexTileClicked(a);
dragboard.setContent(content);
arg0.consume();
-
}
});
- rackImage.getChildren().get(index).setOnDragDone(new EventHandler() {
+ rackImage.getChildren().get(a).setOnDragDone(new EventHandler() {
@Override
public void handle(DragEvent arg0) {
diff --git a/src/main/java/latice/view/GameFinishedScreen.fxml b/src/main/java/latice/view/GameFinishedScreen.fxml
index 95bf597..de9474d 100644
--- a/src/main/java/latice/view/GameFinishedScreen.fxml
+++ b/src/main/java/latice/view/GameFinishedScreen.fxml
@@ -1,8 +1,26 @@
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
diff --git a/src/main/resources/changeIcon.png b/src/main/resources/changeIcon.png
new file mode 100644
index 0000000..73da4b0
Binary files /dev/null and b/src/main/resources/changeIcon.png differ
diff --git a/src/test/java/latice/LaticeTest.java b/src/test/java/latice/LaticeTest.java
new file mode 100644
index 0000000..6613aff
--- /dev/null
+++ b/src/test/java/latice/LaticeTest.java
@@ -0,0 +1,227 @@
+package latice;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.ArrayList;
+
+import org.junit.jupiter.api.Test;
+import static org.assertj.core.api.Assertions.*;
+
+import latice.model.Color;
+import latice.model.Deck;
+import latice.model.Player;
+import latice.model.Position;
+import latice.model.Rack;
+import latice.model.Score;
+import latice.model.Shape;
+import latice.model.Tile;
+
+class LaticeTest {
+
+ //VEUILLEZ SAISIR Marc COMME NOM DU JOUEUR DANS LA CONSOLE
+
+
+ @Test
+ void should_return_tile_with_position_shape_color() {
+ //Arrange
+ Tile tile = new Tile(Color.GREEN, Shape.BIRD);
+ final int COLUMN = 10;
+ final int ROW = 10;
+
+
+ //Act
+ Color returnedColor = tile.getColor();
+ Shape returnedShape = tile.getShape();
+ tile.setPosition(new Position(ROW, COLUMN));
+ Integer returnedRowPosition = tile.getPositionRow();
+ Integer returnedColumnPosition = tile.getPositionColumn();
+
+
+ //Assert
+ assertEquals(Color.GREEN, returnedColor);
+ assertEquals(Shape.BIRD, returnedShape);
+ assertEquals(ROW, returnedRowPosition);
+ assertEquals(COLUMN, returnedColumnPosition);
+
+ }
+
+ @Test
+ void should_return_good_score() {
+ //Arrange
+ Score score = new Score();
+ final int POINTS = 0;
+
+ //Act
+ score.setScore(POINTS);
+
+ //Assert
+ assertEquals(POINTS, score.getScore());
+ }
+
+ @Test
+ void deck_test(){
+ //Arrange
+ ArrayList listOfTile = new ArrayList();
+ Deck deck;
+
+ //Act
+ 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);
+
+ }
+ }
+ deck = new Deck(listOfTile);
+
+ //Assert
+ assertEquals(listOfTile, deck.getListTile());
+
+
+ }
+
+ @Test
+ void should_change_rack() {
+ //Arrange
+ ArrayList listOfTile = new ArrayList();
+ Deck deck;
+ Deck deck2;
+ Rack rack;
+ Rack rack2;
+
+ //Act
+ 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);
+
+ }
+ }
+ deck = new Deck(listOfTile);
+ deck2 = new Deck(listOfTile);
+
+ rack = new Rack(deck);
+ rack2 = new Rack(deck2);
+
+ //Assert
+ assertEquals(5, rack.getListRackTile().size());
+
+ //changeRack Test
+ rack2.changeRack();
+
+ assertThat(rack.getListRackTile())
+ .isNotEqualTo(rack2.getListRackTile());
+
+
+ }
+
+ @Test
+ void should_set_new_rack() {
+ //Arrange
+ ArrayList listOfTile = new ArrayList();
+ Deck deck;
+ Deck deck2;
+ Rack rack;
+ Rack rack2;
+
+ //Act
+ 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);
+
+ }
+ }
+ deck = new Deck(listOfTile);
+ deck2 = new Deck(listOfTile);
+ rack = new Rack(deck);
+ rack2 = new Rack(deck2);
+ rack.setListRackTile(rack2.getListRackTile());
+
+ //Assert
+ assertEquals(rack.getListRackTile(), rack2.getListRackTile());
+ }
+
+ @Test
+ void should_remove_tile_from_rack() {
+ //Arrange
+ ArrayList listOfTile = new ArrayList();
+ Deck deck;
+ Rack rack;
+
+ //Act
+ 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);
+
+ }
+ }
+ deck = new Deck(listOfTile);
+ rack = new Rack(deck);
+ rack.removeTile(rack.getListRackTile().get(0));
+
+ //Assert
+ assertEquals(4, rack.getListRackTile().size());
+
+ }
+
+ @Test
+ void test_getters_and_seters_of_Player_class() {
+ //Arrange
+ ArrayList listOfTile = new ArrayList();
+ Deck deck;
+ Rack rack;
+
+ 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);
+
+ }
+ }
+ deck = new Deck(listOfTile);
+ rack = new Rack(deck);
+ Player player = new Player("Marc", new Score(), deck, rack);
+
+ //Act
+
+
+ //Assert
+ assertEquals("Marc", player.getName());
+ assertEquals(0, player.getScore());
+ assertEquals(rack, player.getRack());
+
+ player.addScore(2);
+ assertEquals(2, player.getScore());
+
+ player.diffScore(1);
+ assertEquals(1, player.getScore());
+
+ }
+
+
+
+ /*@Test
+ void () {
+ //Arrange
+
+ //Act
+
+ //Assert
+
+ }*/
+
+
+
+}