Pygame开发Hangman游戏时如何让while循环内random.choice仅执行一次?
问题原因
随机选择主题的逻辑写在了每帧都会执行的游戏主循环内,在FPS=60的设置下每秒会重新抽取60次主题,自然会出现持续切换的问题。
解决方法
把主题选择逻辑移到主循环外,仅初始化一次即可,修改后的代码如下:
# 主循环外提前定义主题列表,选定唯一主题,仅执行一次 topics = ["PLACES", "SPORTS", "FOOD AND DRINK", "OPPOSITE WORDS"] selected_topic = random.choice(topics) while run: clock.tick(FPS) # FPS = 60 # draw title # 直接使用提前选定的主题渲染,不会再切换 text = TITLE_FONT.render(selected_topic, 1, BLACK) window.blit(text, (WIDTH/2 - text.get_width()/2, 20)) draw() # not important here
扩展说明
如果后续需要实现「新开局重新随机主题」的功能,只需要在新局触发的逻辑位置(比如玩家猜完单词点击重开按钮时)重新执行一次selected_topic = random.choice(topics)即可,不需要改动主循环内的渲染逻辑。
内容的提问来源于stack exchange,提问作者Quixo
相关产品推荐
相关产品推荐

