实例变量和继承

骑士猫头鹰

目前我正在尝试计算 Image1 和 Player 类之间的距离,在我的main(). 我感兴趣的变量是 Bx、By、Px 和 Py,如下所示。目前我可以在 Pygame 窗口中获取图像以实时更新和打印它们各自的坐标。但是,我想访问各个变量,以便我可以实现距离变量。


class Image1(pygame.sprite.Sprite):
    def __init__(self, img, all_active_sprites):
        super().__init__()

        #scale player image
        self.image = pygame.transform.scale(ImageOne, (100, 100))
        self.image.set_colorkey(BLACK)
        self.rect = self.image.get_rect()

        #set spawn location for image
        self.rect.x = random.randrange(25, WINDOWWIDTH - 25)
        self.rect.y = random.randrange(25, WINDOWHEIGHT - 25)

        #set speed/direction
        self.speed_x = random.choice([-1,1])
        self.speed_y = random.choice([-1,1])

    def update(self):
        ''' update Image1 class '''
        self.rect.y += self.speed_y
        self.rect.x += self.speed_x

        #simulate zigzag movement

        "Omitted for Space - Movement Rules"

        #calculate coordinates
        Bx = self.rect.x
        By = self.rect.y
        coordinates_Image1 = (Bx,By)
        print("Image1 Position:",coordinates_Image1)

class Player(pygame.sprite.Sprite):
    def __init__(self, player_img,all_active_sprites):
        super().__init__()
        #scale player image
        self.image = pygame.transform.scale(player_img, (25, 25))
        self.image.set_colorkey(BLACK)
        self.rect = self.image.get_rect()

        #player starting location
        self.rect.x = WINDOWWIDTH / 2
        self.rect.y = WINDOWHEIGHT/ 2

        #player speed
        self.speed_x = 0
        self.speed_y = 0

    def update(self):
        '''update the Player class'''
        #arrow controls
        "Omitted for Space - Key Commands"

        #update movement, stop at boundaries
        self.rect.x += self.speed_x
        self.rect.y += self.speed_y

        "Omitted for Space - Movement Rules"

        #calculate coordinates
        Px = self.rect.x
        Py = self.rect.y
        coordinates_player = Px,Py
        print("Player Position:",coordinates_player)

我的想法是我需要找到一种方法来访问语言环境之外的这些实例变量,因此我尝试的解决方案如下。我在每个类中将坐标分离到它们自己的函数中,远离运动计算。然后在我的main()我为每个类创建了一个实例,p = Player(args)例如。然后我从我的 中调用坐标函数main(),配对坐标 (x,y) 会像以前一样打印,但我仍然无法访问/打印所需的各个变量。不知道我做错了什么。谢谢你,祝你好运!

代码学徒

变量PxPy仅在update()函数范围内它们被称为“局部变量”。另一方面,您有一个名称为p代表整个玩家的变量它有一个字段p.rect是它的边界矩形。从那里你可以访问p.rect.xp.rect.y

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章