【问题标题】:Changing turtle look direction in Python?在 Python 中改变海龟的外观方向?
【发布时间】:2017-11-28 19:59:31
【问题描述】:

在 python 的海龟图形中,我有一只海龟在“for”循环中运行。重要的是,海龟最后的方向与开始时相同,如何使用以下代码完成:

 for x in range (op):
 x=random.randint(1,inp)
 kjr.speed(0)
 kjr.begin_fill()
 kjr.pendown()
 color=random.choice(cr)
 kjr.color(color)
 kjr.forward(x)
 kjr.left(90)
 y=random.randint(1,inptwo)
 kjr.forward(y)
 kjr.left(90)
 kjr.forward(x)
 kjr.left(90)
 kjr.forward(y)
 kjr.end_fill()
 kjr.penup()
 kjr.goto(x,y)

【问题讨论】:

    标签: python turtle-graphics


    【解决方案1】:
    # store the value
    heading = turtle.heading()    
    ...
    # for loop
    ... 
    turtle.seth( heading ) 
    

    【讨论】:

      【解决方案2】:

      您需要存储海龟的初始位置。你可以这样做

      heading = turtle.heading()
      

      然后用你的乌龟运行 for 循环

      for x in range (op):
        x=random.randint(1,inp)
        kjr.speed(0)
        kjr.begin_fill()
        kjr.pendown()
        color=random.choice(cr)
        kjr.color(color)
        kjr.forward(x)
        kjr.left(90)
        y=random.randint(1,inptwo)
        kjr.forward(y)
        kjr.left(90)
        kjr.forward(x)
        kjr.left(90)
        kjr.forward(y)
        kjr.end_fill()
        kjr.penup()
        kjr.goto(x,y)
      

      完成后回到初始位置

      turtle.seth(heading)
      

      【讨论】:

        【解决方案3】:

        目前尚不清楚您是要将航向恢复为循环的最后一步,还是在循环完成后恢复。如果你想在循环中进行,因为你做了三个直角,kjr.left(90),你只需要做第四个就可以让你的航向回到你开始的地方:

        kjr.speed('fasest')
        
        for x in range(op):
            x = random.randint(1, inp)
        
            color = random.choice(cr)
            kjr.color(color)
            kjr.pendown()
        
            kjr.begin_fill()
            kjr.forward(x)
            kjr.left(90)
            y = random.randint(1, inptwo)
            kjr.forward(y)
            kjr.left(90)
            kjr.forward(x)
            kjr.left(90)
            kjr.forward(y)
            kjr.end_fill()
        
            kjr.penup()
            kjr.goto(x, y)
            kjr.left(90)  # make turtle look in same direction as top of loop
        

        在这种情况下,您不需要保存和恢复标题。但是,如果您想在循环之后恢复标题,那么最好在循环之前保存标题,而不是位置,并在循环之后恢复标题正如@mko(+1)所建议的那样循环。

        【讨论】:

          猜你喜欢
          • 2018-05-30
          • 1970-01-01
          • 2016-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-06
          • 1970-01-01
          相关资源
          最近更新 更多