Не работает наведение pygame
Суть в том, что когда я должен наводиться на кнопку, она должна сначала сменить цвет, а после клика на неё обновить экран и очистить его. У меня не работает смена цвета, но экран обновляется. Я новичок, прошу помогите, сам не могу разобраться.
import pygame
pygame.init()
screen = pygame.display.set_mode((1280, 720))
pygame.display.set_caption("BlackJack")
icon = pygame.image.load('cards/icons8-blackjack-62.png')
pygame.display.set_icon(icon)
class ImageButton:
def __init__(self, x, y, width, height, text, image_path=None, hover_image_path=None, sound_path=None):
self.x = x
self.y = y
self.width = width
self.height = height
self.text = text
self.image = pygame.image.load(image_path)
self.image = pygame.transform.scale(self.image, (width, height))
self.hover_image = self.image
if hover_image_path:
self.hover_image = pygame.image.load(hover_image_path)
self.hover_image = pygame.transform.scale(self.hover_image, (width, height))
self.rect = self.image.get_rect(topleft=(x, y))
self.sound = None
if sound_path:
self.sound = pygame.mixer.Sound(sound_path)
self.is_hovered = False
def draw(self, screen):
current_image = self.hover_image if self.is_hovered else self.image
screen.blit(current_image, self.rect.topleft)
font = pygame.font.Font(None, 36)
text_surface = font.render(self.text, True, (255, 255, 255))
text_rect = text_surface.get_rect(center=self.rect.center)
screen.blit(text_surface, text_rect)
def check_hover(self, mouse_pos):
self.is_hovered = self.rect.collidepoint(mouse_pos)
def handle_event(self, event):
if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1 and self.is_hovered:
screen.fill((221, 227, 241))
pygame.display.update()
if self.sound:
self.sound.play()
play_button = ImageButton(450, 400, 400, 200, 'Play', 'cards/button.png', 'cards/button_after.png', 'cards/zvuk11.mp3')
first_screen = pygame.image.load('cards/Blackjack-logo.png')
screen.fill((221, 227, 241))
screen.blit(first_screen, (300, 100))
play_button.draw(screen)
def main_menu():
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
play_button.handle_event(event)
play_button.check_hover(pygame.mouse.get_pos())
pygame.display.flip()
main_menu()