【问题标题】:Is there any way to permanently display these settings after pressing the button?有什么方法可以在按下按钮后永久显示这些设置?
【发布时间】:2021-11-19 03:53:27
【问题描述】:

我尝试按下按钮后显示设置列表,问题是我在游戏循环中这样做并且知道文本会一遍又一遍地出现和消失,有什么明智的方法可以绕过它以某种方式? 提前致谢

def settings_show():
        draw_text('CONTROL:', font, WHITE, 115, 380),
        draw_text('JUMP', font, WHITE, 190, 410),
        screen.blit(Wkey, (140, 395)),
        draw_text('LEFT', font, WHITE, 55, 450),
        screen.blit(Dkey, (180, 435)),
        draw_text('RIGHT', font, WHITE, 230, 450),
        screen.blit(Akey, (100, 435)),
        draw_text('SHOOT', font, WHITE, 210, 490),
        screen.blit(SPkey, (125, 460)),
        draw_text('NADE', font, WHITE, 55, 546),
        screen.blit(Qkey, (5, 530)),
        draw_text('MUTE MUSIC', font, WHITE, 55, 586),
        screen.blit(Mkey, (5, 570)),
        draw_text('UNMUTE MUSIC', font, WHITE, 55, 626),
        screen.blit(Ukey, (5, 610)),
        draw_text('FULLSCREEN', font, WHITE, 55, 666),
        screen.blit(Fkey, (5, 650)),
        draw_text('TAKE SCREENSHOT', font, WHITE, 55, 706),
        screen.blit(F5key, (5, 690)),
        draw_text('EXIT', font, WHITE, 55, 746),
        screen.blit(ESCkey, (5, 730))
settings_button = button.Button(SCREEN_WIDTH // 1 - 1050, SCREEN_HEIGHT // 1 - 70, settings_img, 1)
        if start_button.draw(screen):
            start_game = True
            MENUSELECT.play()
            pygame.mixer.music.stop()
        if exit_button.draw(screen):
            MENUSELECT.play()
            run = False
            pygame.display.update()
        if settings_button.draw(screen):
            MENUSELECT.play()
            settings_show()

【问题讨论】:

  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: python python-3.x pygame game-development game-loop


【解决方案1】:

您必须在应用程序循环中调用settings_show()。不要在按下按钮时调用settings_show(),而是设置一个状态,指示必须显示设置:

game_state = "start_menu"

# application loop
while run:
    # [...]

    if game_state == "start_menu":
        if start_button.draw(screen):
            start_game = True
            MENUSELECT.play()
            pygame.mixer.music.stop()
        if exit_button.draw(screen):
            MENUSELECT.play()
            run = False
        if settings_button.draw(screen):
            MENUSELECT.play()
            game_state = "settings"


    elif game_state == "settings":
        settings_show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-30
    • 2013-08-11
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2013-08-13
    相关资源
    最近更新 更多