Pygame和Livewires按钮按下不起作用?

时间:2013-11-13 19:13:10

标签: python pygame livewires

所以在我的游戏菜单中,我正在创建一张图片,显示如何玩游戏,我有一些代码,这样当玩家按下b按钮时它会返回主菜单,但这不是工作,有人可以帮我吗?

def manual():

    image = games.load_image("options.jpg")
    games.screen.background = image
    if games.keyboard.is_pressed(games.K_b):
        menu()
    games.screen.mainloop()

'menu()'是另一个包含所有主菜单代码的函数

这是菜单功能

def menu():
    pygame.init()
    menubg = games.load_image("menubg.jpg", transparent = False)
    games.screen.background = menubg

    # Just a few static variables
    red   = 255,  0,  0
    green =   0,255,  0
    blue  =   0,  0,255

    size = width, height = 640,480
    screen = pygame.display.set_mode(size)
    games.screen.background = menubg
    pygame.display.update()
    pygame.key.set_repeat(500,30)

    choose = dm.dumbmenu(screen, [
                            'Start Game',
                            'Manual',
                            'Show Highscore',
                            'Quit Game'], 220,150,None,32,1.4,green,red)
    if choose == 0:
        main()
    elif choose == 1:
        manual()
    elif choose == 2:
        print("yay")
    elif choose == 3:
        print ("You choose Quit Game.")

1 个答案:

答案 0 :(得分:0)

我认为is_pressed()中的manual()不等你的新闻,所以你打电话给mainloop()所以我认为你永远不会离开那个循环。

我在你的代码中看到了其他不好的想法:

  • menu()致电manual(),致电menu()致电manual()等。 - 使用return并在menu()中使用循环
  • 每当您拨打menu()致电pygame.init()pygame.display.set_mode()时,您都应该只使用一次。

修改

我不知道games.keyboard.is_pressed()是如何工作的(因为PyGame中没有该函数)但我认为manual()可能是:

def manual():

    image = games.load_image("options.jpg")
    games.screen.background = image

    while not games.keyboard.is_pressed(games.K_b):
        pass # do nothing

    # if `B` was pressed so now function will return to menu()

你必须在菜单中创建循环:

running = True

while running:
    choose = dm.dumbmenu(screen, [
                        'Start Game',
                        'Manual',
                        'Show Highscore',
                        'Quit Game'], 220,150,None,32,1.4,green,red)
    if choose == 0:
        main()
    elif choose == 1:
        manual()
        # if 'B' was press manual() will return to this place
    elif choose == 2:
        print("yay")
    elif choose == 3:
        running = False
        print ("You choose Quit Game.")