2014-02-18 3 views
0
"""Import turtle to start drawing""" 
from turtle import * 
"""imports the random function""" 
from random import * 


"""draws the bounding box""" 
def bounding_box(): 
    up() 
    right(90) 
    forward(200) 
    down() 
    left(90) 
    forward(200) 
    left(90) 
    forward(400) 
    left(90) 
    forward(400) 
    left(90) 
    forward(400) 
    left(90) 
    forward(200) 
    up() 
    goto(0,0) 
    down() 
"""I want the snake to stay within that box above""" 

"""draws the recursive snake""" 
def drawSnakeRec(segments, length): 
    """Draws the iterative snake and returns the total length""" 
    if segments <= 0 or length <= 0: 
     return 0 
    else: 
     color(random(), random(), random()) 
     forward(length) 
     pensize(randint(1,10)) 
     left(randint(-30, 30)) 
     return length + drawSnakeRec(segments - 1, randint(1,20)) 

"""draws the iterative snake""" 
def drawSnakeIter(segments, length): 
    TL = 0 
    """Draws the iterative snake and returns the total length""" 
    while segments > 0: 
     color(random(), random(), random()) 
     pensize(randint(1,10)) 
     forward(length) 
     left(randint(-30, 30)) 
     TL += length 
     segments -=1 
    return TL 

"""defines the main function""" 
def main(): 
    segments = int(input("Enter the segments between 0 and 500: ")) 
    bounding_box() 
    hideturtle() 
    speed('fast') 
    """ask for the number of segments""" 
    if segments < 0 or segments > 500: 
     print("Segments is out of range. Segment must be between 0 and 500 inclusive") 
     input("Press enter to close") 
    else: 
     """draw the first snake""" 
     x = drawSnakeRec(segments, randint(1, 20)) 
     print("Recursive Snake's Length is:",x,"Units") 
     input("Press Enter to draw Iterative Snake") 
     up() 
     goto(0,0) 
     reset() 
     """start the second drawing""" 
     bounding_box() 
     y = drawSnakeIter(segments, randint(1,20)) 
     print("Iterative Snake's Length is:",y," Units") 
     input("Press Enter to exit...") 
     bye() 

"""runs the main function""" 
main() 

질문 : 어떻게 경계 상자 안에 뱀을 보관할 수 있습니까? 경계 상자에 닿으면 뱀이 180도 회전하기를 원합니다. 최대한 자세하게 작성하십시오.파이썬 거북이 그래픽

+0

아직 아무 것도 시도하지 않았습니다. 누군가는 setpos() 함수를 사용해야한다고 말했지만 사용법을 모른다. – Learner

+0

http://docs.python.org/2/library/turtle.html#turtle.setpos – jonrsharpe

답변

0

나는 거북이가 감지 기능이없고 그래서 당신이 pos() 또는 xcor()ycor()와 좌표를 테스트 할 필요가 ... 볼 수 있다고 생각합니다.

내가 바로 아래 X = 0에서, 당신의 울타리가, 200 좌측 생각, y를 0 (당신 goto(0,0)를.) =

그래서 테스트가

if xcor() > 200: # move to left, make x smaller, turn around! 
if xcor() < -200: # move to right, make x bigger, turn around! 
if ycor() > 200: 
if ycor() < -200: 

당신이 필요로 할 것 x와 y를 채우십시오. 어쩌면이 같은 :

if xcor() > 200: setx(200) 
if xcor() < -200: setx(-200) 
if ycor() > 200: sety(200) 
if ycor() < -200: sety(-200) 

하지만 너무 예쁘게하지 않을 수 있습니다. 그것이 다시 안에있을 때까지 당신은 그것이 원형으로 걷게 할 수 있습니다. 어쩌면. 너하기에 달렸다. 당신은 180도 회전하고 싶었습니다. 당신은 setx와 sety 대신 이것을 넣을 수 있습니다. 힌트 : 당신이 작은 발걸음을 내딛 으면 아무도 당신이 새장에서 나왔다는 것을 알지 못합니다.

거북이에 대한 자세한 정보가 필요하면 help('turtle')을 사용할 수 있습니다. 그것은 당신에게 당신이 사용할 수있는 많은 기능을 보여줄 것입니다.

+0

일부 조정을 마친 후 마침내 작동했습니다. Thnx 많이! – Learner

+0

환영합니다! 수정 사항을 게시하고 답변을 수락 할 수 있습니까? 그건 그렇고 : "파이썬 루프"에 대한 구글. 당신이 그것을 사용할 수 있습니다. [여기 파이썬을위한 튜토리얼도 있습니다.] (http://python.opentechschool.org/) 또한 거북이입니다. 이미 많은 것을 알고있을 것입니다. – User