Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package vl07;
- import java.util.Optional;
- import javafx.application.Application;
- import javafx.event.ActionEvent;
- import javafx.event.EventHandler;
- import javafx.fxml.FXML;
- import javafx.fxml.FXMLLoader;
- import javafx.geometry.Insets;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.control.Alert;
- import javafx.scene.control.Button;
- import javafx.scene.control.ButtonType;
- import javafx.scene.control.Dialog;
- import javafx.scene.control.Label;
- import javafx.scene.control.PasswordField;
- import javafx.scene.control.TextField;
- import javafx.scene.control.Alert.AlertType;
- import javafx.scene.control.ButtonBar.ButtonData;
- import javafx.scene.layout.GridPane;
- import javafx.stage.Stage;
- /**
- * @author FunWithJava Version vom 05. Juni 2017 Dialogfenster aus dialoge.java
- * Author Koelle
- */
- public class TTTControl extends Application implements EventHandler<ActionEvent>
- {
- // Setzen der ID's der Buttons
- @FXML
- private Button spielfeld00;
- @FXML
- private Button spielfeld01;
- @FXML
- private Button spielfeld02;
- @FXML
- private Button spielfeld10;
- @FXML
- private Button spielfeld11;
- @FXML
- private Button spielfeld12;
- @FXML
- private Button spielfeld20;
- @FXML
- private Button spielfeld21;
- @FXML
- private Button spielfeld22;
- @FXML
- private Button login;
- @FXML
- private Button info;
- // array für buttons definiert
- private Button spielfeld[][];
- // ID reset knopf
- @FXML
- private Button neuesspiel;
- // ID Textfeld momentaner Zug
- @FXML
- private TextField zug;
- @FXML
- private Button spielBeenden;
- // zufaellige Zugermittlung
- int turn = (Math.random() <= 0.5) ? 1 : 2;
- int counter = 0;
- public static void main(String[] args)
- {
- launch(args);
- }
- // Implementierung der fxml und erstellen der stage
- public void start(Stage stage) throws Exception
- {
- Parent root = FXMLLoader.load(getClass().getResource("TTTGui.fxml"));
- stage.setScene(new Scene(root));
- stage.show();
- }
- // Buttons in array speichern
- @FXML
- public void initialize()
- {
- spielfeld = new Button[][]
- {
- { spielfeld00, spielfeld01, spielfeld02 },
- { spielfeld10, spielfeld11, spielfeld12 },
- { spielfeld20, spielfeld21, spielfeld22 } };
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- }
- // handle methode "handelt" event beim klicken der buttons
- public void handle(ActionEvent event)
- {
- // If checkt ob das feld "frei" ist
- if (((Button) event.getSource()).getStyle().equals("")
- &&((Button) event.getSource()).getText().equals(""))
- {
- // if zeigt aktuellen spieler an
- if (turn % 2 <= 0)
- {
- zug.setText("Player2");
- } else
- {
- zug.setText("Player1");
- }
- // setzt gruen als naechst gesetzte farbe
- if (turn % 2 <= 0)
- {
- System.out.println("Das " + ((Button) event.getSource()).getId() + " wurde gr\u00FCn");
- ((Button) event.getSource()).setStyle("-fx-base: green;");
- turn++;
- // Gewinnermittlung green
- // horizontal
- for (int i = 0; i < 3; i++)
- {
- if (spielfeld[i][0].getStyle().equals("-fx-base: green;")
- && spielfeld[i][0].getStyle().equals(spielfeld[i][1].getStyle())
- && spielfeld[i][0].getStyle().equals(spielfeld[i][2].getStyle())
- && spielfeld[i][2].getStyle().equals("-fx-base: green;"))
- {
- // bei Spielende werden alle variablen zurueckgesetzt
- // und ein dialog ploppt auf mit den Optionen abbrechen
- // und ok, was ein neues Spiel startet
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Gr\u00FCn hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- // Bei okay setzt die schleife den style jedes feldes
- // wieder auf "leer"
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // vertikal
- for (int i = 0; i < 3; i++)
- {
- if (spielfeld[0][i].getStyle().equals("-fx-base: green;")
- && spielfeld[0][i].getStyle().equals(spielfeld[1][i].getStyle())
- && spielfeld[1][i].getStyle().equals(spielfeld[2][i].getStyle())
- && spielfeld[2][i].getStyle().equals("-fx-base: green;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Gr\u00FCn hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // diagonal
- if (spielfeld[0][0].getStyle().equals("-fx-base: green;")
- && spielfeld[0][0].getStyle().equals(spielfeld[1][1].getStyle())
- && spielfeld[1][1].getStyle().equals(spielfeld[2][2].getStyle())
- && spielfeld[2][2].getStyle().equals("-fx-base: green;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Gr\u00FCn hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- if (spielfeld[0][2].getStyle().equals("-fx-base: green;")
- && spielfeld[0][2].getStyle().equals(spielfeld[1][1].getStyle())
- && spielfeld[1][1].getStyle().equals(spielfeld[2][0].getStyle())
- && spielfeld[2][0].getStyle().equals("-fx-base: green;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Gr\u00FCn hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- } else
- {
- System.out.println("Das " + ((Button) event.getSource()).getId() + " wurde rot");
- ((Button) event.getSource()).setStyle("-fx-base: red;");
- turn++;
- // Gewinnermittlung red
- // horizontal
- for (int i = 0; i < 3; i++)
- {
- if (spielfeld[i][0].getStyle().equals("-fx-base: red;")
- && spielfeld[i][0].getStyle().equals(spielfeld[i][1].getStyle())
- && spielfeld[i][0].getStyle().equals(spielfeld[i][2].getStyle())
- && spielfeld[i][2].getStyle().equals("-fx-base: red;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Rot hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // vertikal
- for (int i = 0; i < 3; i++)
- {
- if (spielfeld[0][i].getStyle().equals("-fx-base: red;")
- && spielfeld[0][i].getStyle().equals(spielfeld[1][i].getStyle())
- && spielfeld[1][i].getStyle().equals(spielfeld[2][i].getStyle())
- && spielfeld[2][i].getStyle().equals("-fx-base: red;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Rot hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // diagonal
- if (spielfeld[0][0].getStyle().equals("-fx-base: red;")
- && spielfeld[0][0].getStyle().equals(spielfeld[1][1].getStyle())
- && spielfeld[1][1].getStyle().equals(spielfeld[2][2].getStyle())
- && spielfeld[2][2].getStyle().equals("-fx-base: red;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Rot hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- if (spielfeld[0][2].getStyle().equals("-fx-base: red;")
- && spielfeld[0][2].getStyle().equals(spielfeld[1][1].getStyle())
- && spielfeld[1][1].getStyle().equals(spielfeld[2][0].getStyle())
- && spielfeld[2][0].getStyle().equals("-fx-base: red;"))
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Rot hat gewonnen!");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // Zugnummer
- counter++;
- // Unentschieden, wenn der Zug counter 9 erreicht und keiner
- // gewonnen hat, erscheint der uneentschieden dialog mit den
- // fleichen optionen wie der gewonnen dialog
- if (counter == 9)
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- Alert alert = new Alert(AlertType.CONFIRMATION);
- alert.setTitle("Spielstand");
- alert.setHeaderText("Unentschieden");
- alert.setContentText("Neues Spiel?");
- Optional<ButtonType> result = alert.showAndWait();
- if (result.get() == ButtonType.OK)
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- }
- }
- // Falls das gewaehlte feld nicht frei sein sollte, wird der Spieler
- // aufgefordert ein anderes feld zu wählen, counter und turn werden
- // nicht erhöht
- else
- {
- System.out.println("Das Feld ist bereits belegt, bitte wählen Sie ein anderes");
- }
- neuesspiel.setOnAction(new EventHandler<ActionEvent>()
- {
- // Handle methode wird fuer den reset button ueberschrieben, gleiche
- // funktionen wie am ende eines spiels
- @Override
- public void handle(ActionEvent event)
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- if (turn % 2 <= 0)
- {
- zug.setText("Player1");
- } else
- {
- zug.setText("Player2");
- }
- for (int k = 0; k < 3; k++)
- {
- for (int j = 0; j < 3; j++)
- {
- spielfeld[j][k].setStyle("");
- }
- }
- }
- });
- login.setOnAction(new EventHandler<ActionEvent>()
- {
- @Override
- public void handle(ActionEvent event)
- {
- // Create the custom dialog.
- Dialog<ButtonType> dialog = new Dialog<>();
- dialog.setTitle("Login Dialog");
- dialog.setHeaderText("Look, a Custom Login Dialog");
- // Set the button types.
- ButtonType loginButtonType = new ButtonType("Login", ButtonData.OK_DONE);
- dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
- // Create the username and password labels and fields.
- GridPane grid = new GridPane();
- grid.setHgap(10);
- grid.setVgap(10);
- grid.setPadding(new Insets(20, 150, 10, 10));
- TextField username = new TextField();
- username.setPromptText("Username");
- PasswordField password = new PasswordField();
- password.setPromptText("Password");
- grid.add(new Label("Username:"), 0, 0);
- grid.add(username, 1, 0);
- grid.add(new Label("Password:"), 0, 1);
- grid.add(password, 1, 1);
- dialog.getDialogPane().setContent(grid);
- Optional<ButtonType> result = dialog.showAndWait();
- // System.out.println(result);
- if( result.get().getButtonData() == ButtonData.OK_DONE)
- {
- System.out.println( "Username: " + username.getText());
- System.out.println( "Psssword: " + password.getText());
- }
- else
- {
- System.out.println( "Abgebrochen");
- }
- }
- });
- info.setOnAction(new EventHandler<ActionEvent>()
- {
- @Override
- public void handle(ActionEvent event)
- {
- Alert alert = new Alert(AlertType.INFORMATION);
- alert.setTitle("About");
- alert.setHeaderText("TicTacToe von Fun with Java");
- alert.setContentText("Maren Asbeck, Amelie Beutel, Tamara Ines Warthon, Waldemar Blum");
- alert.showAndWait();
- }
- });
- spielBeenden.setOnAction(new EventHandler<ActionEvent>()
- {
- // Handle methode wird fuer den beenden button mit der
- // schließfunktion ueberschrieben
- @Override
- public void handle(ActionEvent event)
- {
- counter = 0;
- turn = (Math.random() <= 0.5) ? 1 : 2;
- System.exit(0);
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement