切换到下一级在pygame中不起作用

2024-07-05 12:38:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我的pygame代码有一个很奇怪的问题,我无法破译。我上网查过了,但没有发现有用的东西。每次我试着玩我的游戏,从第二级切换到第三级都是行不通的。游戏崩溃了,给了我下一个错误:

 File "C:\Users\Moji podatki\Documents\Python programi\Podmornica\submarine.py", line 883, in naris
screen.blit(mine, (self.x1, self.y1))
pygame.error: display Surface quit

但是当我检查代码的这一部分时,我无法理解为什么会出现这个错误,因为我检查了,如果我写了这一部分,会切换,我做到了:

if self.life1 < 0 and self.life2 < 0:
    screen.blit(end, (312, 384))
    pygame.display.flip()
    pygame.time.wait(1000)
    level3()

然而,错误消息指向这一部分,我不知道为什么:

def draw(self):
        if not self.explosion1:
            self.frame1 = (self.x1, self.y1, 84, 196) 
            #pygame.draw.rect(screen, (255,125,125), self.frame, 2)
            screen.blit(mine, (self.x1, self.y1))
        else:
            pygame.draw.rect(screen, (0,0,0), self.expl_frame1, 2) 
            screen.blit(expl, (self.x1, self.y1))
            explosion.play()
        if not self.explosion2:
            self.frame = (self.x2, self.y2, 84, 196) 
            #pygame.draw.rect(screen, (255,125,125), self.frame, 2)
            screen.blit(mine, (self.x2, self.y2))
        else:
            #pygame.draw.rect(screen, (0,0,0), self.expl_frame2, 2) 
            screen.blit(expl, (self.x2, self.y2))
            explosion.play() 

有人能解释一下问题出在哪里吗


Tags: rectselfif错误screenframepygamex1
1条回答
网友
1楼 · 发布于 2024-07-05 12:38:28

如果它因没有响应而崩溃,可能是因为time.sleep(1000),如果我是你,我会在主游戏循环的末尾添加pygame.display.flip(),如果你希望结束屏幕停留在那里添加


frame = 0
# main loop here

# erase all here
# rendering stuff here (make sure they're all here so they get rendered at the back layer)

if dead '''idk, perhaps make a dead var''' and not frame > 100 '''increase the num for it to stay there for a longer period of time''' :
    screen.blit(end, (312, 384))
    frame += 1

display.flip()

我真的希望这有帮助

相关问题 更多 >