2013-12-23 36 views
0

我目前在pygame中做了乒乓球。我通過從我已經制作的圖像創建精靈來做到這一點。我曾遇到過一個問題,因爲我的精靈不會出現在我的屏幕上。我把腳本發給了一位朋友,他在自己的機器上運行它,並用他自己的圖像代替,並且運行良好。有沒有人有一個想法是什麼可能導致精靈現在顯示在我的機器上?Pygame Sprites不會顯示

創建類:

class Paddle(pygame.sprite.Sprite): 
img = "paddle.jpg" 

def __init__(self): 
    pygame.sprite.Sprite.__init__(self) 
    self.image = pygame.image.load(self.img).convert() 
    self.rect = self.image.get_rect() 

它在屏幕上繪圖(如被添加到所謂的列表):

player1.place(10,10) 
player2.place(50,50) 
paddleList.draw(screen) 

這些畫主循環之外。我明白,這些不會更新或任何遊戲運行,但他們仍應靜態放置在屏幕上。正如之前他們在我的朋友機上展示的那樣。他使用了不同的圖像,因爲我沒有給他發送用於創建精靈的圖像,但他們不會顯示在我的屏幕上。我甚至改變了圖像,沒有任何東西顯示。

編輯:主循環。它所做的只是繼續畫出精靈。並且現在有一個退出事件。

while True: 
paddleList.draw(screen) 
ballList.draw(screen) 
for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
     pygame.quit() 
     sys.exit() #ensures will quit on all systems. 
+1

您是否已驗證這是顯示問題還是加載問題(IE;您在init函數中分配self.image的位置,是否實際上會加載圖像數據? ) – isick

+0

運行時是否會獲得任何堆棧跟蹤? –

+0

我沒有想到這一點,我不知道如何去做。 @isick –

回答

0

您需要在主循環中調用pygame.display.flip(),否則它將不會刷新屏幕。用這個替換主循環:

while True: 
    paddleList.draw(screen) 
    ballList.draw(screen) 
    for event in pygame.event.get(): 
     if event.type == pygame.QUIT: 
      pygame.quit() 
      sys.exit() #ensures will quit on all systems.