Hilfe bei Java Tic Tac Toe

s_1895

Mitglied
Ich komme bei Java Tic Tac Toe nicht weiter iwo sind fehler :(

Tic Tac Toe:
import java.util.Scanner;

public class TTT {

    public static void main(String[] args) {
        Scanner eingabe = new Scanner(System.in);

        char[][] field = {
            {'1', '2', '3'},
            {'4', '5', '6'},
            {'7', '8', '9'}
        };
        drawField(field);

        boolean gameover = false;
        int turnCount = 0;
        while (!gameover && turnCount < 9) {
            System.out.println("Current player: "
                    + getTurnCharacter(turnCount));
            System.out.print("Please enter field number: ");
            int nextPos = eingabe.nextInt() - 1;

            doTurn(nextPos, getTurnCharacter(turnCount), field);
            drawField(field);

            gameover = checkWinConditions(field);
            if (!gameover) {
                turnCount++;
            }
        }
        if (gameover) {
            System.out.println(getTurnCharacter(turnCount) + " has won");
        } else {
            System.out.println("DRAW");
        }
    }

    public static void drawField(char[][] field) {
        for (int i = 0; i < field.length; i++) {
            System.out.println("+---+---+---+");

            System.out.print("|");
            for (int j = 0; j < field[i].length; j++) {
                System.out.print(" " + field[i][j] + " |");
            }
            System.out.println();

        }
        System.out.println("+---+---+---+");
    }

    public static void doTurn(int nextPos, char turnPlayerCharacter,
            char[][] field) {

        int row = nextPos / 2 - 1;
        int column = nextPos % 3;
        field[row][column] = turnPlayerCharacter; 
    }

    public static char getTurnCharacter(int turnCount) {
        char currentTurnCharacter = 'O';
        if (turnCount % 2 == 0) {
            currentTurnCharacter = 'X';
        }
        return currentTurnCharacter;
    }

    public static boolean checkWinConditions(char[][] field) {
        return checkStraightWinCondition(field)
                || checkDiagonalWinCondition(field);
    }

    public static boolean checkStraightWinCondition(char[][] field) {
        boolean winFound = false;

        int i = 0;
        while (i < field.length && !winFound) {
            winFound = field[i][0] == field[i][1]
                    && field[i][0] == field[i][2];
            if (!winFound) {
                winFound = field[0][i] == field[1][i]
                        && field[0][i] == field[2][i];
            }
            i++;
        }
        return winFound;
    }

    public static boolean checkDiagonalWinCondition(char[][] field) {
        boolean diagonal1 = field[0][0] == field[1][1]
                && field[0][0] == field[2][2];
        boolean diagonal2 = field[0][2] == field[1][1]
                && field[0][2] == field[2][0];
        return diagonal1 || diagonal2;
    }

}
 

mihe7

Top Contributor
Das war ein Hinweis darauf, dass Du auch verraten könntest, wobei Du nicht weiterkommst und wieso Du darauf kommst, dass Fehler enthalten sind, d. h. an welcher Stelle treten Fehler auf bzw. wie wirken sich diese aus?
 

mihe7

Top Contributor
Das ist ja mal ein Ansatz :) Wenn Du 4 eingibst, wird nextPos mit 3 berechnet und doTurn mit nextPos aufgerufen. Dort wird berechnet:
Java:
        int row = nextPos / 2 - 1;
        int column = nextPos % 3;
D. h. row ist 0 und column ist 0, sodass das Feld mi der "1" belegt wird.

Offensichtlich ist die Berechnung der Zeile falsch. Überlegen wir mal kurz: bei nextPos 0,1,2 soll 0 das Ergebnis sein, bei 3,4,5 die 1 und bei 6,7,8 die 2. Die ersten Positionen sind als 0, 3 und 6. Da könnte man doch einfach durch 3 teilen:
Java:
    int row = nextPos / 3;
    int column = nextPos % 3;
Und ja, das gibt Sinn, denn einmal wird das Ergebnis der Division mit 3 ohne Rest und einmal der dazugehörige Rest ermittelt.
 

s_1895

Mitglied
Danke :) jetzt läuft es wie es soll, glaub ich zumindest, also die Eingabe stimmt jetzt so, mir wurde nur gesagt ich hab paar Fehler und soll es mir nochmal angucken und mein Dozent war leider nicht so freundlich mir zu sagen wo genau die Fehler sind
 

s_1895

Mitglied
noch eine frage, falls du gerade zeit hast :)
Das ist ja mal ein Ansatz :) Wenn Du 4 eingibst, wird nextPos mit 3 berechnet und doTurn mit nextPos aufgerufen. Dort wird berechnet:
Java:
        int row = nextPos / 2 - 1;
        int column = nextPos % 3;
D. h. row ist 0 und column ist 0, sodass das Feld mi der "1" belegt wird.

