0

我知道我之前发过帖子,但这次我希望能真正梳理出我的代码的所有基础知识,并希望能更好地理解类。知道我对课程非常缺乏经验,所以很多这些都是非常愚蠢的东西。这是我的代码

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。

我猜答案会相当简单,但很期待。

谢谢你

4

1 回答 1

1

这意味着angleplayer当前范围内没有任何功能。

由于该angleplayer函数是您的Player类的一部分,因此您必须通过该类的实例调用它。

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

(您没有显示完整的代码,我只是想player可以在这里访问。)

于 2013-02-11T08:54:06.827 回答