Tic Tac Toe Programm Unentschieden auswerten wird falsch gemacht?
Hallo, ich habe bei meinem selbst Programmierten Java TicTacToe Spiel eine Methode geschrieben, mit der man überprüft wer/ob jemand gewonnen hat.Die funktioniert auch gut, in der "else if" Verzweigung prüfe ich ob alle Felder belegt sind.Aber wenn ich zum Beispiel Feld[1] beim spielen belege, dann wird trotzdem Unentschieden ausgegeben.
else if (Feld[1].equals ("x") || Feld[1].equals ("o") &&
Feld[2].equals ("x") || Feld[2].equals ("o") &&
Feld[3].equals ("x") || Feld[3].equals ("o") &&
Feld[4].equals ("x") || Feld[4].equals ("o") &&
Feld[5].equals ("x") || Feld[5].equals ("o") &&
Feld[6].equals ("x") || Feld[6].equals ("o") &&
Feld[7].equals ("x") || Feld[7].equals ("o") &&
Feld[8].equals ("x") || Feld[8].equals ("o") &&
Feld[9].equals ("x") || Feld[9].equals ("o")) {
System.out.println("Unentschieden");
}
Über jede Hilfe/Tipps würde ich mich gewaltig freuen.
2 Antworten
Ohne die andere if Anweisungen kann man das schwer beantworten. Deine else if Anweisung wird allerdings nur ausgeführt wenn die vorherige if Anweisung false ergeben hat. Wenn vorher in einem if irgendetwas geprüft wird und das Ergebnis true ist, dann wird die nachfolgende else if Anweisung gar nicht mehr geprüft.
&& bindet stärker als ||. Du musst also Klammern setzen.
Übrigens gibt es wohl hundert Möglichkeiten, diese Bedingung einfacher zu schreiben.
Ja das kann sehr gut sein, aber ich bin noch neu in Java.
Könntest du mir ein Beispiel geben mit den Klammern?
Die Oder-Teile müssen in Klammern stehen:
if ( (Feld[1].equals("x") || Feld[1].equals("o"))
&& (Feld[2].equals("x") || Feld[2].equals("o"))
&& ( ...
Ich würde es aber so schreiben:
if ( !Feld.contains(" ") ) { ... }
Dabei nehme ich an, dass Feld genau 9 Zeichen enthält und leere Felder ein Leerzeichen enthalten.
Ups, gut beobachtet! Falls die Indizes 1-9 keine Programmierfehler sind, darf bei meiner Variante kein Space in Feld[0] stehen.
Sonst prüft man besser mit
if ( Feld.indexOf(" ", 1)==-1 ) { ... }
Hier ist die ganze Methode, ich hoffe du kannst mir helfen