【问题标题】:How can you make two or more turtles perform a task at the same time?如何让两只或多只海龟同时执行一项任务?
【发布时间】:2020-09-15 02:00:59
【问题描述】:

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

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

【问题讨论】:

    标签: turtle-graphics python-turtle


    【解决方案1】:

    您只需要让每只海龟一次移动一点。我做了一些改变来展示如何通过运动来做到这一点:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      相关资源
      最近更新 更多