Step 7 : change Rack implemented and working sucessfully

master
Cemal Odabasioglu 2022-06-01 14:50:01 +02:00
parent 625db82e12
commit 149f49f7f8
3 changed files with 112 additions and 42 deletions

View File

@ -33,6 +33,7 @@ import javafx.scene.layout.BorderPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.ImagePattern;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Font;
@ -65,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<Tile> listRackTile;
ArrayList<Image> listTileImage;
@ -86,11 +84,11 @@ public class LaticeApplicationWindow extends Application {
StackPane stackPane = new StackPane();
static Stage primaryStageCopy;
StackPane parentStackPane = new StackPane();
Label moonErrorLabel = new Label();
int validateBtnClickedCount;
public static void main(String[] args) {
Application.launch(args);
@ -106,10 +104,15 @@ 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();
@ -172,6 +175,7 @@ public class LaticeApplicationWindow extends Application {
//Confirm Button
Image checkMark = new Image("checkMark.png");
ImageView checkMarkView = new ImageView(checkMark);
@ -182,18 +186,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<MouseEvent>() {
@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
@ -205,34 +237,8 @@ public class LaticeApplicationWindow extends Application {
//------------------------------------------------------------------------
//Setting OnDragDetected on tiles
for (int i=0; i<5; i++) {
int a = i;
rackImage.getChildren().get(a).setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
Dragboard dragboard = rackImage.getChildren().get(a).startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
dragboard.setDragView(listTileImage.get(a));
content.putString("Hello !");
setIndexTileClicked(a);
dragboard.setContent(content);
arg0.consume();
}
});
rackImage.getChildren().get(a).setOnDragDone(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent arg0) {
}
});
}
//Setting drag n drop on tiles
setDragnDropOnRack(rackImage);
System.out.println((indexTileClicked));
ImagePattern imagePattern = new ImagePattern(listTileImage.get(getIndexTileClicked()));
@ -286,11 +292,20 @@ public class LaticeApplicationWindow extends Application {
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<NUMBER_OF_BOX_ON_ONE_LINE; i++) {
for(int j=0; j<NUMBER_OF_BOX_ON_ONE_LINE; j++) {
r[i][j].setFill(realColor.TRANSPARENT);
}
}
System.out.println("Please place first Tile on MOON");
}
}
@ -321,6 +336,38 @@ public class LaticeApplicationWindow extends Application {
primaryStage.show();
}
private void setDragnDropOnRack(HBox rackImage) {
//Setting drag n drop on tiles
for (int i=0; i<5; i++) {
int a = i;
rackImage.getChildren().get(a).setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent arg0) {
Dragboard dragboard = rackImage.getChildren().get(a).startDragAndDrop(TransferMode.ANY);
ClipboardContent content = new ClipboardContent();
dragboard.setDragView(listTileImage.get(a));
content.putString("Hello !");
setIndexTileClicked(a);
dragboard.setContent(content);
arg0.consume();
}
});
rackImage.getChildren().get(a).setOnDragDone(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent arg0) {
}
});
}
}
public static void setRootLayout(StackPane root) {
rootLayout = root;
}
@ -365,4 +412,9 @@ public class LaticeApplicationWindow extends Application {
primaryStageCopy.setTitle("working");
}
public void displayMoonError() {
}
}

View File

@ -1,8 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.Pane?>
<BorderPane xmlns:fx="http://javafx.com/fxml/1">
<!-- TODO Add Nodes -->
<BorderPane prefHeight="241.0" prefWidth="386.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/17">
<center>
<Pane prefHeight="200.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<children>
<Button fx:id="replayBtn" layoutX="42.0" layoutY="163.0" mnemonicParsing="false" prefHeight="50.0" prefWidth="127.0" textFill="TRANSPARENT" />
<Button fx:id="quitBtn" layoutX="221.0" layoutY="163.0" mnemonicParsing="false" prefHeight="51.0" prefWidth="129.0" textFill="TRANSPARENT" />
<ImageView fitHeight="241.0" fitWidth="386.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../../resources/GameFinishedImage.png" />
</image>
</ImageView>
<Label alignment="CENTER_RIGHT" layoutX="4.0" layoutY="73.0" prefHeight="22.0" prefWidth="154.0" textAlignment="CENTER" />
</children>
</Pane>
</center>
</BorderPane>

Binary file not shown.

After

Width:  |  Height:  |  Size: 393 B