Newer
Older
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Text;
import javafx.stage.Modality;
import javafx.stage.Stage;
public class TicTacToeFX extends Application {
String currentPlayer = isXTurn ? "X" : "O";
final Stage dialog = new Stage();
dialog.initModality(Modality.APPLICATION_MODAL);
dialog.initOwner(primaryStage);
VBox dialogVbox = new VBox(20);
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!"));
}
Scene dialogScene = new Scene(dialogVbox, 200, 100);
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
buttons[row][col] = button;
button.setOnAction(event -> handleButtonClick(button));
grid.addEventHandler(GameEvent.VICTORY_EVENT, gameEventHandler);
grid.addEventHandler(GameEvent.DRAW_EVENT, gameEventHandler);
Scene scene1 = new Scene(grid, 300, 300); // Größe der Szene
private void handleButtonClick(Button button) {
if(button.getText().isEmpty()) {
if (this.isXTurn) {
button.setText("X");
} else {
button.setText("O");
}
if (checkForWin()) {
button.fireEvent(new GameEvent(GameEvent.VICTORY_EVENT));
button.fireEvent(new GameEvent(GameEvent.DRAW_EVENT));
this.isXTurn = !this.isXTurn;
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
}
}
private boolean checkForWin(){
for(int row = 0; row < 3; row++){
String text1 = buttons[row][0].getText();
String text2 = buttons[row][1].getText();
String text3 = buttons[row][2].getText();
if(!text1.isEmpty() && text1.equals(text2) && text1.equals(text3)){
return true;
}
}
for(int col = 0; col < 3; col++){
String text1 = buttons[0][col].getText();
String text2 = buttons[1][col].getText();
String text3 = buttons[2][col].getText();
if(!text1.isEmpty() && text1.equals(text2) && text1.equals(text3)){
return true;
}
}
String upperLeftCorner = buttons[0][0].getText();
String center = buttons[1][1].getText();
String lowerRightCorner = buttons[2][2].getText();
String upperRightCorner = buttons[0][2].getText();
String lowerLeftCorner = buttons[2][0].getText();
if(!upperLeftCorner.isEmpty() && upperLeftCorner.equals(center) && upperLeftCorner.equals(lowerRightCorner)){
return true;
}
if(!upperRightCorner.isEmpty() && upperRightCorner.equals(center) && upperRightCorner.equals(lowerLeftCorner)){
return true;
}
return false;
}
private boolean checkForDraw(){
for(int row = 0; row < 3; row++){
for(int col = 0; col < 3; col++){
if(buttons[row][col].getText().isEmpty()){
return false;
}
}
}
return true;
}
public static void main(String[] args) {
launch(args);
}
}