TicTacToe

A

arhzz

Bekanntes Mitglied
Hallo! In diesem Code;

Java:
public class TicTacToe {
    public static int row,col;
    public static char[][] board = new char[3][3];
    public static char turn = 'X';
    
    public static void main(String[] args) {
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                board[i][j] = '_';
            }
        }
        Play();
    }
    
    public static void printBoard() {
    for(int i = 0; i < 3; i++) {
        Out.println();
        for(int j = 0; j < 3; j++) {
            if(j == 0){
                Out.print("| ");
            }
            Out.print(board[i][j] + " | ");
        }
    }
    Out.println();
    
}


public static void Play() {
    boolean playing = true;
    printBoard();
    Out.println();
    int nOfTurns = 1;
    Out.println("Turn: " + nOfTurns);
    
    while(playing){
        Out.println();
        Out.println("Player:" +" "+ turn);
        Out.print("Enter a row:");
        row = In.readInt() -1;
        Out.print("Enter a coloumn:");
        col = In.readInt() -1;
        board[row][col] = turn;
        nOfTurns++;
        Out.println();
        Out.println("Turn: "+ nOfTurns);
        if(GameOver(row,col)) {
            playing = false;
            Out.println("Player" +" "+turn +" "+"has won");
        }
        printBoard();
        
        if(turn == 'X') {
            turn = 'O';
        }else{
            turn = 'X';
        }
    }
}

public static boolean GameOver(int rowMove,int colMove) {
    if(board[0][colMove] == board[1][colMove] && board[0][colMove] == board[2][colMove]){
        return true;
    }else if(board[rowMove][0] == board[rowMove][1] && board[rowMove][0] == board[rowMove][2]) {
        return true;
    }else if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[1][1] != '_') {
        return true;
    }else if(board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[1][1] != '_') {
        return true;
    }else
        return false;
}



}


Möchte ich so einen "schutz" implementieren.Nämlich dürfen keine falsche Nummer im Sinne von rows und coloumns eingegeben.Die Nummer von 1 bis 3 sing gültig und alle anderen nicht.Und ich möchte dass wenn ein falsches Nummer eingeben ist (sagen wir 4) dass der User eine nachricht bekommt die ihn sagt dass diese nummer nicht gültig ist.Das woll ich implementieren aber OHNE exceptions.Ein Paar Ideen habe ich,eine boolean methode die prüft ob die Eingabe gültig ist.Aber ich will (wenn möglich) den Check in dieser Play methode auzuführen.Vielleicht ein Paar Tipps?

Danke!
 
kneitzel

kneitzel

Top Contributor
Dann schreib dir doch einfach eine Methode, die du statt dem In.readInt nutzen kannst. In der Methode fragst du in einer Schleife nach einer Eingabe. Ist die Eingabe ok, gibst du sie zurück und wenn nicht kommt halt eine Meldung und die Schleife macht von Anfang an weiter ....
 
A

arhzz

Bekanntes Mitglied
Dann schreib dir doch einfach eine Methode, die du statt dem In.readInt nutzen kannst. In der Methode fragst du in einer Schleife nach einer Eingabe. Ist die Eingabe ok, gibst du sie zurück und wenn nicht kommt halt eine Meldung und die Schleife macht von Anfang an weiter ....

Ich probiere es,danke!
 
A

arhzz

Bekanntes Mitglied
Okay also ich habe die methode geschrieben, und es funktioniert außer einem Fall, wenn ich als row oder column den Wert 4 eingebe.Der Compiler gibt ein ArrayIndexOutOfBound exception.Warum passiert dass?

Der Code:


Java:
public class TicTacToe {
    public static int row,col;
    public static char[][] board = new char[3][3];
    public static char turn = 'X';
   
    public static void main(String[] args) {
        for(int i = 0; i < 3; i++) {
            for(int j = 0; j < 3; j++) {
                board[i][j] = '_';
            }
        }
        Play();
    }
   
