2013-02-11 98 views
0

我知道我之前發佈過,但這次我希望真正篩選出我的代碼的所有基本知識,並希望更好地理解類。知道我對課程非常缺乏經驗,所以很多這將是非常愚蠢的東西。這裏是我的代碼Pygame類困難

class Player(pygame.sprite.Sprite): 
    def __init__(self): 
     global player 
     pygame.sprite.Sprite.__init__(self) 
     self.pos=(350,200) 
     self.image=pygame.image.load("arrowtest.png").convert() 
     self.rect=self.image.get_rect() 
     screen=pygame.display.get_surface() 
     self.area=screen.get_rect() 
     self.speed=10 
     self.state="still" 
     self.reinit() 

我在我的主循環

開始得到了

player = Player() 

和我的blit是

screen.blit(player.image, player.pos) 

我固定的問題,但現在我的問題是,當涉及到我使用函數角度精靈的部分。在我的播放器類是這個

def angleplayer(self): 
    mouse_pos=pygame.mouse.get_pos() 
    dx=mouse_pos[0]-player_x 
    dy=mouse_pos[1]-player_y 
    rads=math.atan2(-dy, dx) 
    rads %= 2*pi 
    angle = math.degrees(rads) 
    print angle 
    rot_player.image=pygame.transform.rotate(player.image, angle-90) 

但是,當我嘗試使用此,例如

if event.type == pygame.KEYDOWN: 
     angleplayer() 

它說沒有定義angleplayer。

我猜測答案相當簡單,但期待它。

謝謝

+0

angleplayer(** **自我)的問題。 – 2013-02-11 08:38:48

回答

1

這意味着,在當前範圍內無功能angleplayer

由於angleplayer功能是您的Player類的一部分,您必須通過該類的實例調用它。

if event.type == pygame.KEYDOWN: 
    player.angleplayer() 

(你沒有顯示你的完整代碼,我只是猜測player這裏訪問。)

+1

謝謝,這確實奏效了,代碼運行了,但是現在我面臨着一個邏輯錯誤,即精靈根本無法移動而不管輸入。我只是將我的源代碼放入原始文章中,因此沒有任何語境被遺漏。有沒有更好的方法將精靈從blit移開?我曾經在某處看到過有關更新精靈或其他一些東西的地方,完全不同於簡單地將它打開。 謝謝 – Alex 2013-02-11 09:19:15