2013-02-11 99 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