3x3 틱택토 게임

게임 설명 - 2인용 게임

게임 규칙 - 3 x 3 보드판에 대각선 직선으로 먼저 한줄을 채우는 쪽이 승리한다.

1~9까지의 딕셔너리 생성하기

index = {n:' ' for n in range(1,10)}

보드판 생성

3x3 의 보드판을 생성한다.

def game_board():
    board = index[1] + '  | ' + index[2] + '  | ' + index[3] + '\\n------------\\n' + index[4] + '  | ' + index[5] + '  | ' + index[6] + '\\n------------\\n' + index[7] + '  | ' + index[8] + '  | ' + index[9]+'\\n'
    print(board)
   |    |
------------
   |    |
------------
   |    |

빈 공간 확인하기

def check_empty(x):
# 빈공간이 아닐경우if index[x] != ' ' :
        print("이미 말이 놓아져있습니다. 다시 선택해주세요.")
        user = int(input('말을놓아주세요.'))

# 빈공간인지 다시 체크
        check_empty(user)

# 빈 공간일 경우 말 놓기else :
        index[x] = 'O'

컴퓨터 기능

사용자는 O의 말을 가지고 컴퓨터는 X의 말을 가진다.

컴퓨터는 1~9까지의 랜덤 숫자를 선택하여 빈 공간인지 확인 후 말을 놓는다.

def bot():
    bot_think = random.randint(1,9)
    if index[bot_think] == ' ' :
        index[bot_think] = "X"
    else :
        bot()

게임 종료 조건

이 부분은 작성하면서 고심을 많이 했지만, 이런식으로 하드코딩하는 방법밖에 떠오르지 않았다.

def game_over():
    if index[1] == "O" and index[2] == 'O' and index[3] == "O" :
        return True
    elif index[1] == "O" and index[5] == 'O' and index[9] == "O" :
        return True
    elif index[1] == "O" and index[4] == 'O' and index[7] == "O" :
        return True
    elif index[2] == "O" and index[5] == 'O' and index[8] == "O" :
        return True
    elif index[3] == "O" and index[5] == 'O' and index[7] == "O" :
        return True
    elif index[3] == "O" and index[6] == 'O' and index[9] == "O" :
        return True
    elif index[4] == "O" and index[5] == 'O' and index[6] == "O" :
        return True
    elif index[7] == "O" and index[8] == 'O' and index[9] == "O" :
        return True

    elif index[1] == "X" and index[2] == 'X' and index[3] == "X" :
        return False
    elif index[1] == "X" and index[5] == 'X' and index[9] == "X" :
        return False
    elif index[1] == "X" and index[4] == 'X' and index[7] == "X" :
        return False
    elif index[2] == "X" and index[5] == 'X' and index[8] == "X" :
        return False
    elif index[3] == "X" and index[5] == 'X' and index[7] == "X" :
        return False
    elif index[3] == "X" and index[6] == 'X' and index[9] == "X" :
        return False
    elif index[4] == "X" and index[5] == 'X' and index[6] == "X" :
        return False
    elif index[7] == "X" and index[8] == 'X' and index[9] == "X" :
        return False

게임 시작 코드

# 게임 시작
game_on = True
# 보드 출력
game_board()
while game_on :
# 유저 턴
    user = int(input('말을 놓아주세요'))
# 빈 공간 확인
    check_empty(user)
# 보드 출력
    game_board()
# 승리 조건 만족시 게임 종료if game_over() == True :
        print("승리하였습니다.")
        game_on = False
    bot()
# 컴퓨터 승리 조건 만족시 게임 종료if game_over() == False :
        print("패배하였습니다.")
        game_on = False
    game_board()