Загрузка данных


import random

def drawBoard(board):
    # Корректная отрисовка поля 3x3
    print('   |   |')
    print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
    print('   |   |')
    print('-----------')
    print('   |   |')
    print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
    print('   |   |')

def isWinner(bo, le):
    # Проверка победных комбинаций
    if ((bo[7] == le and bo[8] == le and bo[9] == le) or
        (bo[4] == le and bo[5] == le and bo[6] == le) or
        (bo[1] == le and bo[2] == le and bo[3] == le) or
        (bo[7] == le and bo[4] == le and bo[1] == le) or
        (bo[8] == le and bo[5] == le and bo[2] == le) or
        (bo[9] == le and bo[6] == le and bo[3] == le) or
        (bo[7] == le and bo[5] == le and bo[3] == le) or
        (bo[9] == le and bo[5] == le and bo[1] == le)):
        return True
    else:
        return False

def isBoardFull(board):
    # Проверка, заполнена ли доска
    for i in range(1, 10):
        if board[i] == ' ':
            return False
    return True

def free(board, movesList):
    # Возвращает список свободных ячеек из movesList
    possibleMoves = []
    for i in movesList:
        if board[i] == ' ':
            possibleMoves.append(i)
    return possibleMoves

def randomMove(board, movesList):
    # Случайный ход из списка возможных
    possibleMoves = free(board, movesList)
    if len(possibleMoves) != 0:
        return random.choice(possibleMoves)
    else:
        return None

def getComputerMove(board):
    # Умный ход компьютера (блокировка игрока и победа)
    possibleMoves = free(board, [1,2,3,4,5,6,7,8,9])
    
    # 1. Если компьютер может выиграть — выигрывает
    for i in possibleMoves:
        board[i] = computerLetter
        if isWinner(board, computerLetter):
            board[i] = ' '
            return i
        board[i] = ' '
    
    # 2. Если игрок может выиграть — блокируем
    for i in possibleMoves:
        board[i] = playerLetter
        if isWinner(board, playerLetter):
            board[i] = ' '
            return i
        board[i] = ' '
    
    # 3. Пробуем углы
    move = randomMove(board, [1,3,7,9])
    if move != None:
        return move
    
    # 4. Центр
    if board[5] == ' ':
        return 5
    
    # 5. Стороны
    return randomMove(board, [2,4,6,8])

# === ДАЛЬШЕ ИДЁТ ОСНОВНАЯ ПРОГРАММА (ваш следующий файл) ===