Как сделать графику в черепахе для Move? - PullRequest
0 голосов
/ 04 апреля 2019

Я сделал рисунок в черепахе следующим образом:

from turtle import *
from random import randint
left(20)
speed("fastest")
for i in range(36):
    left(120)
    fd(100)
    left(120)
    fd(100)
    left(120)
    fd(100)
    left(10)

это делает это: enter image description here

Теперь, как заставить треугольник вращаться?Как будто я хочу перетащить его и хочу, чтобы он вращался.

Пожалуйста, ответьте !!

1 Ответ

1 голос
/ 04 апреля 2019

как заставить треугольник вращаться?

Путем многократной очистки и перерисовки слегка повернутых, когда никто не смотрит:

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()

Опять же, в зависимости от среды, вы можете перетаскивать большой вращающийся черный шарик. Теперь, когда графическое изображение является курсором, часть поворота на намного проще.

...