Как уже указывал abccd, плохая идея помещать исходный код, который вы хотите выполнить, в строки. Ближайшее к вам решение — определение функций для left
, right
, up
, down
. Затем вы можете сохранить эти функции в направлениях и выполнить случайно выбранный:
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()
призрака.
person
BurningKarl
schedule
01.04.2017