您如何使用Pygame和用户执行的事件创建多个屏幕?
例如,如果我有一个带有2个按钮的菜单屏幕(“开始”和“退出”),并且用户单击“开始”,则会在同一窗口中显示一个新屏幕,其中包含游戏中的下一个按钮。在该屏幕上,用户可以点击另一个按钮并转到另一个屏幕/返回菜单等
答案 0 :(得分:3)
为每个类创建类,其中每个类是pygame.Surface的子类,与显示的大小相同。然后你可以有三个变量TITLESCREEN,PLAYING,HIGHSCORES并在按键时更改它们。然后你就可以将正确的屏幕显示到显示屏上。
答案 1 :(得分:2)
与任何程序/语言相同,只需触发当前循环即可。 考虑这个例子:
FPS = 25
MainLoop = True
Loop1 = True # Start app in Loop1
Loop2 = False # Loop2 is idle
while MainLoop :
clock.tick(FPS)
pygame.event.pump()
keypress = pygame.key.get_pressed()
keypress_dn = tuple(x > y for x,y in zip(keypress, keypress_old))
keypress_old = keypress
if Loop1:
if keypress_dn [pygame.K_ESCAPE] :
Loop1 = False
MainLoop = False
if keypress_dn [pygame.K_2] : # goto Loop2
Loop1 = False
Loop2 = True
...
if Loop2:
if keypress_dn [pygame.K_ESCAPE] :
Loop2 = False
MainLoop = False
if keypress_dn [pygame.K_1] : # goto Loop1
Loop2 = False
Loop1 = True
...
pygame.display.flip( )
pygame.quit( )
因此,您可以在相应的循环中添加渲染并检查按键。在这里按“2”进入loop2并按“1”进入循环1.“Escape”将退出循环和主循环。
答案 2 :(得分:0)
为此,我做了一个字面主循环,该循环检查播放器想要进入的“屏幕”。就像他们按下退出按钮一样,它返回下一步。然后,主循环为新屏幕运行新脚本。