如何让两只或更多的海龟同时执行一项任务?

How can you make two or more turtles perform a task at the same time?

我对这个程序的目标是习惯 python 的内置 "turtle" 方法。我的目标是编写四只(忍者)乌龟同时在一个广场上行走的程序。虽然在我的程序中没有绝对错误,但我希望程序显示海龟同时行走(而不是 运行 相互碰撞)。起初,我试图在同一行中用逗号分隔四个变量——但这并没有改变任何东西。或者,我使用“+”来分隔每个变量——这是行不通的。然后我查看了如何同时移动两只乌龟。但是,由于这些程序大多涉及赛车,因此某些方法不起作用。

import turtle

leonardo = turtle.Turtle()
rafael = turtle.Turtle()
michelangelo = turtle.Turtle()
donatello = turtle.Turtle()

leonardo.shape("turtle")
rafael.shape("turtle")
michelangelo.shape("turtle")
donatello.shape("turtle")

michelangelo.left(90)
donatello.right(90)
leonardo.forward(250)
rafael.backward(250)
donatello.forward(250)
michelangelo.forward(250)

# Better if I could make all four turtles turn at the same time
michelangelo.left(45), leonardo.left(135), rafael.right(45), donatello.left(135)

turtle_speed = 1

angle = float(input("Which angle would you like the turtles to face? "))

for i in range(1):

    leonardo.speed(1)

    leonardo.pencolor("light green")

    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)
    leonardo.forward(353.5533905932738)
    leonardo.left(angle)

    rafael.pencolor("gold")

    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)
    rafael.forward(353.5533905932738)
    rafael.left(angle)

    michelangelo.pencolor("turquoise")

    michelangelo.left(90)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)
    michelangelo.forward(353.5533905932738)
    michelangelo.left(angle)

    donatello.pencolor("white")

    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)
    donatello.forward(353.5533905932738)
    donatello.left(angle)


turtle.done()

你只需要让每只乌龟一次移动一点点。我做了一些更改,展示了如何通过移动来完成:

import turtle

leonardo = turtle.Turtle()
rafael = turtle.Turtle()
michelangelo = turtle.Turtle()
donatello = turtle.Turtle()

ninjas = [ leonardo, rafael, michelangelo, donatello ]

angle = 0

for t in ninjas:
  t.shape("turtle") 
  t.right(angle)
  t.forward(250)
  angle += 90


turtle_speed = 1
leonardo.pencolor("light green")
rafael.pencolor("gold")
michelangelo.pencolor("turquoise")
donatello.pencolor("white")

angle = float(input("Which angle would you like the turtles to face? "))

turns = 4
while turns>0:
  turns -= 1  
  move = 350
  while move>0:
    for t in ninjas:
      t.forward(5)
    move -= 5

  for t in ninjas:
    t.left(angle)

turtle.done()