    public static void printBoard() {
    for(int i = 0; i < 3; i++) {
        Out.println();
        for(int j = 0; j < 3; j++) {
            if(j == 0){
                Out.print("| ");
            }
            Out.print(board[i][j] + " | ");
        }
    }
    Out.println();
   
}


public static void Play() {
    boolean playing = true;
    printBoard();
    Out.println();
    int nOfTurns = 1;
    Out.println("Turn: " + nOfTurns);
   
    while(playing){
        Out.println();
        Out.println("Player:" +" "+ turn);
        Out.print("Enter a row:");
        row = readNumber();
        Out.print("Enter a coloumn:");
        col = readNumber();
        board[row][col] = turn;
        nOfTurns++;
        Out.println();
        Out.println("Turn: "+ nOfTurns);
        if(GameOver(row,col)) {
            playing = false;
            Out.println("Player" +" "+turn +" "+"has won");
        }
        printBoard();
       
        if(turn == 'X') {
            turn = 'O';
        }else{
            turn = 'X';
        }
    }
}

public static boolean GameOver(int rowMove,int colMove) {
    if(board[0][colMove] == board[1][colMove] && board[0][colMove] == board[2][colMove]){
        return true;
    }else if(board[rowMove][0] == board[rowMove][1] && board[rowMove][0] == board[rowMove][2]) {
        return true;
    }else if(board[0][0] == board[1][1] && board[0][0] == board[2][2] && board[1][1] != '_') {
        return true;
    }else if(board[0][2] == board[1][1] && board[0][2] == board[2][0] && board[1][1] != '_') {
        return true;
    }else
        return false;
}


public static int readNumber() {
    boolean isValid = false;
    int number;
    do {  
   
    number = In.readInt() - 1;
       
    if (!In.done()) {
        Out.println("Invalid input");
        In.readLine();
      } else if (number < 0 || number > 3) {
        Out.println("Number must be between 1 and 3");
      } else {
        isValid = true;
      }
    } while (!isValid);

    return number;
  }
}
 
Zuletzt bearbeitet:
kneitzel

kneitzel

Top Contributor
Du hast ja schon 1 abgezogen, daher sind die zu prüfenden Grenzen 0 und 2 und nicht 0 und 3.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Anfänger TicTacToe, Problem bei Gewinnoption, sowohl Unentschieden Java Basics - Anfänger-Themen 8
A Überprüfung für unentschieden in TicTacToe Java Basics - Anfänger-Themen 10
A Überprüfung in TicTacToe Java Basics - Anfänger-Themen 5
tom.j85 TicTacToe - probleme beim Casten Java Basics - Anfänger-Themen 6
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
J TicTacToe Java Basics - Anfänger-Themen 2
A TicTacToe funktioniert bis auf "schiefer" Sieg Java Basics - Anfänger-Themen 6
shiroX Input/Output TicTacToe-Savegame Java Basics - Anfänger-Themen 1
shiroX Methoden Mögliche Spielstände bei TicTacToe Java Basics - Anfänger-Themen 14
M Array und Objektorientierung? - TicTacToe Spiel Java Basics - Anfänger-Themen 43
P TicTacToe Problem mit Win Methode Java Basics - Anfänger-Themen 4
Z TicTacToe mit Array Java Basics - Anfänger-Themen 6
T TicTacToe Spielfeld Java Basics - Anfänger-Themen 7
B TicTacToe Java Basics - Anfänger-Themen 2
S TicTacToe Java Basics - Anfänger-Themen 4
I TicTacToe blöde KI Java Basics - Anfänger-Themen 2
I Fehler bei TicTacToe Java Basics - Anfänger-Themen 108
G TicTacToe KI Java Basics - Anfänger-Themen 15
C Problem TicTacToe Java Basics - Anfänger-Themen 6
P 3D TicTacToe - Unentschieden Java Basics - Anfänger-Themen 5
G Tictactoe Java Basics - Anfänger-Themen 9
B TicTacToe Programmieren Java Basics - Anfänger-Themen 2
M Einfaches TicTacToe Programm Java Basics - Anfänger-Themen 17
H TicTacToe Fehler beim Compilieren Java Basics - Anfänger-Themen 7
cizzo TicTacToe Java Basics - Anfänger-Themen 6
W TicTacToe - Porblem mit dem Code.. Java Basics - Anfänger-Themen 5
H Hilfe bei TicTacToe mit jEdit Java Basics - Anfänger-Themen 7
0 TicTacToe, Problem mit den Checkbox-Aktionen Java Basics - Anfänger-Themen 6
N brauche hilfe zu tictactoe Java Basics - Anfänger-Themen 2
kulturfenster Problem bei TicTacToe Java Basics - Anfänger-Themen 11
P Ein einfaches Spiel: TicTacToe. Fehler und Vorschläge Java Basics - Anfänger-Themen 3
H TicTacToe: Zeit zwischen Zügen lassen Java Basics - Anfänger-Themen 9
M TicTacToe Java Basics - Anfänger-Themen 7
H TicTacToe-geeignete Klassenhierarchie Java Basics - Anfänger-Themen 3
G Hilfe bei TicTacToe Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben