Прежде всего, условно, вы должны назвать свой экран Surface
просто screen
.
Затем вы загружаете файлы изображений снова и снова в цикле while
. Просто загрузите его один раз.
Также хорошо (почти) всегда использовать convert
после загрузки изображения, чтобы Surface
имел тот же формат пикселей, что и экран.
Наконец, в Pygame вы должны использовать класс Rect
для (почти) всего, что связано с рисованием / позиционированием.
Здесь вы можете увидеть, как легко центрировать что-либо с помощью класса Rect
. Я также переупорядочил ваш цикл в соответствии с классическим соглашением ввода / обновления / рисования и удалил второе изображение для краткости:
def gameMenu():
iPATH = f"{PATH}/assets/textures/titleScreen/buttons"
logo = pygame.image.load(os.path.join(f"{iPATH}/Logo.png")).convert()
logo_rect = logo.get_rect(center = screen.get_rect().center)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
keys = pygame.key.get_pressed()
if keys[selectButton]:
print("clicked z")
break
elif keys[backButton]:
print("clicked x")
screen.fill((0,0,0))
screen.blit(logo, logo_rect)
pygame.display.update()