Pygame Pacman鬼,随机改变方向

时间:2017-04-01 15:07:44

标签: python pygame pacman

我正在创造一个pacman游戏,到目前为止,除了幽灵之外,一切都是有效的,当一个幽灵碰撞墙壁时,这个类别被称为。但是你可以看到self.a返回一个str,但是我需要将它应用于我的幽灵精灵,Ghost1,Ghost2等等。所以它调用,Ghost1.a和ghost相应地移动。

任何帮助将不胜感激,谢谢。

class Ghost_move(object):
    def __init__(self,g_speed):
        super(Ghost_move, self).__init__()
        self.left=".rect.x-=g_speed"
        self.right=".rect.x+=g_speed"
        self.up=".rect.y-=g_speed"
        self.down=".rect.y+=g_speed"
        self.direction=self.left,self.right,self.up,self.down
        self.a=random.choice(self.direction)

1 个答案:

答案 0 :(得分:1)

正如abccd已经指出的那样,把你想要执行的源代码放到字符串中是一个坏主意。离您最近的解决方案是定义leftrightupdown的函数。然后,您可以将这些功能存储在方向上并执行随机选择的功能:

class Ghost_move(object):
    def __init__(self,g_speed):
        super(Ghost_move, self).__init__()
        self.g_speed = g_speed
        self.directions = self.left, self.right, self.up, self.down
        self.a = random.choice(self.directions)
    def left(self):
        self.rect.x -= self.g_speed
    def right(self):
        self.rect.x += self.g_speed
    def up(self):
        self.rect.y -= self.g_speed
    def down(self):
        self.rect.y += self.g_speed

现在self.a是一个可以调用的函数。例如,ghost1.a()会在四个方向之一中随机移动ghost1。但要小心,因为a只是设置一次,因此ghost1.a()总是将这个鬼移动到同一个方向,并且每次调用时都不会选择随机方向。

另一种方法是使用向量:

class Ghost_move(object):
    def __init__(self,g_speed):
        super(Ghost_move, self).__init__()
        self.left = (-g_speed, 0)
        self.right = (g_speed, 0)
        self.up = (0, -g_speed)
        self.down = (0, g_speed)
        self.directions = self.left, self.right, self.up, self.down
        self.random_dir = random.choice(self.directions)
    def a():
        self.rect.x += self.random_dir[0]
        self.rect.y += self.random_dir[1]

使用情况与以前相同,您只需在幽灵上调用a()即可。