|
|
@ -62,22 +62,28 @@ char switchPlayer(char currentPlayer) { |
|
|
|
return (currentPlayer == 'X') ? 'O' : 'X'; |
|
|
|
} |
|
|
|
|
|
|
|
int isValidMove(int choice) { |
|
|
|
int row = (choice - 1) / BOARD_SIZE; |
|
|
|
int col = (choice - 1) % BOARD_SIZE; |
|
|
|
|
|
|
|
return (choice >= 1 && choice <= BOARD_SIZE * BOARD_SIZE && board[row][col] != 'X' && board[row][col] != 'O'); |
|
|
|
} |
|
|
|
|
|
|
|
void makeMove() { |
|
|
|
int choice; |
|
|
|
printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); |
|
|
|
printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer); |
|
|
|
scanf("%d", &choice); |
|
|
|
|
|
|
|
// Konvertiere die Zahl in Zeilen- und Spaltenindex |
|
|
|
int row = (choice - 1) / 3; |
|
|
|
int col = (choice - 1) % 3; |
|
|
|
|
|
|
|
// Überprüfe, ob das gewählte Feld gültig ist |
|
|
|
if (choice < 1 || choice > 9 || board[row][col] == 'X' || board[row][col] == 'O') { |
|
|
|
printf("Ungültiger Zug! Bitte wähle erneut.\n"); |
|
|
|
makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird |
|
|
|
} else { |
|
|
|
board[row][col] = currentPlayer; |
|
|
|
currentPlayer = switchPlayer(currentPlayer); |
|
|
|
if (isValidMove(choice)) { |
|
|
|
int row = (choice - 1) / / BOARD_SIZE; |
|
|
|
int col = (choice - 1) % % BOARD_SIZE; |
|
|
|
board[row][col] = currentPlayer; |
|
|
|
currentPlayer = switchPlayer(currentPlayer); |
|
|
|
|
|
|
|
} else { |
|
|
|
printf("Ungueltiger Zug! Bitte waehle erneut.\n"); |
|
|
|
makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|