2016-06-28 4 views
0

Ok - 내 프로그램에 두 마리의 거북이가 있습니다. 애니메이션은 서로 충돌 할 경우, 일어,하지만 난 한 거북이가 다른 ontop이되고 싶어 :파이썬 거북이 그래픽 - 앞면 거북이 가져 오기

Visual Image

그래서, 내 질문은 - 코드의 간단한 라인 저기 - 나는 이런 일이 어떻게해야합니까 예 : turtle.front(), 그렇지 않다면?

+1

거북이 2를 그려 거북이 1을 그리면 황색이 자동으로 파란색 위에 렌더링됩니다. – adil

+0

고마워, 내가 시험해 볼게! –

답변

1

그냥 그래서 방법, 올바른 파일을

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

작품을 turtle.py이 추가 - 다른 모든 거북이의 상단에, 당신에게 거북이의 새로운 클론을 돌려 sould. 매개 변수 tobring는 - 그것은 당신의 현재 거북이

당신에 추가하는 것을 잊지 마세요,이 프로그램에서 데프 사용하거나 그렇다면 turtle.py 파일 에 넣어 수 있습니다 (당신이 앞으로 가져 오기 할 하나)의 명령 목록 -이 당신에게

+0

이 솔루션은 레이어링이 조정될 때마다 새로운 거북이를 만듭니다. (거북선. 거북선() 참조) 새로운 거북이 생성을 포함하지 않는이 질문에 대한 간단한 답을 제공했습니다. – cdlane

0

도움이 될 것입니다 _tg_turtle_functions

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

내가

희망 clone 명령 후를 않았다 나는 Make one turtle object always above another 곳 규칙에 내 대답이 간략하게 논의 이 간단한 상황에 엄지 손가락입니다 : 파이썬 거북이 멀리 제로 움직임을 최적화하지 않기 때문에

도착 마지막

최고

에 간단한 방법은 당신이 원하는 거북이를 이동하는 것입니다 0이상의 상단 :

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()가 자랍니다. 내 솔루션조차도 거북이의 발자국을 취소 버퍼를 취소하지만 그것은 적은 자원을 소비 믿을 필요가있다.