В настоящее время я пытаюсь вычислить расстояние между классами 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) распечатались бы, как и раньше, но я все еще не мог получить доступ / распечатать нужные переменные. Не уверен, что я делаю не так. Спасибо и выздоровления!