Как написать крестики-нолики, чтобы компьютер перекрывал ходы Python
Прошу помощи у профессионалов. Решил сделать игру крестики-нолики на Python с возможностью выбрать уровень сложности компьютера. Сделал функцию, где компьютер просто рандомно ставит нолик(O), а вот сделать другую функцию, где если центр свободен, то он должен ходить туда и если есть два подряд крестика, то он должен перекрывать их, не получается никак. Помогите пожалуйста реализовать вторую функцию get_comp_coord2()
from random import randint
game_board = [[" "] * 3 for i in range(3)]
def draw_board(game_board):
print(f" 0 1 2")
for j in range(3):
print(f"{j} {game_board[j][0]} {game_board[j][1]} {game_board[j][2]}")
def get_users_coord():
while True:
cords = input("Введите координаты").split()
if len(cords) != 2:
print("Вы ввели не 2 координаты!")
continue
x, y = cords
if not (x.isdigit()) or not (y.isdigit()):
print("Введите числа!")
continue
if int(x) > 2 or int(x) < 0 or int(y) > 2 or int(y) < 0:
print("Координаты вне диапазона!")
continue
x, y = int(x), int(y)
if game_board[x][y] != " ":
print("Клетка занята!")
continue
return x, y
def check_win():
win_coords = [((0, 0), (0, 1), (0, 2)), ((1, 0), (1, 1), (1, 2)), ((2, 0), (2, 1), (2, 2)),
((0, 0), (1, 0), (2, 0)),
((0, 1), (1, 1), (2, 1)), ((0, 2), (1, 2), (2, 2)), ((0, 0), (1, 1), (2, 2)),
((0, 2), (1, 1), (2, 0))]
for cor in win_coords:
a = cor[0]
b = cor[1]
c = cor[2]
if game_board[a[0]][a[1]] == game_board[b[0]][b[1]] == game_board[c[0]][c[1]] != " ":
print(f"Выиграл {game_board[a[0]][a[1]]}!")
return True
return False
def get_user_char():
print("Вы ходите X")
user_char = "X"
return user_char
def get_comp_char():
comp_char = "O"
return comp_char
def get_comp_coord1():
x, y = randint(0, 2), randint(0, 2)
while game_board[x][y] != " ":
x, y = randint(0, 2), randint(0, 2)
return x, y
def get_comp_coord2():
x, y = randint(0, 2), randint(0, 2)
if game_board[1][1] == " ":
game_board[x][y] = game_board[1][1]
return x, y
user_char = get_user_char()
comp_char = get_comp_char()
if user_char == "X":
computer_char = "O"
step = 0
while True:
draw_board(game_board)
if step % 2 == 0:
x, y = get_users_coord()
else:
x, y = get_comp_coord2()
if step % 2 == 0:
game_board[x][y] = user_char
else:
game_board[x][y] = comp_char
step += 1
if check_win():
draw_board(game_board)
break
if step == 9:
draw_board(game_board)
print("Ничья")
break