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



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

问题:游戏切换屏幕出现后,窗口变得没有响应,并显示"没有响应"当它变成"不回应"时,我尝试过这些事件和东西,但没有帮助。

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", True, "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", True, "dark red", "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。

相关内容

最新更新