← Все вопросы

Как сделать кнопку и простое меню в pygame?

Задан 25 месяцев назад1.3к просмотров2 ответа
7

Хочу при запуске игры показывать стартовый экран с кнопкой «Играть», и чтобы по клику запускалась сама игра. Как в pygame нарисовать кнопку и поймать клик мышкой по ней?

2 ответа

11
✓ Принятый ответ — помог автору

Кнопка в 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(...) проверяет, внутри ли кнопки. Меню обычно делают отдельным маленьким циклом, который заканчивается, когда выбрали пункт.

4

Приятная мелочь для эффекта «живой» кнопки — подсвечивать её при наведении. Перед отрисовкой проверь button.collidepoint(pygame.mouse.get_pos()) и рисуй кнопку светлее, если мышь над ней. Игроку сразу понятнее, что на это можно нажать.

Ваш ответ

Войдите, чтобы ответить на вопрос.