Python - 一次移动两个乌龟对象

时间:2014-03-02 22:46:31

标签: python turtle-graphics

我想创建一个程序,其中一个乌龟对象移动到用户单击鼠标的位置,同时移动另一个乌龟对象。我有第一部分,但我似乎无法让其余的工作。

任何帮助都将不胜感激。

这是我的代码。 (第一部分归功于@Cygwinnian)

from turtle import *
turtle = Turtle()
screen = Screen()
screen.onscreenclick(turtle.goto)
turtle.getscreen()._root.mainloop()

turtle2 = Turtle()
while True:
    turtle2.back(100)
    turtle2.forward(200)
    turtle2.back(100)

1 个答案:

答案 0 :(得分:2)

我绝不是Python turtle模块的专家,但是我认为这些代码可以满足您的需求。第一只乌龟不会在第一只海龟来回移动时来回移动:

from turtle import *

screen = Screen() # create the screen

turtle = Turtle() # create the first turtle
screen.onscreenclick(turtle.goto) # set up the callback for moving the first turtle

turtle2 = Turtle() # create the second turtle

def move_second(): # the function to move the second turtle
    turtle2.back(100)
    turtle2.forward(200)
    turtle2.back(100)
    screen.ontimer(move_second) # which sets itself up to be called again

screen.ontimer(move_second) # set up the initial call to the callback

screen.mainloop() # start everything running

此代码创建一个函数,可以从起始位置反复来回移动第二只乌龟。它使用ontimer的{​​{1}}方法来反复安排自己。一个稍微聪明的版本可能会检查变量是否应该退出,但我没有打扰。

这确实让两只海龟都移动了,但它们实际上并没有同时移动。在任何特定时刻,只有一个人可以移动。我不确定是否有任何方法可以解决这个问题,除了将动作分成更小的部分(例如让海龟交替移动一个像素)。如果你想要更漂亮的图形,你可能需要从screen模块继续前进!