Я собираюсь создать игру, похожую на перекресток, с анимированным объектом PygAnimation (лягушка), и мне нужно найти положение объекта по осям x и y, чтобы проверить наличие столкновения с врагами (условие потери) и сокровища ( условие победы). Сама анимация работает:
if moveUp or moveDown or moveLeft or moveRight:
if direction == UP:
animObjs['back_walk'].blit(windowSurface, (x, y))
elif direction == DOWN:
animObjs['front_walk'].blit(windowSurface, (x, y))
elif direction == LEFT:
animObjs['left_walk'].blit(windowSurface, (x, y))
elif direction == RIGHT:
animObjs['right_walk'].blit(windowSurface, (x, y))
AnimOb js загружены в словарь, но я не могу получить доступ к значениям x и y каждого символа. Я чувствую, что есть простое решение, но я новичок в программировании и пока не нашел его. Враги являются частью класса NonPlayerCharacter (GameObject), а значения x и y доступны только с помощью image_path, self.x_pos и self.y_pos. Но с анимацией я, похоже, не могу получить к ней доступ таким же образом, потому что анимация, кажется, обрабатывается по-разному. загрузите гифки для условий стояния и движения:
front_standing = pygame.image.load('frog_front.gif')
back_standing = pygame.image.load('frog_back.gif')
left_standing = pygame.image.load('frog_left.gif')
right_standing = pygame.transform.flip(left_standing, True, False)
playerWidth, playerHeight = front_standing.get_size()
# creating the PygAnimation objects for walking in all directions
animTypes = 'back_walk front_walk left_walk'.split()
animObjs = {}
animObjs['back_walk'] = pyganim.PygAnimation('frog_back_walk.gif')
animObjs['front_walk'] = pyganim.PygAnimation('frog_front_walk.gif')
animObjs['left_walk'] = pyganim.PygAnimation('frog_left_walk.gif')
# create the right-facing sprites by copying and flipping the left-facing sprites
animObjs['right_walk'] = animObjs['left_walk'].getCopy()
animObjs['right_walk'].flip(True, False)
animObjs['right_walk'].makeTransformsPermanent()
moveConductor = pyganim.PygConductor(animObjs)
direction = DOWN # player starts with facing down (front)
Класс врага следующий:
class NonPlayerCharacter (GameObject): SPEED = 10
def __init__(self,image_path, x, y, width, height):
super().__init__(image_path, x, y, width, height)
def move(self, max_width):
# automating of movement
if self.x_pos <= 20:
self.SPEED = abs(self.SPEED)
elif self.x_pos >= max_width - 40:
self.SPEED = -abs(self.SPEED)
self.x_pos += self.SPEED
Враги просто перемещаются по экрану слева направо, и вот как осуществляется доступ к каждому врагу:
врага_0 = NonPlayerCharacter ("own.png", 20, 600, 50, 50)
Буду очень признателен за вашу помощь. Я думаю, это мелочь. : -)