Задать вопрос
BlvlS
@BlvlS

Как сделать активным свой выбор в меню?

Здравствуйте!
Создав стабильный экран с надписями я смог добавить "подсвечивание" выбора пользователя посредством увеличения шрифта, однако столкнулся с проблемой, что обращаясь к действию на enter
if event.type == pygame.K_RETURN:
                lost.menter = True

Данное действие не передаётся никак, словно я не нажимаю никакую клавишу (на другие также назначал).
Я пробовал вынести выбор в отдельную функцию и вызывать её отдельно, пробовал прописывать значения внутри функции "update_menu", однако каждый раз сталкиваюсь с проблемой, что шрифт меняется символизируя, что ввод активен, но не могу активировать команду выбора какой либо строки.
import pygame.font, stats

class Game_over():
    """Экран поражения"""
    def __init__(self, screen):
        """запуск экрана"""
        self.screen = screen
        self.screen_rect = self.screen.get_rect()
        self.color = (255, 0, 0)
        self.font = pygame.font.SysFont(None, 150)
        self.font1 = pygame.font.SysFont(None, 100)
        self.mup = False
        self.mdown = False
        self.menter = False
        self.image_lost()
        self.menu()
        self.update_menu()
        self.show_lost(screen)


    def image_lost(self):
        """отображением экрана поражения"""
        self.lost_image = self.font.render("GAME OVER!", False, self.color)
        self.lost_rect = self.lost_image.get_rect()
        self.lost_rect.top = self.screen_rect.top + 35

    def show_lost(self, screen):
        """показ надписи"""
        self.screen.blit(self.lost_image, self.lost_rect)
        self.screen.blit(self.lost_image1, self.lost_rect1)
        self.screen.blit(self.lost_image2, self.lost_rect2)
        pygame.display.flip()

    def menu(self):
        """вывод меню игрока"""
        self.lost_image1 = self.font.render("CONTINUE", True, self.color)
        self.lost_image2 = self.font1.render("EXIT", True, self.color)
        self.lost_rect1 = self.lost_image1.get_rect()
        self.lost_rect1.center = self.screen_rect.center
        self.lost_rect2 = self.lost_image2.get_rect()
        self.lost_rect2.midbottom = self.screen_rect.midbottom
        self.menter = False

    def update_menu(self):
            """Обновление позиции меню"""
            if self.mup == True:
                self.lost_image1 = self.font.render("CONTINUE", True, self.color)
                self.lost_image2 = self.font1.render("EXIT", True, self.color)
                self.lost_rect1 = self.lost_image1.get_rect()
                self.lost_rect1.center = self.screen_rect.center
                self.lost_rect2 = self.lost_image2.get_rect()
                self.lost_rect2.midbottom = self.screen_rect.midbottom
            elif self.menter == True and self.font.render("CONTINUE", True, self.color):
                stats.guns_left = 2
            elif self.mdown == True:
                self.lost_image1 = self.font1.render("CONTINUE", True, self.color)
                self.lost_image2 = self.font.render("EXIT", True, self.color)
                self.lost_rect1 = self.lost_image1.get_rect()
                self.lost_rect1.center = self.screen_rect.center
                self.lost_rect2 = self.lost_image2.get_rect()
                self.lost_rect2.midbottom = self.screen_rect.midbottom
            elif self.menter == True and self.font.render("EXIT", True, self.color):
                pygame.quit()


Я пока только учусь, так что рад услышать советы, если Вам покажется, что какой-то способ можно было бы заменить на более эффективный и где-то была бы документация по этому способу:)
А то вдруг есть простая команда select, где прописываешь список пунктов.
  • Вопрос задан
  • 128 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@YariKartoshe4ka
if event.key == pygame.K_RETURN:
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ну гугл по "pygame menu" выводит на одноименный пакет pygame-menu. Посмотри примеры кода, если понравится - установи и пользуйся.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы