2011-09-05 64 views
0

我在玩Pygame(自己從安迪哈里斯2007年的書「Game Programming」中學到了自己。)爲什麼我不能讓我的Pygame Sprite在OSX上移動?

他給出了幾個移動精靈的例子。我沒有看到他的例子和我的代碼之間的區別,但我的精靈(我製作的魚jpeg)不移動。這個「島」也是我製作的jpeg。基本上,魚應該每幀水平移動5個像素。但是,它只是坐在那裏。也許我只是忽視了一些顯而易見的東西,或者說我的系統出了問題(我安裝了幾個版本的Python,看起來運行遊戲的版本是import error, no module named scrap)。

[編輯:我刪除了所有我的瘋狂OSX的東西B/C它是相當分散注意力,這是沒有問題的。

import pygame 
pygame.init() 

screen = pygame.display.set_mode((800, 600)) 
background = pygame.image.load('island_background.jpg') 
background = background.convert() 

class Fish(pygame.sprite.Sprite): 
    def __init__(self): 
     pygame.sprite.Sprite.__init__(self) 
     self.image = pygame.image.load('fish.jpg') 
     self.image = self.image.convert() 
     self.rect = self.image.get_rect() 
     self.rect.centerx = (600) 
     self.rect.centery = (500) 
     self.dx = 5 

    def update(self): 
     self.rect.centerx += self.dx 


def main(): 
    keepgoing = True 
    clock = pygame.time.Clock() 
    fish = Fish() 
    allsprites = pygame.sprite.Group(fish) 

    while keepgoing: 
     clock.tick(30) 
     for event in pygame.event.get(): 
      if event.type == pygame.QUIT: 
       keepgoing = False 

     screen.blit(background, (0, 0)) 

     allsprites.clear(screen, background) 
     #I thought the line above might be a problem, 
     #but commented it out and nothing changed (well, maybe I got a 
     #black background, but I don't recall. The fish just sat there in 
     #the same spot still 

     allsprites.update 
     allsprites.draw(screen) 

     pygame.display.flip() 

if __name__ == '__main__': 
    main()  

回答

3

我是安迪我直接回答你的電子郵件 (你使用一書的作者),但如果其他人在讀,我會張貼在這裏的SO社會的福祉。

這不是與OSX在所有問題。
所有MAC的東西是一個紅色的鯡魚(抱歉,這是一個魚節目......我無法抗拒。)

的問題是第42行: allsprites.update

它應該閱讀 allsprites.update()

下面是一個微妙但很重要的區別: 在Python中,一個方法或函數也可以作爲變量讀取。這是一個非常強大的功能,但還沒有你正在使用的功能。如果括號被忽略,它將被作爲變量讀取(並且它什麼也不做)。如果包含括號,則執行該函數。

你忘了括號(事實上,一些編輯似乎有時刪除)等的Python愉快地接受你的代碼的法律指導。但是,它只是承認實際上有一種稱爲allsprites.update的方法。更新方法從來沒有被調用,所以精靈永遠不會更新,因此它的位置從未改變。

我的版本實際上是調用的精靈羣體,這反過來又要求所有會員的精靈的更新方法的更新方法和程序工作得很好。可以肯定的是,我已經在三大操作系統(Ubuntu,Mac和Win 7)上測試過它,並且它工作正常。

如果你有關於代碼是否正在您的操作系統的疑惑,請從我的網站下載我原來的測試代碼(http://www.aharrisbooks.net),看看是否能的工作。

讓我知道你是否被別人卡住了。

順便說一句,我目前工作的一個遊戲編程書HTML5。站在我的網站了解更多信息....

相關問題