From ad8be0859c1e74459b65fdde023003e7b134eb29 Mon Sep 17 00:00:00 2001 From: David Reiser <david.060903@gmail.com> Date: Wed, 8 Jan 2025 04:20:41 +0100 Subject: [PATCH] win/tie screen after match with reset button --- GameUI.java | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/GameUI.java b/GameUI.java index 5e205ea..d3ccf47 100644 --- a/GameUI.java +++ b/GameUI.java @@ -9,9 +9,11 @@ import javafx.scene.layout.*; import javafx.stage.Stage; public class GameUI extends Application{ - + Scene game, winningScene; + BorderPane gameBorderPane, winningBorderPane; private Board board = new Board(); private Label playerLabel = new Label("Player X's turn"); + private Label winnerLabel = new Label("Won"); private Label scoreLabelX = new Label("Player X: 0"); private Label scoreLabelO= new Label("Player O: 0"); private Button[] buttons = new Button[9]; @@ -22,21 +24,23 @@ public class GameUI extends Application{ @Override public void start(Stage stage){ playerLabel.setStyle("-fx-font-size: 30px; -fx-font-family: 'Impact'; -fx-text-fill: blue;"); + winnerLabel.setStyle("-fx-font-size: 150px; -fx-font-family: 'Impact'; -fx-text-fill: blue;"); scoreLabelX.setStyle("-fx-font-size: 30px; -fx-font-family: 'Impact'; -fx-text-fill: black;"); scoreLabelO.setStyle("-fx-font-size: 30px; -fx-font-family: 'Impact'; -fx-text-fill: black;"); - BorderPane borderPane= new BorderPane(); + gameBorderPane = new BorderPane(); + winningBorderPane = new BorderPane(); GridPane gridPane = new GridPane(); for(int i = 0; i < 9; i++){ int index = i; buttons[i] = new Button(); buttons[i].setPrefSize(150, 150); - buttons[i].setOnAction(e -> handleTurn(index)); + buttons[i].setOnAction(e -> handleTurn(index, stage)); gridPane.add(buttons[i], i % 3, i / 3); } - borderPane.setCenter(gridPane); + gameBorderPane.setCenter(gridPane); //HBox for the labels HBox Box = new HBox(20); @@ -59,7 +63,7 @@ public class GameUI extends Application{ scoreBox.getChildren().addAll(scoreLabelX, scoreLabelO); Box.getChildren().add(scoreBox); - borderPane.setTop(Box); + gameBorderPane.setTop(Box); //board allignment gridPane.setPadding(new Insets(10)); @@ -67,9 +71,22 @@ public class GameUI extends Application{ gridPane.setVgap(30); gridPane.setAlignment(Pos.CENTER); + //reset button + Button reset = new Button("Reset"); + reset.setStyle("-fx-font-size: 30px; -fx-font-family: 'Impact'; -fx-text-fill: black;"); + reset.setOnAction(e -> stage.setScene(game)); + + //winning/tie screen + winnerLabel.setAlignment(Pos.CENTER); + VBox finalBox = new VBox(35); + finalBox.setAlignment(Pos.CENTER); + finalBox.getChildren().addAll(winnerLabel, reset); + winningBorderPane.setCenter(finalBox); + winningScene = new Scene(winningBorderPane, 1500,850); + //main Scene - Scene scene = new Scene(borderPane, 1500, 850); - stage.setScene(scene); + game = new Scene(gameBorderPane, 1500, 850); + stage.setScene(game); stage.setTitle("Tick-Tack-Trauma"); stage.show(); } @@ -78,7 +95,7 @@ public class GameUI extends Application{ * * @param index of the selectet tile */ - private void handleTurn(int index){ + private void handleTurn(int index,Stage stage){ if (board.tiles[index].exist_owner()) { return; } @@ -101,14 +118,16 @@ public class GameUI extends Application{ //changes label state for the winning player and updates its score if (board.victoryCheck()) { - playerLabel.setText("Player " + (board.currentPlayer == 0 ? "X" : "O") + " wins!"); + winnerLabel.setText("Player " + (board.currentPlayer == 0 ? "X" : "O") + " wins!"); updatePlayerScore(); + stage.setScene(winningScene); return; } //changes label state to draw if (board.marks == 9) { - playerLabel.setText("It's a draw!"); + winnerLabel.setText("It's a draw!"); + stage.setScene(winningScene); return; } } -- GitLab