① 게임을 진행할 때마다 업데이트된 보드를 출력해야 하므로 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()
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.