본문 바로가기
08.개발&프로그래밍/1.파이썬

1. Python으로 구현한 틱택토 (Tic-Tac-Toe) 게임

by JWJ Family 2025. 7. 18.
728x90

이 페이지에는 터미널에서 실행 가능한 Python 기반 틱택토 게임 코드가 포함되어 있습니다. 3×3 보드 위에서 플레이어 X와 O가 번갈아가며 위치를 선택하고, 승리 조건 또는 무승부를 확인합니다. 아래 코드를 복사해 tictactoe.py 파일로 저장한 후, python tictactoe.py로 실행하세요.

# tictactoe.py

def print_board(board):
    print()
    for row in board:
        print(' | '.join(row))
        print('-' * 9)
    print()

def check_winner(board, player):
    # 가로, 세로, 대각선 확인
    win_states = [
        [board[0][0], board[0][1], board[0][2]],
        [board[1][0], board[1][1], board[1][2]],
        [board[2][0], board[2][1], board[2][2]],
        [board[0][0], board[1][0], board[2][0]],
        [board[0][1], board[1][1], board[2][1]],
        [board[0][2], board[1][2], board[2][2]],
        [board[0][0], board[1][1], board[2][2]],
        [board[0][2], board[1][1], board[2][0]],
    ]
    return [player, player, player] in win_states

def is_board_full(board):
    return all(cell != ' ' for row in board for cell in row)

def main():
    board = [[' ' for _ in range(3)] for _ in range(3)]
    current_player = 'X'

    while True:
        print_board(board)
        print(f"플레이어 {current_player} 차례입니다.")
        try:
            move = input("위치 선택 (row,col 예: 1,3): ")
            row, col = map(int, move.split(','))
            if row < 1 or row > 3 or col < 1 or col > 3:
                print("1에서 3 사이의 숫자를 입력하세요.")
                continue
            if board[row-1][col-1] != ' ':
                print("이미 선택된 칸입니다. 다른 곳을 선택하세요.")
                continue
            board[row-1][col-1] = current_player
        except ValueError:
            print("올바른 형식이 아닙니다. 예: 2,1")
            continue

        # 승리 확인
        if check_winner(board, current_player):
            print_board(board)
            print(f"축하합니다! 플레이어 {current_player}가 이겼습니다!")
            break

        # 무승부 확인
        if is_board_full(board):
            print_board(board)
            print("무승부입니다!")
            break

        # 플레이어 교체
        current_player = 'O' if current_player == 'X' else 'X'

if __name__ == "__main__":
    main()
반응형