使用 Pygame 进行多种'game screens'



如何使用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"将退出循环和主循环。

我为此所做的是有一个文本主循环,检查;屏幕";玩家想去。就像他们按下退出按钮一样,它会返回下一步要去的地方。然后主循环为新屏幕运行一个新脚本。

最新更新