pygame 程序启动时开始菜单不呈现
pygame start menu not rendering when the program starts
我目前正在学习 pygame 并编写一个简单的 2d 游戏。我已经到了需要引入开始菜单的地步了。问题是虽然 startSCreen 函数在程序启动时不呈现 "press space to start" 标签,但它在角色第一次死亡后呈现(如下所示,该函数在无限循环中运行, startScreen玩家失败后再次召回)。游戏运行方式如下所示:
pygame.init()
win = pygame.display.set_mode((600, 900))
pygame.display.set_caption('The Game')
start_font = pygame.font.SysFont('Arial', 25, bold = True)
def startScreen():
start = True
while start:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
mainGame()
start = False
win.fill((0,0,0))
start_text = start_font.render('PRESS SPACE TO START', 1, (255, 255, 255))
win.blit(start_text, (50, 300))
pygame.display.update()
def mainGame():
main game code
while True:
startScreen()
我没有粘贴 mainGame 功能代码,因为我怀疑它会影响问题。希望有人能指出错误:)。
您的代码的问题是,在您 运行 mainGame()
、start=True
并且只有当您 运行 时,游戏才会 start
成为错误的。但是,"press space to start text" 位于循环之后,因此它只会在循环退出后 运行(这意味着您至少玩过一次游戏。
要解决这个问题,只需将显示代码放在循环之前,如下所示:
def startScreen():
# Display Start Text
win.fill((0,0,0))
start_text = start_font.render('PRESS SPACE TO START', 1, (255, 255, 255))
win.blit(start_text, (50, 300))
pygame.display.update()
# Loop until exited or game is played
start = True
while start:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
mainGame()
start = False
我目前正在学习 pygame 并编写一个简单的 2d 游戏。我已经到了需要引入开始菜单的地步了。问题是虽然 startSCreen 函数在程序启动时不呈现 "press space to start" 标签,但它在角色第一次死亡后呈现(如下所示,该函数在无限循环中运行, startScreen玩家失败后再次召回)。游戏运行方式如下所示:
pygame.init()
win = pygame.display.set_mode((600, 900))
pygame.display.set_caption('The Game')
start_font = pygame.font.SysFont('Arial', 25, bold = True)
def startScreen():
start = True
while start:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
mainGame()
start = False
win.fill((0,0,0))
start_text = start_font.render('PRESS SPACE TO START', 1, (255, 255, 255))
win.blit(start_text, (50, 300))
pygame.display.update()
def mainGame():
main game code
while True:
startScreen()
我没有粘贴 mainGame 功能代码,因为我怀疑它会影响问题。希望有人能指出错误:)。
您的代码的问题是,在您 运行 mainGame()
、start=True
并且只有当您 运行 时,游戏才会 start
成为错误的。但是,"press space to start text" 位于循环之后,因此它只会在循环退出后 运行(这意味着您至少玩过一次游戏。
要解决这个问题,只需将显示代码放在循环之前,如下所示:
def startScreen():
# Display Start Text
win.fill((0,0,0))
start_text = start_font.render('PRESS SPACE TO START', 1, (255, 255, 255))
win.blit(start_text, (50, 300))
pygame.display.update()
# Loop until exited or game is played
start = True
while start:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
mainGame()
start = False