Если вы наберете get_rect
для Surface
, полученное значение Rect
всегда будет иметь значение x
и y
0
.
. Поэтому при запускеif img.get_rect().collidepoint(mouse_pos)
в цикле событий вы НЕ проверяете, нажали ли на Surface
.Вы проверяете, находится ли положение мыши в верхнем левом углу экрана.
Возможно, используйте некоторые операторы print
, чтобы проверить себя.
Что вы можете сделать, это создать Rect
для каждой кнопки вне вашего основного цикла, а затем используйте эти ректы для блиттинга:
...
img = pygame.image.load('3.gif')
img_rect = img.get_rect()
...
mg = pygame.image.load('4.gif').convert()
mg_rect = img.get_rect(topleft=(150,0))
...
while True:
...
if event.type == pygame.MOUSEBUTTONDOWN:
mouse_pos = event.pos
if img_rect().collidepoint(mouse_pos):
BEEP1.play()
if mg_rect ().collidepoint(mouse_pos):
BEEP2.play()
screen.blit(img, img_rect)
screen.blit(mg, mg_rect)
Обратите внимание, что вам также следует избегать time.sleep
или нескольких вызовов pygame.display.flip()
вВаш основной цикл.
Другое решение заключается в использовании класса Sprite
в Pygame, который позволяет комбинировать Surface
и Rect
.
.