Как дополнить мой код игры Крестики-нолики, чтобы добавить режим против компьютера(рандомно ставит нолик)?

У меня есть код игры Крестики-нолики и мне надо дополнить его так чтобы был режим против компьютера(рандомно ставит нолик). В моем коде есть только режим против человека(1 чел. нажимает на мышку - ставится Х, 2 чел. - О), нужно дополнить его режимом против бота. Есть кнопки выбора режима, но я к ним ничего не привязывал, смысла нет без второго режима. Режим против компьютера такой: ты ставишь Х, комп. ставит О в другой рандомной клетке. ВОТ КОД:

import pygame
import sys
from random import randint

#Создаём игровое окно:


pygame.init()

SIZE = (600, 600)

SCREEN = pygame.display.set_mode(SIZE)

pygame.display.set_caption("КРЕСТИКИ НОЛИКИ")

#Создаем параметры для игры:


BOARD_SIZE = 3

TILE_SIZE = int(SIZE[0] / BOARD_SIZE)

LINE_WIDTH = 5

CROSS_WIDTH = 25

CIRCLE_WIDTH = 15

FONT_SIZE = 100

PEOPLE_BOT = 0

#Устанавливаем цвета(---можете взять любые---):

BLACK = (0, 0, 0)

RED = '#ff0000'

BLUE = '#0000ff'

GREEN = '#00FF00'

WHITE = (255, 255, 255)


#Создаем игровое поле:


board = [[None] * BOARD_SIZE for _ in range(BOARD_SIZE)]

#Пишем функцию отрисовки игрового поля:


def draw_board():

   SCREEN.fill(WHITE)
   for i in range(1, BOARD_SIZE):

       pygame.draw.line(SCREEN, BLACK, (0, i * TILE_SIZE), (SIZE[0], i * TILE_SIZE), LINE_WIDTH)

       pygame.draw.line(SCREEN, BLACK, (i * TILE_SIZE, 0), (i * TILE_SIZE, SIZE[0]), LINE_WIDTH)

   for i in range(BOARD_SIZE):

       for j in range(BOARD_SIZE):
            
            if board[i][j] == 'X':
                pygame.draw.line(SCREEN, RED, (i * TILE_SIZE + CROSS_WIDTH, j * TILE_SIZE + CROSS_WIDTH),

                                ((i + 1) * TILE_SIZE - CROSS_WIDTH, (j + 1) * TILE_SIZE - CROSS_WIDTH), CROSS_WIDTH)

                pygame.draw.line(SCREEN, RED, ((i + 1) * TILE_SIZE - CROSS_WIDTH, j * TILE_SIZE + CROSS_WIDTH),

                                (i * TILE_SIZE + CROSS_WIDTH, (j + 1) * TILE_SIZE - CROSS_WIDTH), CROSS_WIDTH)
               
            elif board[i][j] == 'O':

               pygame.draw.circle(SCREEN, BLUE, (int(i * TILE_SIZE + TILE_SIZE / 2), int(j* TILE_SIZE + TILE_SIZE / 2)),

                                  int(TILE_SIZE / 2 - CIRCLE_WIDTH), CIRCLE_WIDTH)

