2017-02-28 37 views
0

因此,我正在製作一款遊戲來測試我的編程技巧,我試圖使用pygame,但是當我嘗試加載一個關卡貼圖時,它已經退出了表面。我不知道爲什麼。「pygame.error:display Surface」loading

這是負載的代碼:

def load(self): 
    print(os.listdir()) 
    file = input('>>> file name = ') 
    try: 
     self.Dir = os.getcwd() 
     path = os.path.join(self.Dir, "maps", file) 
     data = pickle.load(open(path, 'rb')) 
    except OSError as error: 
     print('Not file ', path) 
     print(error) 
    else: 
     self.grid = data[0] 
     self.blocks = data[1] 

預先感謝

編輯: 這是追溯

Traceback (most recent call last): 
    File "F:\PROGRAMS\snow\mapmaker_v2.py", line 169, in <module> 
    a.loop() 
    File "F:\PROGRAMS\snow\senpy.py", line 95, in loop 
    self.blocks.draw(self.screen) 
    File "F:\BMDSIT\Portable Python 3.2.5.1\App\lib\site-packages\pygame\sprite.py", line 475, in draw 
    self.spritedict[spr] = surface_blit(spr.image, spr.rect) 
pygame.error: display Surface quit 

編輯2: 這是循環碼,其中它發生:

(加載命令是在self.keyboard()函數。)

def loop(self): 
    print('looping') 
    for event in pygame.event.get():    
     if event.type == pygame.QUIT: 
      print('quiting :(') 
      pygame.display.quit() 
      quit('User quit') 

    self.screen.fill((237, 237, 237)) 

    self.keys = pygame.key.get_pressed() 
    self.mos = pygame.mouse.get_pressed() 

    self.mouse() 
    self.keyboard() 

    #screen.blit(player,player.pos) 
    self.blocks.draw(self.screen) 

    self.extraLoop() 

    pygame.display.flip() 
    print('done looping') 
+2

你能否在你的問題中包含完整的回溯作爲編輯? – roganjosh

+2

我懷疑你的錯誤發生在你的代碼中的其他地方。當您嘗試在關閉顯示器後繪製到屏幕上時,通常會使用pygame.quit()發生此錯誤消息。請發佈你的其他代碼。 – Chris

+0

沒有看到更多的代碼,這將是很難弄清楚。根據這篇文章http://stackoverflow.com/questions/1997710/pygame-error-display-surface-quit-爲什麼這可能發生多種原因 – The4thIceman

回答

1

不能鹹菜一個Surface對象。

如果您想醃製一個包含Surface的對象,請在將其保存到磁盤之前將其刪除;並將圖像文件的名稱或Surface的字符串表示代替存儲在對象中。