C 언어를 사용하여 틱택토 게임을 구현합니다. 본 게임은 사용자와 컴퓨터가 번갈아 가며 3x3 보드에서 X와 O를 놓는 게임입니다. 세 칸을 먼저 연속으로 맞추는 쪽이 승리합니다.
- 3x3 크기의 틱택토 보드를 구현합니다.
- 각 칸은 초기에는 비어 있어야 하며, 사용자가 쉽게 위치를 식별할 수 있도록 숫자 또는 공백으로 표시합니다.
- 사용자는 X를 사용하며, 컴퓨터는 O를 사용합니다.
- 사용자가 먼저 시작하며, 좌표를 입력하여 X를 보드에 표시합니다.
- 컴퓨터는 랜덤한 빈 칸에 O를 표시합니다.
- 각 차례마다 보드 상태를 화면에 출력합니다.
- 게임 진행 중 다음 조건을 만족하면 승리로 간주하고 게임을 종료합니다:
- 가로, 세로, 또는 대각선 방향으로 같은 기호(X 또는 O)가 3개 연속으로 놓여질 경우.
- 승리한 사람이 "플레이어 승리!" 또는 **"컴퓨터 승리!"**라는 메시지를 출력합니다.
- 보드가 가득 찼으나 승리 조건을 만족하지 못하면 무승부로 간주합니다.
- **"무승부입니다!"**라는 메시지를 출력하고 게임을 종료합니다.
- 게임이 끝난 후, 프로그램이 종료됩니다. 재시작 기능은 필요하지 않습니다.
-
보드 출력 형식
- 보드 상태는 직관적으로 출력되어야 하며, 사용자와 컴퓨터가 놓은 위치를 쉽게 확인할 수 있어야 합니다.
- 예시:
X | O | X ---+---+--- O | X | O ---+---+--- X | | O
-
입력 유효성 검사
- 사용자가 입력한 좌표가 다음 조건을 만족하지 않을 경우, 오류 메시지를 출력하고 다시 입력을 요청합니다:
- 입력 좌표가 보드 범위 내에 있어야 합니다.
- 이미 사용된 칸에 기호를 놓으려 할 경우 다시 입력을 요청합니다.
- 사용자가 입력한 좌표가 다음 조건을 만족하지 않을 경우, 오류 메시지를 출력하고 다시 입력을 요청합니다:
-
컴퓨터의 랜덤 위치 선택
- 컴퓨터는 매 차례마다 랜덤으로 빈 칸을 선택하여 O를 표시합니다.
- 동일한 칸에 중복하여 기호를 놓지 않도록 유의합니다.
-
메시지 출력
- 사용자와 컴퓨터의 차례를 명확히 구분할 수 있도록 메시지를 출력합니다.
- 예시:
- "사용자의 차례입니다. 위치를 입력하세요 (행과 열):"
- "컴퓨터가 (1, 2)에 O를 놓았습니다."
-
코드 작성 구조
- 함수 사용 여부는 자유입니다. 함수 없이
main
함수 내에서 모든 로직을 작성해도 무방합니다.
- 함수 사용 여부는 자유입니다. 함수 없이
- 사용자와 컴퓨터의 게임 진행이 자연스럽고 직관적이도록 프로그램을 설계합니다.
- 무승부, 승리, 또는 입력 오류 상황을 적절히 처리하여 게임이 중단되지 않도록 합니다.
- 게임 종료 후 결과를 보드와 함께 출력하여 사용자에게 명확히 전달합니다.