def Button():
    clock = pygame.time.Clock()

    # Создаем объект шрифта
    font = pygame.font.Font(None, 24)
    font2 = pygame.font.Font(None, 24)

    # Создайте поверхность для кнопки
    button_surface = pygame.Surface((150, 50))
    button_surface2 = pygame.Surface((150, 50))

    # Отображение текста на кнопке
    text = font.render("Против человека", True, (0, 0, 0))
    text_rect = text.get_rect(
        center=(button_surface.get_width() /2, 
                button_surface.get_height()/2))

    text2 = font2.render("Против бота", True, (0, 0, 0))
    text_rect2 = text2.get_rect(
        center=(button_surface2.get_width() /2, 
                button_surface2.get_height()/2))

    # Создайте объект pygame.Rect, который представляет границы кнопки
    button_rect = pygame.Rect(125, 125, 150, 50)  # Отрегулируйте положение
    button_rect2 = pygame.Rect(300, 125, 300, 150)

    while True:
        clock.tick(60)
        SCREEN.fill((155, 255, 155))

        # Получаем события из очереди событий
        for event in pygame.event.get():
            # Проверьте событие выхода
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()

            # Проверяем событие нажатия кнопки мыши
            if event.type == pygame.MOUSEBUTTONDOWN:
                # Вызовите функцию on_mouse_button_down()
                if button_rect.collidepoint(event.pos):
                    PEOPLE_BOT = 0
                    draw_board()
                    main()
                    return
                
            if event.type == pygame.MOUSEBUTTONDOWN:
            # Вызовите функцию on_mouse_button_down()
                if button_rect2.collidepoint(event.pos):
                    PEOPLE_BOT = 1
                    draw_board()
                    return
            

        # Проверьте, находится ли мышь над кнопкой. 
        # Это создаст эффект наведения кнопки.
        if button_rect.collidepoint(pygame.mouse.get_pos()):
            pygame.draw.rect(button_surface, (127, 255, 212), (1, 1, 148, 48))
        else:
            pygame.draw.rect(button_surface, (0, 0, 0), (0, 0, 150, 50))
            pygame.draw.rect(button_surface, (255, 255, 255), (1, 1, 148, 48))
            pygame.draw.rect(button_surface, (0, 0, 0), (1, 1, 148, 1), 2)
            pygame.draw.rect(button_surface, (0, 100, 0), (1, 48, 148, 10), 2)
        
        if button_rect2.collidepoint(pygame.mouse.get_pos()):
            pygame.draw.rect(button_surface2, (127, 255, 212), (1, 1, 148, 48))
        else:
            pygame.draw.rect(button_surface2, (0, 0, 0), (0, 0, 150, 50))
            pygame.draw.rect(button_surface2, (255, 255, 255), (1, 1, 148, 48))
            pygame.draw.rect(button_surface2, (0, 0, 0), (1, 1, 148, 1), 2)
            pygame.draw.rect(button_surface2, (0, 100, 0), (1, 48, 148, 10), 2)
    
        # Показать текст кнопки
        button_surface.blit(text, text_rect)
        button_surface2.blit(text2, text_rect2)

        # Нарисуйте кнопку на экране
        SCREEN.blit(button_surface, (button_rect.x, button_rect.y))
        SCREEN.blit(button_surface2, (button_rect2.x, button_rect2.y))
        # Обновить состояние
        pygame.display.update()

#Теперь самое главное функция проверки победителя:


def check_winner():

   for i in range(BOARD_SIZE):

       if (board[i][0] == board[i][1] == board[i][2]) and (board[i][0] is not None):

           return board[i][0]

       if (board[0][i] == board[1][i] == board[2][i]) and (board[0][i] is not None):

           return board[0][i]

   if (board[0][0] == board[1][1] == board[2][2]) and (board[0][0] is not None):

       return board[0][0]

   if (board[0][2] == board[1][1] == board[2][0]) and (board[0][2] is not None):

       return board[0][2]

   return None


#Теперь создаем основной цикл игры:


def main():

    turn = 'X'

    font = pygame.font.SysFont("Arial", FONT_SIZE)

    while True:

        for event in pygame.event.get():

            if event.type == pygame.QUIT:

                pygame.quit()

                return
           
            elif event.type == pygame.MOUSEBUTTONDOWN:

                x, y = event.pos

                tile_x = x // TILE_SIZE

                tile_y = y // TILE_SIZE

                if board[tile_x][tile_y] is None:

                    board[tile_x][tile_y] = turn

                    if turn == 'X':

                        turn = 'O'

                    else:
                        turn = 'X'
            
        draw_board()

        winner = check_winner()

        if winner is not None:

                SCREEN.blit(font.render("{0} Победил!".format(winner), True, BLACK, GREEN), (SIZE[0] / 4 - FONT_SIZE, SIZE[0] / 1.75 - FONT_SIZE))

                pygame.display.update()
                pygame.time.wait(1000)

                return

        elif all([all(row) for row in board]) and (winner is None):

            SCREEN.blit(font.render("Ничья!", True, BLACK, GREEN), (SIZE[0] / 2.5 - FONT_SIZE, SIZE[0] / 1.75 - FONT_SIZE))

            pygame.display.update()

            pygame.time.wait(1000)

            return

        pygame.display.update()
Button()

if __name__ == "__main__":

    main()

Ответы (0 шт):