Offensichtlich ist die Berechnung der Zeile falsch. Überlegen wir mal kurz: bei nextPos 0,1,2 soll 0 das Ergebnis sein, bei 3,4,5 die 1 und bei 6,7,8 die 2. Die ersten Positionen sind als 0, 3 und 6. Da könnte man doch einfach durch 3 teilen:
Java:
    int row = nextPos / 3;
    int column = nextPos % 3;
Und ja, das gibt Sinn, denn einmal wird das Ergebnis der Division mit 3 ohne Rest und einmal der dazugehörige Rest ermittelt.
Noch eine Frage falls du gerade zeit hast :)
Kann ich dass iwie machen dass wenn spieler X 1 wählt und spieler 2 auch er das nicht überschreiben kann
 

mihe7

Top Contributor
Sicher. Das kann man noch etwas verallgemeinern: wenn auf einem Feld bereits ein X oder ein O eingetragen ist, dann darf der Zug nicht durchgeführt werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Hilfe bei einer Java Programmieraufgabe! Ab morgen Montag um 08:00 Uhr Allgemeine Java-Themen 5
U Erste Schritte Hilfe bei simplem Glücsspiel in Java Allgemeine Java-Themen 4
E HILFE !! Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils Allgemeine Java-Themen 4
J Java "Bank Programm" Brauche eure Hilfe Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
M Input/Output Java + OCR ? Erfahrungen und bitte um Hilfe Allgemeine Java-Themen 12
S Java USB dringend Hilfe! Allgemeine Java-Themen 6
F Brauche Hilfe bei Java Allgemeine Java-Themen 6
S Brauche Hilfe: Prüfungsaufgabe Java Allgemeine Java-Themen 8
B java.exe in System 32. Hilfe!!! Allgemeine Java-Themen 8
M google plus java api - Anfänger sucht Hilfe Allgemeine Java-Themen 7
S brauche Hilfe für ssh connection in java Allgemeine Java-Themen 6
G Java-Hilfe einbauen Allgemeine Java-Themen 2
S Brauche Hilfe bei Planung für JAVA-Programm Allgemeine Java-Themen 3
C Hilfe! Mein Java mag nich mehr ganz... Allgemeine Java-Themen 11
G Java Android Development HILFE !! Allgemeine Java-Themen 2
G Hilfe! Java XMP-Dumper! Allgemeine Java-Themen 2
data89 Bilder mit Java prüfen - suche dringend Hilfe Allgemeine Java-Themen 8
K Hilfe, Java spielt verrückt Allgemeine Java-Themen 16
_SeiA_ Hilfe Kleines Java Programm schreiben. Summen. Allgemeine Java-Themen 3
F Hilfe beim Starten einer Java Anwendung unter Windows gesuch Allgemeine Java-Themen 8
S Hilfe ich kann Java nicht installieren! Allgemeine Java-Themen 11
M Java Pattern hilfe Allgemeine Java-Themen 6
BFreakout Hilfe! Java Anwendung läuft nicht. Allgemeine Java-Themen 8
J Java - 4-Buchstaben-Programm. Hilfe. ich hänge fest Allgemeine Java-Themen 7
S java hilfe in deutsch? Allgemeine Java-Themen 7
C Hilfe! Java Control Panel & Limewire Problem! Allgemeine Java-Themen 3
P Hilfe zu java.lang.Object Allgemeine Java-Themen 3
B Entwickeln eines Assemblers unter Java. Hilfe !!!!! Allgemeine Java-Themen 4
T Hilfe bei Programm. IDE: Eclipse mit EV3-Plugin, lejos Allgemeine Java-Themen 8
alinakeineAhnungv Hilfe bei einem Straßenbahn-Projekt von mir Allgemeine Java-Themen 18
Aboya Kugel mit Hilfe von Dreiecken rekursiv zeichnen Allgemeine Java-Themen 2
K Anzeigemöglichkeit von Bildern in JavaFX mit Hilfe von MongoDB GridFS Allgemeine Java-Themen 0
A Preisberechnung, Hilfe Allgemeine Java-Themen 4
M Bräuchte Hilfe bei der Aufgabe Allgemeine Java-Themen 1
W Suche Ursache für NPE - woher kommt sie? (Hilfe beim Debugging) Allgemeine Java-Themen 19
J Hilfe, Jar Datei kann nicht ausgeführt werden Allgemeine Java-Themen 2
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
K OOP Suche Hilfe + Erklärung für eine Hausaufgabe Allgemeine Java-Themen 1
K Objektorientierung, hilfe Allgemeine Java-Themen 9
V Bilder bei bestimmten Zeiten wechseln, bitte um Hilfe Allgemeine Java-Themen 5
D Hilfe bei Informatik Hausaufgaben Allgemeine Java-Themen 30
RalleYTN Brauche Hilfe beim Run-Length-Decoding Allgemeine Java-Themen 9
S Hilfe bei dem Auslesen einer YAML Datei Allgemeine Java-Themen 8
F NetBeans Hilfe!!! Allgemeine Java-Themen 23
H Schiffe versenken JButton Schiffe mit GUI verbinden Hilfe! Allgemeine Java-Themen 2
M Bitte Hilfe mit REGEX (Negieren) Allgemeine Java-Themen 4
S GetMethode erstellen mit Hilfe von Parametern Allgemeine Java-Themen 9
B Hilfe bei Übungsblätter Allgemeine Java-Themen 9
O Erste Schritte Benzinverbrauch Code Hilfe Allgemeine Java-Themen 3
C Hilfe Bei Vegas Slide Allgemeine Java-Themen 0
B Hilfe!! spiel um Funktion des Selektierens erweitern (mit ASCII-Tabelle) Allgemeine Java-Themen 3
Ice4P4rty Hilfe Bei Promillerechner Allgemeine Java-Themen 9
C Atfx mit Hilfe von OpenAtfx auslesen Allgemeine Java-Themen 1
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
G Hilfe bei Projektarbeit Allgemeine Java-Themen 5
GenerationLost Input/Output Custom Serialization - hilfe bei Realisierung Allgemeine Java-Themen 8
J Hilfe!!! Ausbildung Allgemeine Java-Themen 14
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
B Swing Hilfe bei Abfrage von Benutzernamen und Passwort Allgemeine Java-Themen 2
T Hilfe bei Code Allgemeine Java-Themen 3
U Swing Hilfe beim Quellcode für ein Codierungs-/Decodierungsprogramm Allgemeine Java-Themen 9
S Hilfe bei Gui Allgemeine Java-Themen 3
O Best Practice Hilfe bei Algorithmus gesucht Allgemeine Java-Themen 10
GRAZZ0R Hilfe zum Spiel Mensch ärger dich nicht Allgemeine Java-Themen 1
C Hilfe bei den Ausgaben Allgemeine Java-Themen 4
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
J Hilfe bei Datumsberechnung aus Textfeld Allgemeine Java-Themen 10
I Bitte Drngend hilfe Allgemeine Java-Themen 2
C Hilfe bei NoClassDefFoundError Allgemeine Java-Themen 14
C Hilfe bei einer Fehler meldung Allgemeine Java-Themen 3
I Methoden Schnelle Hilfe benötigt - Kleines Video/Slideshow aus mehreren Bildern erstellen Allgemeine Java-Themen 3
C Hilfe bei einer Point Ausgabe Allgemeine Java-Themen 7
S Probleme mit meinem MacBook Pro DRINGEND HILFE erbeten! Allgemeine Java-Themen 17
N Erste Schritte [HILFE] effizienter,leistungsfähigermbackground Pixelbot Allgemeine Java-Themen 5
A Hilfe gesucht Allgemeine Java-Themen 44
X ArrayList will nicht so wie ich will. Hilfe Allgemeine Java-Themen 8
C Hilfe bei einer Fehlermeldung Allgemeine Java-Themen 5
C Hilfe bei MalformedURLException Allgemeine Java-Themen 7
D Baum zeichnen hilfe Allgemeine Java-Themen 4
M Hilfe bei parseInt Allgemeine Java-Themen 4
F Compiler-Fehler Hilfe bei Startup error Allgemeine Java-Themen 3
F Socket NullPointerException Bitte um hilfe! Allgemeine Java-Themen 12
M Brauche Hilfe bei Quellcodeverständnis Allgemeine Java-Themen 4
B Zahlen ausgeben hilfe! Allgemeine Java-Themen 8
X Hilfe bei Programm Allgemeine Java-Themen 5
zer0zer0 Best Practice apache common cli - optionen für hilfe ausblenden Allgemeine Java-Themen 5
F Bitte um Hilfe! Allgemeine Java-Themen 5
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
D Brauche Hilfe bei Rechnung (Exponentiation) Allgemeine Java-Themen 12
S Hilfe bei simplem Programm Allgemeine Java-Themen 3
J Ein blutiger Anfänger braucht Hilfe Allgemeine Java-Themen 7
B Hilfe bei JUnit Test Allgemeine Java-Themen 1
A ALTER TABLE mit Hilfe von RegEx zerlegen, splitten Allgemeine Java-Themen 5
B Dringend Hilfe gesucht für Struktogramm Allgemeine Java-Themen 11
C Brauche Hilfe mit Modulo Strategie Allgemeine Java-Themen 2
J Probleme bei kompilieren ... Bitte um Hilfe Allgemeine Java-Themen 2
M Hilfe mit JOptionPane Allgemeine Java-Themen 2
I Hilfe: Klasse Vieleck Allgemeine Java-Themen 5
I javax.sound.sampled.* - Hilfe zu den Controls Allgemeine Java-Themen 8

Ähnliche Java Themen


Oben