2016-06-28 151 views
0

好的 - 我的程序中有兩隻烏龜。動畫發生了,在那裏他們碰撞在一起,但我想一個烏龜是ontop的其他的:Python Turtle Graphics - 將烏龜帶到前面

Visual Image

所以,我的問題是 - 如何做到這一點 - 有一個簡單的代碼行如:turtle.front(),如果不是它是什麼?

+1

我想如果你在繪製烏龜2後畫烏龜1,黃色會自動呈現藍色以上 – adil

+0

謝謝,我會試試看! –

回答

1

只需添加這turtle.py文件

def tofront(self, tobring): 
    newfront = tobring.clone() 
    tobring.ht() 
    return newfront 

作品正確, 所以方法 - 返回前人的精力,你龜的新克隆,在所有其他龜類的頂部。 參數tobring - 這是你目前的龜

你可以使用這個在變形點焊程序或如果是這樣把它放到turtle.py文件 ,不要忘了將它添加到(你想要把到前一個)命令列表, - _tg_turtle_functions

_tg_turtle_functions = ['back', 'backward', 'begin_fill', 'begin_poly', 'bk', 
    'circle', 'clear', 'clearstamp', 'clearstamps', 'clone', 'tofront', 'color', 

我做到了克隆命令後

希望這將幫助你

+0

這個解決方案每次調整分層時都會創建一個新的烏龜,這些烏龜會四處閒逛(請參閱'turtle.turtles()')我已經爲這個問題提供了一個簡單的替代答案,它不涉及創建新的烏龜。 – cdlane

0

我在響應討論這個簡短地Make one turtle object always above another治所在拇指對於這個簡單的情況是:

最後一個到達的是在上面

因爲Python烏龜不優化掉零運動,一個簡單的辦法是將你想要的烏龜由零金額頂部:

import turtle 

def tofront(t): 
    t.forward(0) 

gold = turtle.Turtle("square") 
gold.turtlesize(5) 
gold.color("gold") 
gold.setx(-10) 

blue = turtle.Turtle("square") 
blue.turtlesize(5) 
blue.color("blue") 
blue.setx(10) 

turtle.onscreenclick(lambda x, y: tofront(gold)) 

turtle.done() 

藍龜重疊黃金之一。點擊任何地方,情況將會顛倒。

儘管@ Bally的解決方案有效,但我的問題是它會在您每次調整分層時創建一個新的烏龜。而這些海龜不會消失。手錶turtle.turtles()成長。即使我的解決方案留下了烏龜撤消緩衝區的腳印,但我必須相信它消耗更少的資源。