더북(TheBook)

① 게임을 진행할 때마다 업데이트된 보드를 출력해야 하므로 visual_Board() 함수를 호출하여 매번 쉽게 보드를 출력할 수 있도록 합니다.

이제 에이전트(플레이어)가 보드를 이동하여 게임을 진행하는 메인 함수를 정의합니다.

코드 12-11 보드 이동 함수 정의

def game(): ------ 플레이어의 보드 이동을 위한 함수
    turn = 'X'
    count = 0
    for i in range(8):
        visual_Board(boarder)
        print("당신 차례입니다," + turn + ". 어디로 이동할까요?")
        move = input()
        if boarder[move] == ' ':
            boarder[move] = turn
            count += 1
        else:
            print("이미 채워져 있습니다.\n어디로 이동할까요?")
            continue

        if count >= 5: ------ 플레이어 X 또는 Y가 다섯 번 이동 후 이겼는지 확인
            if boarder['1'] == boarder['2'] == boarder['3'] != ' ': ------ 상단 1, 2, 3이 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['4'] == boarder['5'] == boarder['6'] != ' ': ------ 중앙 4, 5, 6이 채워졌을 경우
                visual_Board(boarder) 
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['7'] == boarder['8'] == boarder['9'] != ' ': ------ 하단 7, 8, 9가 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['1'] == boarder['4'] == boarder['7'] != ' ': ------ 보드의 왼쪽 1, 4, 7이 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['2'] == boarder['5'] == boarder['8'] != ' ': ------ 보드의 중간 2, 5, 8이 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['3'] == boarder['6'] == boarder['9'] != ' ': ------ 보드의 오른쪽 3, 6, 9가 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['1'] == boarder['5'] == boarder['9'] != ' ': ------ 대각선 1, 5, 9가 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

            elif boarder['3'] == boarder['5'] == boarder['7'] != ' ': ------ 대각선 3, 5, 7이 채워졌을 경우
                visual_Board(boarder)
                print("\n게임 종료.\n")
                print(" ---------- " + turn + "가 승리했습니다. -----------")
                break

        if count == 9: ------ X, Y 모두 이기지 않고 보드가 꽉 차면 결과를 ‘동점(tie)’으로 선언
            print("\n게임 종료.\n")
            print("동점입니다")

        if turn == 'X': ------ 움직임이 있을 때마다 플레이어 변경(X→Y, Y→X)
            turn = 'Y'
        else:
            turn = 'X'

    if __name__ == "__main__":
        game()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.