Python pygame游戏未在按键时启动
我正在制作一个游戏,在游戏结束时在屏幕上显示游戏,如果玩家按下任何键,游戏将重新开始 屏幕上会显示游戏,但问题是当我按任意键时,游戏没有开始。我怀疑gameOverScreen()函数没有返回while循环,我不明白为什么 此函数在游戏结束时调用,并持续运行,直到玩家按下任意键:Python pygame游戏未在按键时启动,python,loops,pygame,Python,Loops,Pygame,我正在制作一个游戏,在游戏结束时在屏幕上显示游戏,如果玩家按下任何键,游戏将重新开始 屏幕上会显示游戏,但问题是当我按任意键时,游戏没有开始。我怀疑gameOverScreen()函数没有返回while循环,我不明白为什么 此函数在游戏结束时调用,并持续运行,直到玩家按下任意键: def gameOverScreen(): textFont = pygame.font.Font('freesansbold.ttf',90) while True: overSurf
def gameOverScreen():
textFont = pygame.font.Font('freesansbold.ttf',90)
while True:
overSurf = textFont.render('GAME OVER',True,RED)
overRect = overSurf.get_rect()
overRect.center = (WINDOWWIDTH/2,WINDOWHEIGHT/2)
DISPLAYSURF.blit(overSurf,overRect)
drawPressKeyMessage()
checkForKeyPress()
if checkForKeyPress():
pygame.event.get() #clear event queue
return
pygame.display.update()
FPSCLOCK.tick(FPS)
检查按键的功能是:
def checkForKeyPress():
if len(pygame.event.get(QUIT)) > 0:
terminate()
keyUpEvents = pygame.event.get(KEYUP)
if len(keyUpEvents) == 0:
return None
else:
return keyUpEvents[0].key
调用所有函数的主要函数是:
def main():
global FPSCLOCK, DISPLAYSURF, BASICFONT
pygame.init()
FPSCLOCK = pygame.time.Clock()
DISPLAYSURF = pygame.display.set_mode((WINDOWWIDTH, WINDOWHEIGHT))
BASICFONT = pygame.font.Font('freesansbold.ttf', 18)
pygame.display.set_caption('Wormy')
showStartScreen()
while True:
runGame()
showGameOverScreen()
您的按键处理程序被调用两次
checkForKeyPress()
if checkForKeyPress():
第一次调用剥离了kedown事件的事件队列,因此第二次调用时没有按键,因此循环无法终止
有两种解决方案:
或者:删除第一个呼叫-删除以下行中的第一行:
checkForKeyPress() -- delete this line
if checkForKeyPress():
或:将结果存储在变量中,并在if语句中使用该变量:
keyPress = checkForKeyPress()
if keyPress:
...
什么调用了
gameOverScreen()
以及紧接着是什么代码?只要按下一个键,gameOverScreen
就应该完成了,你怎么知道之后代码不会执行?@mics选择gameOverScreen()函数一直运行直到返回被抵消。我现在得到了它,检查是否调用了两次keypress。您应该在第一次调用中将该值存储在变量中,然后在第二个实例中使用该变量。