微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决输入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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。