如何阻止 random.choice() 在 while 循环中进行选择?

How to stop a random.choice() from choosing in a while loop?

我正在使用 Pygame 制作 Hangman 游戏,但遇到了问题。在我的代码中,我有一个“while 运行:”循环,它在 FPS = 60 时刷新。在那个循环中,有一个“random.choice(topics)”,它在 Hangman 中挑选一个随机主题,它将确定将使用哪一组词。我的问题是每次循环重置时,“random.choice(topics)”都会在屏幕上选择另一个主题。主题在可用主题之间不断切换。

我想知道如何让特定的代码行 运行 只选择一个主题而不是在多个主题之间切换?

这是循环的片段:

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

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))