就像让两只乌龟同时移动一样。例如,我导入两只乌龟,然后试着让它们一起向前移动。我该怎么做呢?
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。然后你可以自定义这个函数,移动一点海龟,这样它们就不会重叠,等等。
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模块中内置了计时器事件。
mcvgt66p3#
有一种方法可以使用Turtle模块控制帧-您需要更改屏幕属性。
screen = turtle.Screen() screen.tracer(0)
此方法使所有海龟的移动都不可见,直到您运行screen.update(),然后屏幕上的每个海龟将同时以可视方式更新。在您的情况下,您可以在两个海龟移动之后写入screen.update(),它们将显示为同时移动。
screen.update()
3条答案
按热度按时间kknvjkwl1#
没有办法同时移动它们,尽管你可以使用类似的方法。它将海龟每个移动10个点,所以它给人的印象是它们在一起移动,但实际上它们是以很小的数量分开移动的。它重复操作(ammount //10)次,每次迭代移动10,如果给予50,它将移动5乘以10个点,结果是50。然后你可以自定义这个函数,移动一点海龟,这样它们就不会重叠,等等。
gcxthw6b2#
您可以使用计时器事件同时独立地移动多个海龟--您甚至可以让它们在时间和空间上以不同的速率移动:
其他人也使用线程来实现这一点,但是turtle模块中内置了计时器事件。
mcvgt66p3#
有一种方法可以使用Turtle模块控制帧-您需要更改屏幕属性。
此方法使所有海龟的移动都不可见,直到您运行
screen.update()
,然后屏幕上的每个海龟将同时以可视方式更新。在您的情况下,您可以在两个海龟移动之后写入screen.update()
,它们将显示为同时移动。