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])
# === ДАЛЬШЕ ИДЁТ ОСНОВНАЯ ПРОГРАММА (ваш следующий файл) ===