我想创建一个程序,其中一个Turtle对象始终位于所有其他Turtle对象之上。我不知道这是否可行,但任何帮助都会得到赞赏。
这是我的代码:
from turtle import *
while True:
tri = Turtle()
turtle = Turtle()
tri.pu()
tri.pencolor("white")
tri.color("black")
tri.shape("turtle")
tri.bk(400)
turtle = Turtle()
turtle.pu()
turtle.pencolor("white")
turtle.shape("square")
turtle.color("white")
turtle.pu()
turtle.speed(0)
tri.speed(0)
turtle.shapesize(100,100,00)
setheading(towards(turtle))
while tri.distance(turtle) > 10:
turtle.ondrag(turtle.goto)
tri.setheading(tri.towards(turtle))
tri.fd(5)
clearscreen()
答案 0 :(得分:1)
为什么不首先为“底部”乌龟做所有的绘图?然后为“顶级”乌龟绘图?这应该使顶级龟始终可见。
答案 1 :(得分:0)
我观察到的海龟分层规则:
多只海龟移动到同一位置:最后到达位于顶部。
多只乌龟都画了同样的东西:没有规则!
为了说明我的第二点,请考虑以下代码:
from turtle import Turtle, Screen
a = Turtle(shape="square")
a.color("red")
a.width(6)
b = Turtle(shape="circle")
b.color("green")
b.width(3)
b.goto(-300, 0)
b.dot()
a.goto(-300, 0)
a.dot()
a.goto(300, 0)
b.goto(300, 0)
screen = Screen()
screen.exitonclick()
运行它并观察结果。在我的系统上,最终的goto()
在红色的线条上画了一条绿色的长绿线,但是一旦完成绘图,绿线就会消失。注释掉对dot()
的两次调用并再次观察。现在绿线仍然在红线上。现在将呼叫从dot()
更改为stamp()
或circle(5)
。观察并制定自己的规则......
现在回到你的例子,这是非常有缺陷的(你实际操纵三只乌龟,而不是两只!)这是我的简化:
from turtle import Turtle, Screen
tri = Turtle(shape="turtle")
tri.color("black")
tri.pu()
turtle = Turtle(shape="square")
turtle.shapesize(4)
turtle.color("pink")
turtle.pu()
def drag_handler(x, y):
turtle.ondrag(None)
turtle.goto(x, y)
turtle.ondrag(drag_handler)
turtle.ondrag(drag_handler)
tri.bk(400)
while tri.distance(turtle) > 10:
tri.setheading(tri.towards(turtle))
tri.fd(5)
screen = Screen()
screen.mainloop()
您可以通过拖动粉红色方块来取笑tri
,直到tri
赶上它。最终,tri
只要在tri
捕获它时方块不移动就会落在上面。如果你将方格拖过tri
,那么它将暂时覆盖他,因为它是#34;最后到达"。