2014-03-04 39 views
0

我想創建一個程序,其中一個龜對象始終保持在其他所有龜對象之上。我不知道這是否可行,但任何幫助都會被讚賞。Python - 使一個龜對象始終高於另一個

這是我的代碼:

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

附註:我能想到的唯一目的就是回憶標誌時代。 :D不是這是一個問題 – Guy

回答

1

爲什麼不只是做所有的繪圖,爲「底部」龜首?然後做「頂」龜的圖紙?這應該使頂級烏龜始終可見。

+0

這就是我正在做的。不過謝謝。問題在於,無論何時我將「底部」海龜拖到某個地方,它都會到達頂部,並覆蓋「頂部」海龜。 –

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,那麼它將暫時覆蓋他,因爲它是「最後到達」。

相關問題