如何在海龟移动中制作图形?

时间:2019-04-04 05:18:11

标签: python python-3.x rotation turtle-graphics

我在乌龟上制作了这样的图形:

  from turtle import *
来自随机进口randint
左(20)
速度(“最快”)
对于我在范围(36)中:
    左(120)
    fd(100)
    左(120)
    fd(100)
    左(120)
    fd(100)
    左(10)
 

它使得:

现在如何使三角形圆旋转?就像我要拖动它,并且希望它旋转一样。

请回答!

1 个答案:

答案 0 :(得分:0)

  

如何使三角形圆旋转?

在没有人看的情况下,通过反复清除并重画它来稍微旋转一下:

from turtle import *

def rotate():

    clear()

    for _ in range(36):
        for _ in range(3):
            left(120)
            fd(100)

        left(10)

    update()
    left(1)
    ontimer(rotate, 60)

left(20)
tracer(False)

rotate()

exitonclick()

此代码易碎,因为除update()本身外,其他操作可能会导致屏幕更新,因此重新排列代码或替换其他方法(例如undo())可能不会产生您想要的影响

  

我要拖动它

这比较棘手,您获得的结果可能取决于您的体系结构(Unix或Windows)。我们将其放入可拖动的游标中。但是光标会将其多边形视为已填充。因此,取决于基础的Tk实施,您的结果可能会有所不同。很多。

from turtle import *

def graphic():
    penup()
    tracer(False)
    begin_poly()

    for _ in range(36):
        for _ in range(3):
            left(120)
            fd(100)

        left(10)

    end_poly()
    tracer(True)
    pendown()

    return get_poly()

def drag_handler(x, y):
    ondrag(None)
    goto(x, y)
    ondrag(drag_handler)

register_shape('graphic', graphic())

ondrag(drag_handler)

shape('graphic')
color('black', 'white')

mainloop()

enter image description here

我担心在Windows上,该光标可能只是一个大的黑色斑点。

  

我想拖动它,然后旋转它

我想把它留给读者练习。但是无论如何这里是

from turtle import *

def rotate():
    left(1)
    ontimer(rotate, 60)

def graphic():
    penup()
    tracer(False)
    begin_poly()

    for _ in range(36):
        for _ in range(3):
            left(120)
            fd(100)

        left(10)

    end_poly()
    tracer(True)
    pendown()

    return get_poly()

def drag_handler(x, y):
    ondrag(None)
    goto(x, y)
    ondrag(drag_handler)

register_shape('graphic', graphic())

ondrag(drag_handler)

shape('graphic')
color('black', 'white')

rotate()

mainloop()

同样,根据环境,您可能会拖动一个很大的旋转的黑色斑点。现在图形图像是光标,旋转部分更简单了。