Hallo,
ich habe ein Problem, undzwar habe ich ein kleines TicTacToe Spiel programmiert und es funktioniert auch alles einwandfrei, nur bei der Gewinnermittlung habe ich Probleme. Sieg und Niederlage wird eindeutig ausgegeben, jedoch bei einem Unentschieden wird ab dem zweiten Spiel nichts mehr ausgegeben und wenn man beim Ersten Mal im letzten Zug gewinnt, dann wird "gewonnen und unentschieden" ausgegeben. Das alles ist mein Quellcode. Vielen Dank schonmal für die Antworten.
ich habe ein Problem, undzwar habe ich ein kleines TicTacToe Spiel programmiert und es funktioniert auch alles einwandfrei, nur bei der Gewinnermittlung habe ich Probleme. Sieg und Niederlage wird eindeutig ausgegeben, jedoch bei einem Unentschieden wird ab dem zweiten Spiel nichts mehr ausgegeben und wenn man beim Ersten Mal im letzten Zug gewinnt, dann wird "gewonnen und unentschieden" ausgegeben. Das alles ist mein Quellcode. Vielen Dank schonmal für die Antworten.
Java:
public class TicTacToeSimple extends Application implements EventHandler<ActionEvent> {
// neun Buttons
private Button spielfeld00;
private Button spielfeld01;
private Button spielfeld02;
private Button spielfeld10;
private Button spielfeld11;
private Button spielfeld12;
private Button spielfeld20;
private Button spielfeld21;
private Button spielfeld22;
private Button spielfeldR;
private boolean playerwin = false;
private int click;
private String farbe;
/**
* @param args
* the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
/*
* Start der GUI
*/
public void start(Stage primaryStage) {
primaryStage.setTitle("TicTacToe");
// Layout: Grid, aufgebaut wie eine Tabelle
GridPane grid = new GridPane();
// Abstaende zwischen den einzelnen Komponenten
grid.setHgap(10);
grid.setVgap(10);
// Abstaende des Grid im Fenster in Pixel: top,right,bottom,left
grid.setPadding(new Insets(10, 20, 20, 10));
// neun Buttons erzeugen, Listener registrieren und dem Panel
// hinzufuegen
spielfeld00 = new Button();
spielfeld00.setId("Knopf00");
spielfeld00.setMinSize(50, 50);
grid.add(spielfeld00, 0, 0);
spielfeld00.setOnAction(this);
spielfeld01 = new Button();
spielfeld01.setId("Knopf01");
spielfeld01.setMinSize(50, 50);
grid.add(spielfeld01, 0, 1);
spielfeld01.setOnAction(this);
spielfeld02 = new Button();
spielfeld02.setId("Knopf02");
spielfeld02.setMinSize(50, 50);
grid.add(spielfeld02, 0, 2);
spielfeld02.setOnAction(this);
spielfeld10 = new Button();
spielfeld10.setId("Knopf10");
spielfeld10.setMinSize(50, 50);
grid.add(spielfeld10, 1, 0);
spielfeld10.setOnAction(this);
spielfeld11 = new Button();
spielfeld11.setId("Knopf11");
spielfeld11.setMinSize(50, 50);
grid.add(spielfeld11, 1, 1);
spielfeld11.setOnAction(this);
spielfeld12 = new Button();
spielfeld12.setId("Knopf12");
spielfeld12.setMinSize(50, 50);
grid.add(spielfeld12, 1, 2);
spielfeld12.setOnAction(this);
spielfeld20 = new Button();
spielfeld20.setId("Knopf20");
spielfeld20.setMinSize(50, 50);
grid.add(spielfeld20, 2, 0);
spielfeld20.setOnAction(this);
spielfeld21 = new Button();
spielfeld21.setId("Knopf21");
spielfeld21.setMinSize(50, 50);
grid.add(spielfeld21, 2, 1);
spielfeld21.setOnAction(this);
spielfeld22 = new Button();
spielfeld22.setId("Knopf22");
spielfeld22.setMinSize(50, 50);
grid.add(spielfeld22, 2, 2);
spielfeld22.setOnAction(this);
spielfeldR = new Button();
spielfeldR.setId("restart");
spielfeldR.setMinSize(50, 50);
spielfeldR.setText("New");
grid.add(spielfeldR, 1, 3);
spielfeldR.setOnAction(this);
// VBox mit Menue oben, darunter der Rest
VBox root = new VBox();
root.getChildren().addAll(grid);
primaryStage.setScene(new Scene(root));
primaryStage.setResizable(false);
primaryStage.show();
}
/*
* Eventhandler
*/
public void handle(ActionEvent event) {
if (((Button) event.getSource()).getId().toString().equals("restart")) {
spielfeld00.setText("");
spielfeld00.setStyle("");
spielfeld01.setText("");
spielfeld01.setStyle("");
spielfeld02.setText("");
spielfeld02.setStyle("");
spielfeld10.setText("");
spielfeld10.setStyle("");
spielfeld11.setText("");
spielfeld11.setStyle("");
spielfeld12.setText("");
spielfeld12.setStyle("");
spielfeld20.setText("");
spielfeld20.setStyle("");
spielfeld21.setText("");
spielfeld21.setStyle("");
spielfeld22.setText("");
spielfeld22.setStyle("");
playerwin = false;
}
click++;
farbe = ((Button) event.getSource()).getStyle();
if ((click % 2 == 0) && farbe == "" && playerwin == false
&& !((Button) event.getSource()).getId().toString().equals("restart")) {
System.out.println("Spieler 2 ist dran");
((Button) event.getSource()).setStyle("-fx-base: red;");
((Button) event.getSource()).setText("O");
if (win(event)) {
System.out.println("Spieler 2 hat gewonnen");
}
} else if ((click % 2 == 1) && farbe == "" && playerwin == false
&& !((Button) event.getSource()).getId().toString().equals("restart")) {
System.out.println("Spieler 1 ist dran");
((Button) event.getSource()).setStyle("-fx-base: green;");
((Button) event.getSource()).setText("X");
if (win(event)) {
System.out.println("Spieler 1 hat gewonnen");
}
} else if (playerwin == true) {
System.out.println("Spiel vorbei klicken sie auf new");
} else {
click--;
System.out.println("Der Button ist schon belegt!");
}
System.out.println("Gedrueckt:" + ((Button) event.getSource()).getId() + "\n");
if (click == 9 && farbe == ("-fx-base: green;")) {
System.out.println("Spieler 1 hat gewonnen");
} else if (click == 9 && farbe == ("-fx-base: red;")) {
System.out.println("Spieler 2 hat gewonnen");
} else if (click == 9) {
System.out.println("UNENTSCHIEDEN");
}
}
public boolean win(ActionEvent event) {
String player = (((Button) event.getSource()).getText());
if ((spielfeld00.getText().equals(player) && spielfeld01.getText().equals(player)
&& spielfeld02.getText().equals(player))
|| (spielfeld10.getText().equals(player) && spielfeld11.getText().equals(player)
&& spielfeld12.getText().equals(player))
|| (spielfeld20.getText().equals(player) && spielfeld21.getText().equals(player)
&& spielfeld22.getText().equals(player))
|| (spielfeld00.getText().equals(player) && spielfeld10.getText().equals(player)
&& spielfeld20.getText().equals(player))
|| (spielfeld01.getText().equals(player) && spielfeld11.getText().equals(player)
&& spielfeld21.getText().equals(player))
|| (spielfeld02.getText().equals(player) && spielfeld12.getText().equals(player)
&& spielfeld22.getText().equals(player))
|| (spielfeld00.getText().equals(player) && spielfeld11.getText().equals(player)
&& spielfeld22.getText().equals(player))
|| (spielfeld02.getText().equals(player) && spielfeld11.getText().equals(player)
&& spielfeld20.getText().equals(player))) {
playerwin = true;
return true;
} else {
return false;
}
}
}
Zuletzt bearbeitet von einem Moderator: