import random
import pygame

# Инициализация Pygame
pygame.init()

# Размеры игровой сцены
WIDTH, HEIGHT = 500, 500

# Цвета RGB
WHITE = (255, 255, 255)
GREY = (128, 128, 128)
YELLOW = (255, 255, 0)
GREEN = (0, 255, 0)
RED = (255, 0, 0)

# Время отображения надписи
SHOW_TIME = 30

# Создание игровой сцены
game_display = pygame.display.set_mode((WIDTH, HEIGHT))
game_display.fill(WHITE)

# Создание игрового таймера
clock = pygame.time.Clock()

# Класс "цветной прямоугольник"
class Area:
    def __init__(self, rect, color):
        self.rect = rect
        self.color = color
    
    def set_color(self, color):
        self.color = color
    
    def fill_color(self, color):
        pygame.draw.rect(game_display, color, self.rect)
    
    def set_border_color(self, color, border_width):
        pygame.draw.rect(game_display, color, self.rect, border_width)
    
    def collidepoint(self, pos):
        return self.rect.collidepoint(pos)

# Класс "прямоугольник с надписью"
class Label(Area):
    def __init__(self, rect, color, text="", font_size=20):
        super().__init__(rect, color)
        self.font = pygame.font.Font(None, font_size)
        self.text = text
        self.text_surface = self.font.render(self.text, True, GREY)
        self.text_rect = self.text_surface.get_rect(center=self.rect.center)
        self.show_time = 0
    
    def set_text(self, text):
        self.text = text
        self.text_surface = self.font.render(self.text, True, GREY)
        self.text_rect = self.text_surface.get_rect(center=self.rect.center)
    
    def set_show_time(self, show_time):
        self.show_time = show_time
    
    def display(self):
        if self.show_time > 0:
            self.fill_color(YELLOW)
            pygame.draw.rect(game_display, GREY, self.rect, 2)
            game_display.blit(self.text_surface, self.text_rect)
            self.show_time -= 1
        else:
            self.fill_color(self.color)
            pygame.draw.rect(game_display, GREY, self.rect, 2)
            game_display.blit(self.text_surface, self.text_rect)

# Создание объектов класса Label
card1 = Label(pygame.Rect(50, 50, 100, 100), WHITE, "Card 1")
card2 = Label(pygame.Rect(150, 50, 100, 100), WHITE, "Card 2")
card3 = Label(pygame.Rect(250, 50, 100, 100), WHITE, "Card 3")
card4 = Label(pygame.Rect(350, 50, 100, 100), WHITE, "Card 4")

# Настройка обводки для карточек
for card in [card1, card2, card3, card4]:
    card.set_border_color(GREY, 2)

# Основной игровой цикл
while True:
    # Обработка событий
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            quit()
        if event.type == pygame.MOUSEBUTTONDOWN:
            pos = pygame.mouse.get_pos()
            if card1.collidepoint(pos):
                if "CLICK!" in card1.text:
                    card1.set_color(GREEN)
                else:
                    card1.set_color(RED)
                card1.set_show_time(0)
            elif card2.collidepoint(pos):
                if "CLICK!" in card2.text:
                    card2.set_color(GREEN)
                else:
                    card2.set_color(RED)
                card2.set_show_time(0)
            elif card3.collidepoint(pos):
                if "CLICK!" in card3.text:
                    card3.set_color(GREEN)
                else:
                    card3.set_color(RED)
                card3.set_show_time(0)
            elif card4.collidepoint(pos):
                if "CLICK!" in card4.text:
                    card4.set_color(GREEN)
                else:
                    card4.set_color(RED)
                card4.set_show_time(0)
        
    # Отображение объектов
    card1.display()
    card2.display()
    card3.display()
    card4.display()

    # Отображение надписи CLICK! на случайной карточке
    if random.randint(1, 100) == 1:
        card_num = random.randint(1, 4)
        if card_num == 1:
            card1.set_text("Card 1 CLICK!")
            card1.set_show_time(SHOW_TIME)
        elif card_num == 2:
            card2.set_text("Card 2 CLICK!")
            card2.set_show_time(SHOW_TIME)
        elif card_num == 3:
            card3.set_text("Card 3 CLICK!")
            card3.set_show_time(SHOW_TIME)
        else:
            card4.set_text("Card 4 CLICK!")
            card4.set_show_time(SHOW_TIME)

    # Обновление игрового экрана
    pygame.display.update()
    
    # Ограничение частоты смены кадров
    clock.tick(40)
    добавь к этому коду python:
    1. Создайте текстовые объекты для отображения статистики и переменные-счётчики.

2. Реализуйте подсчёт и отображение пройденного времени и набранных очков.

3. Запрограммируйте победу: по истечении 10 секунд игрового времени или раньше должно быть набрано 5 очков.

4. Запрограммируйте проигрыш: прошло больше 10 секунд, а победа не наступила.