메인 게임 루프 구현
플레이어가 턴을 진행하고 게임과 상호 작용할 수 있도록 메인 게임 루프를 작성합니다.
int main() {
initializeBoard();
int currentPlayer = 1;
while (1) {
clearScreen();
printf("Current board state:\n");
printBoard();
int row, col;
printf("Player %d, please enter a row and column (e.g., 1 2):", currentPlayer);
while (scanf("%d %d", &row, &col) != 2) {
printf("Invalid input, please try again: ");
while (getchar() != '\n');
}
if (row < 1 || row > 3 || col < 1 || col > 3 || board[row - 1][col - 1] != ' ') {
printf("Invalid move, please try again.\n");
} else {
if (currentPlayer == 1) {
board[row - 1][col - 1] = 'X';
currentPlayer = 2;
} else {
board[row - 1][col - 1] = 'O';
currentPlayer = 1;
}
}
if (isGameOver()) {
clearScreen();
printf("Game over!\n");
printBoard();
char winner = getWinner();
if (winner != ' ') {
printf("Player %c wins!\n", winner);
} else {
printf("It's a draw!\n");
}
break;
}
}
return 0;
}
initializeBoard 함수를 호출하여 게임 보드를 초기화하고 모든 칸을 공백으로 설정합니다.
현재 턴이 누구인지 추적하기 위해 정수 변수 currentPlayer를 생성합니다. 초기 설정은 1 이며, 플레이어 1 을 나타냅니다.
while (1) 메인 루프에서:
clearScreen 함수를 호출하여 화면을 지워 각 턴 후에 디스플레이가 새로 고쳐지도록 합니다.
printBoard 함수를 호출하여 현재 게임 보드를 출력합니다.
플레이어 입력: 현재 플레이어에게 scanf 함수를 통해 행 및 열 좌표를 입력하도록 요청합니다 (예: Player 1, please enter a row and column (e.g., 1 2):). 입력이 유효하지 않은 경우 (두 개의 정수가 아닌 경우) Invalid input, please try again: 메시지가 표시되고 유효한 입력이 얻어질 때까지 입력 버퍼가 지워집니다.
입력 유효성 검사: 그런 다음 입력된 행 및 열 좌표가 유효한지 (1 에서 3 까지의 범위) 와 선택한 위치가 공백인지 확인합니다. 입력이 유효하지 않거나 선택한 위치가 이미 점유된 경우 Invalid move, please try again. 메시지가 표시되고 플레이어에게 다시 입력하라는 메시지가 표시됩니다.
체스: 입력이 유효하면 코드는 현재 플레이어 (1 또는 2) 에 따라 게임 보드의 해당 위치에 X 또는 O를 배치합니다.
게임 종료 감지: 그런 다음 코드는 isGameOver() 함수를 호출하여 게임이 종료되었는지 확인합니다. 게임이 종료되면 화면이 지워지고 게임이 종료되었다는 메시지가 표시되며, 승자 (있는 경우) 또는 무승부가 포함됩니다.
게임 결과: 승자가 있는 경우 코드는 Player X wins! 또는 Player O wins!를 표시합니다. 승자가 누구인지에 따라 다릅니다. 승자가 없는 경우 코드는 It's a draw!를 표시하여 무승부임을 나타냅니다.