目前我正在尝试计算 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) 会像以前一样打印,但我仍然无法访问/打印所需的各个变量。不知道我做错了什么。谢谢你,祝你好运!
变量Px
和Py
仅在update()
函数范围内。它们被称为“局部变量”。另一方面,您有一个名称为p
代表整个玩家的变量。它有一个字段p.rect
是它的边界矩形。从那里你可以访问p.rect.x
和p.rect.y
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句