所以在我的游戏菜单中,我正在创建一张图片,显示如何玩游戏,我有一些代码,这样当玩家按下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.")
答案 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.")