Pygame类难度大

时间:2013-02-11 08:12:22

标签: python class 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()

它表示没有定义角度播放器。

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

谢谢

1 个答案:

答案 0 :(得分:1)

这意味着当前范围内没有函数angleplayer

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

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

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