Hallo! Ich möchte in meinem Code noch ein bisschen verbessern.Nämlich woll ich noch sicher machen dass kein Feld zwei mal verwendet werden kann.Also zum Beispiel das feld 1,1 wurde von Spieler X bereits genommen,und Spieler O (oder Spieler X egal) versucht das Feld 1,1 zu initialisern.In dem Fall möchte ich den Spieler sagen dass das Feld bereits genommen ist.Wie könnte ich so etwas implementieren? Hier ist mein 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("Input must be a valid number");
In.readLine();
} else if (number < 0 || number > 2) {
Out.println("The number is not in the specified range: 1-3");
} else {
isValid = true;
}
} while (!isValid);
return number;
}
}