Итак, я создаю базовую игру PacMan в Pygame и пытаюсь понять, как создать несколько «интеллектуальных» движений призраков.Я не хочу, чтобы призраки были слишком умными, делающими игру слишком сложной, но я также не хочу, чтобы они просто двигались случайным образом, облегчая для игрока.
Вот первая частьмой призрачный класс, с методом движения.В настоящее время я возиться с частью, где игрок находится слева от призрака.Любые идеи о том, как я мог заставить призрака двигаться несколько разумно?Это сталкивается со стенами много
class Ghost(pygame.sprite.Sprite):
def __init__(self, game, x, y, color):
self.groups = game.all_sprites
pygame.sprite.Sprite.__init__(self, self.groups)
self.game = game
self.image = sprite_sheet('ghost_spritesheet.png').get_image(0, 0, 24, 24)
self.x = x * TILESIZE
self.y = y * TILESIZE
self.rect = self.image.get_rect()
self.vx, self.vy = 0, 0
self.spritesheet_index = 0
self.first_time = pygame.time.get_ticks()
self.short_delay = 40
self.long_delay = 1000
self.move_list = ['none']
self.direction = ''
self.color = color
self.list_of_directions = ['right', 'left', 'up', 'down']
self.direction_first_time = pygame.time.get_ticks()
def get_direction(self):
self.direction_second_time = pygame.time.get_ticks()
if self.game.player.rect.x < self.rect.x:
if self.direction_second_time - self.direction_first_time > self.long_delay: #simply creating a delay to make sure the ghost isn't constantly changing direction
self.move_list.append(random.choice(['left', 'up', 'down']))
self.direction_first_time = pygame.time.get_ticks()
if self.game.player.rect.x > self.rect.x:
self.move_list.append('right')
if self.game.player.rect.y < self.rect.y:
self.move_list.append('up')
if self.game.player.rect.y > self.rect.y:
self.move_list.append('down')
ЛЮБЫЕ идеи будут с благодарностью!Спасибо!