Как остановить случайный выбор() от выбора в цикле while?

#python #pygame

Вопрос:

Я создаю игру «Палач» с помощью Pygame, и у меня проблема. В моем коде у меня есть цикл «во время выполнения:», который обновляется при частоте кадров в секунду = 60. В этом цикле есть «случайный выбор(темы)», который выбирает случайную тему в Hangman, которая определит, какой набор слов будет использоваться. Моя проблема в том, что каждый раз, когда цикл сбрасывается, «случайный выбор(темы)» выбирает другую тему и на экране. Темы постоянно переключаются между доступными темами.

Мне было интересно, как заставить эту конкретную строку кода запускаться один раз, чтобы выбрать тему и не переключаться между несколькими?

Вот фрагмент цикла:

 while run:
    clock.tick(FPS)  # FPS = 60

    # draw title
    topics = ["PLACES", "SPORTS", "FOOD AND DRINK", "OPPOSITE WORDS"]
    text = TITLE_FONT.render(random.choice(topics), 1, BLACK)
    window.blit(text, (WIDTH/2 - text.get_width()/2, 20))

    draw() # not important here
 

Ответ №1:

Выберите его перед циклом while -:

 topics = ["PLACES", "SPORTS", "FOOD AND DRINK", "OPPOSITE WORDS"]
text = TITLE_FONT.render(random.choice(topics), 1, BLACK)

while run:
    clock.tick(FPS)  # FPS = 60

    # draw title    
    window.blit(text, (WIDTH/2 - text.get_width()/2, 20))
 

Если вам нужно выбрать его в зависимости от условия, укажите, чтобы выбрать новую тему с переменной. Сбросьте переменную, когда выбрана тема. Таким образом, вы всегда можете выбрать новую тему, установив choose_topic = True :

 choose_topic = True

while run:
    clock.tick(FPS)  # FPS = 60

    if choose_topic:
        choose_topic = False
        topics = ["PLACES", "SPORTS", "FOOD AND DRINK", "OPPOSITE WORDS"]
        text = TITLE_FONT.render(random.choice(topics), 1, BLACK)

    # draw title    
    window.blit(text, (WIDTH/2 - text.get_width()/2, 20))