diff --git a/src/main/java/com/example/tictactoe_game/TicTacToeFX.java b/src/main/java/com/example/tictactoe_game/TicTacToeFX.java index ef0159c3a0fa207a94e0be461a9554fd7643aa16..cb69a8f7861b8feb2847a3c4ebb2cde61a6981cd 100644 --- a/src/main/java/com/example/tictactoe_game/TicTacToeFX.java +++ b/src/main/java/com/example/tictactoe_game/TicTacToeFX.java @@ -29,63 +29,100 @@ public class TicTacToeFX extends Application { public void start(Stage primaryStage) { EventHandler<GameEvent> gameEventHandler = gameEvent -> { - String currentPlayer = this.isXTurn ? "X" : "O"; + String winner = this.isXTurn ? "X" : "O"; + + // Dialogfenster erstellen final Stage dialog = new Stage(); dialog.initModality(Modality.APPLICATION_MODAL); dialog.initOwner(primaryStage); + VBox dialogVbox = new VBox(20); + dialogVbox.setAlignment(Pos.CENTER); + // Dialogtexte if (gameEvent.getEventType() == GameEvent.VICTORY_EVENT) { - dialogVbox.getChildren().add(new Text("This is a victory for player " + currentPlayer + " in turn " + this.currentTurn + "!")); + dialogVbox.getChildren().add(new Text("This is a victory for player " + winner + " in turn " + this.currentTurn + "!")); } else if (gameEvent.getEventType() == GameEvent.DRAW_EVENT) { - if (gameEvent.getEventType() == GameEvent.VICTORY_EVENT) { - dialogVbox.getChildren().add(new Text("This is a victory for player " + currentPlayer + "!")); - } else if (gameEvent.getEventType() == GameEvent.DRAW_EVENT) { - dialogVbox.getChildren().add(new Text("This is a Draw!")); - } + dialogVbox.getChildren().add(new Text("This is a Draw!")); + } - Button closeButton = new Button(); - closeButton.setText("Close"); - closeButton.setOnAction(event -> primaryStage.close()); - dialogVbox.getChildren().add(closeButton); - dialogVbox.setAlignment(Pos.CENTER); + // Schaltfläche "Schließen" + Button closeButton = new Button("Close"); + closeButton.setOnAction(event -> primaryStage.close()); + dialogVbox.getChildren().add(closeButton); - Scene dialogScene = new Scene(dialogVbox, 200, 100); - dialog.setScene(dialogScene); - dialog.show(); - } + //Schaltfläche "Restart" + Button restartButton = new Button("Restart"); + restartButton.setOnAction(event -> { + restartGame(); + dialog.close(); + }); + dialogVbox.getChildren().add(restartButton); + + + Scene dialogScene = new Scene(dialogVbox, 300, 200); + dialog.setScene(dialogScene); + dialog.show(); }; - // Erstelle das das Spielfeld + // Spielbrett erstellen GridPane grid = new GridPane(); // 3x3 Buttons hinzufügen for (int row = 0; row < 3; row++) { for (int col = 0; col < 3; col++) { Button button = new Button(); - button.setPrefSize(100, 100); // Größe der Buttons - grid.add(button, col, row); // Hinzufügen zum Grid + button.setPrefSize(100, 100); + grid.add(button, col, row); buttons[row][col] = button; button.setOnAction(event -> handleButtonClick(button)); } } + + // Ereignisse für Sieg und Unentschieden hinzufügen grid.addEventHandler(GameEvent.VICTORY_EVENT, gameEventHandler); grid.addEventHandler(GameEvent.DRAW_EVENT, gameEventHandler); - currentPlayer = new Text(); - currentPlayer.setText("Current Player: " + (isXTurn ? "X" : "O")); + // Texte für aktuellen Spieler und Züge + currentPlayer = new Text("Current Player: " + (isXTurn ? "X" : "O")); + turnCounter = new Text("Current Turn: " + currentTurn); + + // Elemente dem Spielfeld hinzufügen grid.add(currentPlayer, 3, 0); - turnCounter = new Text(); - turnCounter.setText("Current Turn: " + currentTurn); grid.add(turnCounter, 3, 1); + Button restartButton = new Button("Restart"); + restartButton.setOnAction(event -> restartGame()); + + VBox vbox = new VBox(10); + vbox.setAlignment(Pos.CENTER); + vbox.getChildren().addAll(grid, currentPlayer, turnCounter, restartButton); + // Szene und Stage erstellen - Scene scene1 = new Scene(grid, 400, 300); // Größe der Szene + Scene scene1 = new Scene(vbox, 400, 400); primaryStage.setTitle("Tic-Tac-Toe"); primaryStage.setScene(scene1); primaryStage.show(); + + + } + + private void restartGame(){ + isXTurn = true; + isGameOver = false; + currentTurn = 0; + currentPlayer.setText("Current Player: X"); + turnCounter.setText("Current Turn: 0"); + + for(int i = 0; i < 3; i++){ + for(int j = 0; j < 3; j++){ + buttons[i][j].setText(""); + } + } + } + private void handleButtonClick(Button button) { if (button.getText().isEmpty() && !this.isGameOver) { if (this.isXTurn) {