在Python中,如何同时执行两个Turtle命令?

bqf10yzr  于 2023-02-02  发布在  Python
关注(0)|答案(3)|浏览(542)

就像让两只乌龟同时移动一样。例如,我导入两只乌龟,然后试着让它们一起向前移动。我该怎么做呢?

kknvjkwl

kknvjkwl1#

bob = turtle.Turtle()
john = turtle.Turtle()

def move_turtles(ammount):
    for i in range(ammount // 10):
        bob.forward(10)
        john.forward(10)

move_turtles(100)

没有办法同时移动它们,尽管你可以使用类似的方法。它将海龟每个移动10个点,所以它给人的印象是它们在一起移动,但实际上它们是以很小的数量分开移动的。它重复操作(ammount //10)次,每次迭代移动10,如果给予50,它将移动5乘以10个点,结果是50。然后你可以自定义这个函数,移动一点海龟,这样它们就不会重叠,等等。

gcxthw6b

gcxthw6b2#

您可以使用计时器事件同时独立地移动多个海龟--您甚至可以让它们在时间和空间上以不同的速率移动:

import turtle

turtle.setworldcoordinates(0, -100, 100, 100)

bob = turtle.Turtle(shape="turtle")
bob.penup()
bob.sety(20)

john = turtle.Turtle(shape="turtle")
john.penup()
john.sety(-20)

def move_bob():
    bob.forward(1)
    if bob.xcor() < 90:
        turtle.ontimer(move_bob, 75)

def move_john():
    john.forward(2)
    if john.xcor() < 90:
        turtle.ontimer(move_john, 100)

move_bob()
move_john()

turtle.exitonclick()

其他人也使用线程来实现这一点,但是turtle模块中内置了计时器事件。

mcvgt66p

mcvgt66p3#

有一种方法可以使用Turtle模块控制帧-您需要更改屏幕属性。

screen = turtle.Screen()
screen.tracer(0)

此方法使所有海龟的移动都不可见,直到您运行screen.update(),然后屏幕上的每个海龟将同时以可视方式更新。在您的情况下,您可以在两个海龟移动之后写入screen.update(),它们将显示为同时移动。

相关问题