Как сделать кнопку и простое меню в pygame?
Хочу при запуске игры показывать стартовый экран с кнопкой «Играть», и чтобы по клику запускалась сама игра. Как в pygame нарисовать кнопку и поймать клик мышкой по ней?
2 ответа
Кнопка в pygame — это просто прямоугольник (Rect), по которому ты проверяешь попадание мыши. Ловишь событие MOUSEBUTTONDOWN и смотришь, попала ли точка клика в этот Rect через collidepoint.
button = pygame.Rect(250, 200, 140, 50)
font = pygame.font.SysFont(None, 36)
in_menu = True
while in_menu:
for event in pygame.event.get():
if event.type == pygame.QUIT:
in_menu = False
if event.type == pygame.MOUSEBUTTONDOWN:
if button.collidepoint(event.pos): # клик по кнопке
print("Старт игры!")
in_menu = False # выходим в саму игру
screen.fill((30, 30, 40))
pygame.draw.rect(screen, (0, 150, 0), button)
label = font.render("Играть", True, (255, 255, 255))
screen.blit(label, (button.x + 30, button.y + 12))
pygame.display.flip()
clock.tick(60)
event.pos — координаты клика, button.collidepoint(...) проверяет, внутри ли кнопки. Меню обычно делают отдельным маленьким циклом, который заканчивается, когда выбрали пункт.
Приятная мелочь для эффекта «живой» кнопки — подсвечивать её при наведении. Перед отрисовкой проверь button.collidepoint(pygame.mouse.get_pos()) и рисуй кнопку светлее, если мышь над ней. Игроку сразу понятнее, что на это можно нажать.