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 {
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, 150, 150);
dialog.setScene(dialogScene);
dialog.show();
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;
80
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
}
}
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);
}
}