输入If语句后Pygame窗口没有响应

问题描述

变量定义: Ending_num :它决定程序是否应该让你留在游戏中(0 正在玩,1 没有玩,游戏结束屏幕) mov :它将添加到屏幕的文本移动到它们应该在的位置 home_num :告诉程序它应该在哪个屏幕上

问题:在游戏结束屏幕出现后,窗口变得无响应并显示无响应 When it becomes Not Responding 我已经尝试过这些事件和内容,但没有帮助。

if pygame.Rect.colliderect(ast1.objrect,jetrect) == True:
ending_num = 1
end_text = font1.render("Game Over : " + str(score),True,"red")
end_textrect = end_text.get_rect()
font2 = pygame.font.Font('freesansbold.ttf',50)
text2 = font2.render("Home","dark red","white")
mov[1] = 80
text2rect = text2.get_rect()
text2rect = text2rect.move(mov)
font3 = pygame.font.Font('freesansbold.ttf',50)
text3 = font3.render("Play","white")
mov[1] = 150
text3rect = text3.get_rect()
text3rect = text3rect.move(mov)
o_speed[1] = 0
screen.blit(background,backgroundrect)
screen.blit(end_text,end_textrect)
screen.blit(text2,text2rect)
screen.blit(text3,text3rect)
while True:
    if 10 < mouse[0] < 149 and 80 < mouse[1] < 130 and pygame.mouse.get_pressed()[0]:
        pygame.time.wait(70)
        home_num = 0
        ending_num = 0
        break
    if 10 < mouse[0] < 116 and 150 < mouse[1] < 200 and pygame.mouse.get_pressed()[0]:
        pygame.time.wait(70)
        home_num = 1
        ending_num = 0
        break
    pygame.display.flip()

解决方法

您必须处理应用程序循环中的事件。分别见pygame.event.get() pygame.event.pump()

对于游戏的每一帧,您都需要对事件队列进行某种调用。这可确保您的程序可以在内部与操作系统的其余部分进行交互。

此外,您必须使用 pygame.mouse.get_pos() 在每一帧中获取新的鼠标位置:

while True:
    pygame.event.pump()
    mouse = pygame.mouse.get_pos()

    # [...]

或者,您可以使用 MOUSEBUTTONDOWN 事件:

ending_num = 1
while ending_num != 0:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
            mouse = event.pos
            if 10 < mouse[0] < 149 and 80 < mouse[1] < 130:
                home_num = 0
                ending_num = 0
            if 10 < mouse[0] < 116 and 150 < mouse[1] < 200 
                home_num = 1
                ending_num = 0
    pygame.display.flip()
    pygame.time.wait(70)

MOUSEBUTTONDOWN 事件在您单击鼠标按钮时发生一次,而 MOUSEBUTTONUP 事件在鼠标按钮被释放时发生一次。 pygame.event.Event() 对象有两个提供鼠标事件信息的属性。 pos 是一个存储被点击位置的元组。 button 存储被点击的按钮。每个鼠标按钮都关联一个值。例如鼠标左键、鼠标中键、鼠标右键、鼠标滚轮向上和鼠标滚轮向下的属性值为1、2、3、4、5。