尝试使用pygame在pacman游戏中制作基本的敌人运动

时间:2018-05-29 14:18:04

标签: python-3.x pygame pacman

所以我在Pygame中创建了一个基本的PacMan游戏,并试图弄清楚如何创建一些“智能”游戏。幽灵运动。我不希望鬼魂过于聪明,让游戏变得太难,但我也不希望他们随意移动,让玩家更轻松。

这是我的鬼类的第一部分,运动方法。我目前正在搞乱玩家在幽灵左边的部分。关于我如何让幽灵移动的任何想法有点聪明?它经常碰到墙壁

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')

任何想法都将不胜感激!! 谢谢!

1 个答案:

答案 0 :(得分:1)

看起来你正试图在特定的时间后改变鬼魂方向。 这可能会有效,但大多数情况下幽灵都无法改变方向,因为当时有一堵墙挡住它进入新的方向。

另一种方法是计算它移动了多少个图块,然后在下一个交叉点随机选择一个可能的方向。

这意味着你需要一种方法来了解你有哪些可能的方向,或者从四种可能的方向中选择一种方法,如果它被阻止你将其从当前可能的选择中删除并选择另一种方法。

从那里开始,你将能够构建你需要的AI。

例如,如果幽灵“看到”玩家,它可能会开始追逐它。为了让幽灵看到玩家,他们必须在同一行或列上,幽灵在玩家所在的方向移动,并且两者之间没有墙。一段时间后(这意味着移动了一定数量的瓷砖后),它将恢复为随机移动。