您必须调用pg.display.flip()
该Menu
函数。
我还对代码结构有一些建议。我将使用另一个函数或类(main
在这种情况下)来管理不同的场景。因此,我首先将当前场景函数分配给变量,然后在主while循环中调用它。场景完成后,我返回下一个场景并将其分配给scene
变量以交换场景。如果您直接从另一个场景中直接调用下一个函数,则可以避免潜在的递归错误(尽管在简单的游戏或应用中,您不可能超过1000的递归限制)。
import pygame as pg
pg.init()
screen = pg.display.set_mode((600, 400))
clock = pg.time.Clock()
BLUE = pg.Color('dodgerblue3')
ORANGE = pg.Color('sienna3')
def front_page():
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
return None
# Press a key to return the next scene.
elif event.type == pg.KEYDOWN:
return menu
screen.fill(BLUE)
pg.display.flip()
clock.tick(60)
def menu():
while True:
for event in pg.event.get():
if event.type == pg.QUIT:
return None
# Press a key to return the next scene.
elif event.type == pg.KEYDOWN:
return front_page
screen.fill(ORANGE)
pg.display.flip()
clock.tick(60)
def main():
scene = front_page # Set the current scene.
while scene is not None:
# Execute the current scene function. When it's done
# it returns either the next scene or None which we
# assign to the scene variable.
scene = scene()
main()
pg.quit()