Herausfinden wer Tic Tac Toe gewonnen hat

WetWer

Mitglied
Hallo,

Ich habe ein Tic Tac Toe spiel gemacht und nun habe ich folgendes Problem: Wie kann ich herausfinden welcher Spieler gewonnen hat?

Mein Spielfeld sieht folgendermaßen aus:

Jedes Feld ist im Array char fields[] jedes von diesen Feldern kann entweder 'X', 'O' oder ' ' sein.

+--+--+--+
| 1 | 2 | 3 |
+--+--+--+
| 4 | 5 | 6 |
+--+--+--+
| 7 | 8 | 9 |
+--+--+--+

Wie kann ich am einfachsten den Gewinner bekommen?

Ich habe es bereits mit dem versucht:
Java:
if (fields[0].equals(fields[1]) && fields[3].equals(fields[1])) {
...
}

aber ich glaube all das aufzuschreiben würde länger brauchen als eine saubere formel.
 
Du brauchst eine Liste in der die "Gewonnen-Tripletts" sind also:
{{1,2,3},{4,5,6},{7,8,9},{1,4,7},{2,5,8},{3,6,9},{1,5,9},{3,5,7}}

Damit kannst du dann in zwei For-Schleifen gucken, ob die Felder mit den Nummern gleich sind 😉
 
Die zwei For-Schleifen Lösung bei jedem Zug ist doch recht kompliziert für das kleine Problem.

Du prüfst einfach bei jedem Zug wie weit du von einer 3er Reihe weg bist. Und wenn dein Zähler == 3 ist hast du gewonnen.
 
Danke Leute, ich habe einen weg gefunden die ergebnisse zu berechen @Viktim mit einer methode:

Java:
private void winner(int index1, int index2, int index3) {
        if (fields[index1].equals( fields[index2] ) && fields[index1].equals( fields[index3] )) {
            if (fields[index1].equals( " " )) {
                return;
            }
            if (currentPlayer.equals( "X" )) {
                currentPlayer = "O";
            } else {
                currentPlayer = "X";
            }
            writeString( currentPlayer + " hat gewonnen!" );
            try {
                Thread.sleep( 2000 );
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.exit(0);
        }
    }
 
Ich hatte das mal so gemacht, dass ein Spieler die Zahl 1 hatte und der andere -1 und dann addiert kam dann in einer Zeile 3 bzw. -3 raus hatte einer gewonnen.

Aber ich würde dir eher den Ratschlag von Jardcore ans Herz legen 🙂
 

Zurück
Oben