我是初学者,我的代码有问题。在这里,您可以看到我的代码的简短摘录。这是我创建的一个简单的蛇游戏,但是我试图添加一个暂停。我知道了,但是当我开始暂停时,我无法关闭它。我的代码中可能存在一个基本错误,所以我无法前进。我希望你能帮助我。预先谢谢!
def checkquit(e):
running = True
pause = False
for ev in e:
if ev.type == pygame.QUIT:
exit(0)
running = True
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
quit(0)
running = True
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_p:
pause = True
while pause:
#running = False
pause = True
red = (255,0,0)
screen = pygame.display.set_mode((800,500))
screen.fill((0,0,0))
myfont=pygame.font.SysFont("monospace",50)
myfonttwo=pygame.font.SysFont("monospace",10)
text1=myfont.render("Pause!",100,red)
text2=myfont.render("Please restart the game",100,red)
screen.blit(text2,(10,200))
screen.blit(text1,(230,100))
pygame.display.update()
for ev in e:
if ev.type == pygame.QUIT:
pause = False
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pause = False
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_p:
pause = True
暂停屏幕在单独的应用程序循环中显示。您还必须在该循环中获取事件。注意,在您的代码中,e
的内容在“暂停”循环中永远不会更改:
def checkquit(e):
global running
running = True
pause = False
for ev in e:
if ev.type == pygame.QUIT:
exit(0)
running = True
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
quit(0)
running = True
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_p:
pause = True
while pause:
# [...]
# get the new events
e = pygame.event.get()
# handle the events in the loop
for ev in e:
if ev.type == pygame.QUIT:
pause = False
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_ESCAPE:
pause = False
if ev.type == pygame.KEYDOWN and ev.key == pygame.K_p:
pause = True
runnung
似乎是全局名称空间中的变量。您必须使用global
statement更改其状态。此外,在“暂停”循环中重新创建窗口表面是多余的。
global
我建议更改游戏过程。使用1个应用程序循环。例如:
screen = pygame.display.set_mode((800,500))