Python 2.7 Pygame-”游戏;错误:显示表面退出“;
我制作了一个菜单屏幕,点击一个按钮可以在同一个窗口中显示不同的屏幕Python 2.7 Pygame-”游戏;错误:显示表面退出“;,python-2.7,pygame,Python 2.7,Pygame,我制作了一个菜单屏幕,点击一个按钮可以在同一个窗口中显示不同的屏幕 def main(): import pygame, random, time pygame.init() size=[800, 600] screen=pygame.display.set_mode(size) pygame.display.set_caption("Game") done=False clock=pygame.time.Clock() whi
def main():
import pygame, random, time
pygame.init()
size=[800, 600]
screen=pygame.display.set_mode(size)
pygame.display.set_caption("Game")
done=False
clock=pygame.time.Clock()
while done==False:
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
done=True
break
if button_VIEW.collidepoint(pos):
if event.type == pygame.MOUSEBUTTONDOWN:
print("VIEW.")
view()
break
screen.fill(black)
...
def view():
done=False
clock=pygame.time.Clock()
while done==False:
for event in pygame.event.get():
pos = pygame.mouse.get_pos()
if event.type == pygame.QUIT:
done=True
break
...
如果可能,我想知道如何避免错误:
screen.fill(black)
error: display Surface quit
>>>
在看了这里的其他问题之后,我尝试将break
s添加到任何循环的出口,但仍然出现错误
我知道问题是程序试图在窗口关闭后执行screen.fill(black)
,但我对如何防止错误没有进一步的想法
谢谢你的帮助。如果看起来很简单,很抱歉。有几种可能性:
- 在
功能中结束该过程(例如使用视图
)。不理想sys.exit()
- 从
函数返回一个值,指示应用程序应该结束(例如视图
),并在返回完成
函数中检查该返回值(主
)。更好如果完成:返回
- 将
设为全局,并在done
函数中检查其值。我真的不喜欢这个解决方案main
- 我最喜欢的方法是:完全避免多个事件循环,这样问题就会自行解决(例如,您可以使用return退出
函数)main
if event.type==pygame.MOUSEBUTTONDOWN:
?@BaconStereo的缩进中执行def view()
中的过程吗?最后一点是最好的建议。我建议您使用iminurnamez。这允许您在不同的场景/状态之间切换,并且您只需要一个事件和游戏(场景管理器)类中的while循环,该类将事件传递到当前活动的场景。@BaconStereo您可以找到一个示例@sloth Thank-非常有用!