如何使用Pygame和用户执行的事件创建多个屏幕?
例如,如果我有一个带有两个按钮("开始"one_answers"退出")的菜单屏幕,用户单击"开始",则新屏幕将与游戏中的下一个按钮显示在同一窗口中。在该屏幕上,用户可以点击另一个按钮,然后转到另一个屏幕/返回菜单等。
为每个类创建类,其中每个类都是pygame的一个子类。表面,与显示器大小相同。然后你可以有三个可变的TITLESCREEN,PLAING,HIGHSCORES,并在按键时更改它们。然后,您就可以快速地将正确的屏幕显示到显示器上。
与任何程序/语言一样,只需触发当前循环。考虑这个例子:
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"进入循环2,按"1"进入循环1。"Escape"将退出循环和主循环。
我为此所做的是有一个文本主循环,检查;屏幕";玩家想去。就像他们按下退出按钮一样,它会返回下一步要去的地方。然后主循环为新屏幕运行一个新脚本。