2013-05-21 2 views
0

Итак, в приведенном ниже коде я пытаюсь дать меню инструкций. У меня возникают проблемы с командой команды «N», которая вызывает функцию MakeTurtle(). Я пытаюсь добавить всех черепах в список (дети []), поэтому, когда я перебираю список, он заставляет всех черепах двигаться одновременно. Проблема в том, что я могу заставить одну черепаху двигаться (первая, которую я создаю). Раньше я был в состоянии заставить их всех двигаться, но он перестанет работать, если я сделаю новый. Может ли кто-нибудь помочь?Перемещение объектов в виде списка

home = makeWorld() 
children = [] 


def MakeTurtle(): 
    newborn = makeTurtle(home) 
    children.append(newborn) 
    return newborn 


def RoamingTurtles(): 
    command = raw_input("---> ") 
    if command == 'N': 
    MakeTurtle() 
    RoamingTurtles() 
    if command == 'R': 
    for i in children: 
     i.turn(90) 
     RoamingTurtles() 
    if command == 'L': 
    for i in children: 
     i.turn(-90) 
     RoamingTurtles() 
    if command == 'M': 
    for i in children: 
     i.forward() 
     RoamingTurtles() 
    if command == 'Q': 
    print 'End' 

ответ

0

Ваш вопрос, кажется, что вы не ждать, пока петля над всеми детьми не завершается до вызова функции RoamingTurtle. Вот почему обновляется только один из ваших черепах. Например, у вас есть:

for i in children: 
    i.forward() 
    RoamingTurtles() 

, но вместо этого, вы хотите:

for i in children: 
    i.forward() 
RoamingTurtles() 
+0

Я думаю, что это правильный диагноз проблемы, но я хотел бы предложить 'время цикла true' в качестве альтернативы рекурсия. – Blckknght

+0

Определенно, я согласен с @Blckknght, цикл «while» - это гораздо лучший вариант в этой ситуации. –

+0

Если бы я мог поцеловать тебя, я бы это сделал. И я волосатый, так что это было бы неплохо! Но спасибо. – Danrex

Смежные вопросы