Есть несколько способов сделать это, но я думаю, что наиболее удовлетворительным будет определение пользовательского курсора черепахи с использованием сложной формы.Затем мы изменяем форму черепахи на эту пользовательскую форму (наклоняем ее) и перемещаем ее по экрану, как любой другой курсор черепахи.
Это не работает в веб-сайте trinket.io TypeError: TypeError:() получил неожиданный аргумент ключевого слова 'visible' в строке 39 в main.py - 박준영
Это не будет когда-либо работать на trinket.io, так как отсутствует класс Shape
и возможность создавать собственные курсоры черепах.Вам нужно отредактировать свой вопрос, чтобы явно упомянуть об этом ограничении.
Давайте пойдем об этом по-другому, аналогично @tomasantunes, но сделаем перерисовки мгновенно благодаря разумному использованию метода tracer()
, который trinket.ioподдерживает:
from turtle import Screen, Turtle
global_xx = 0
def drawCircle(turtle, x, y, radius, color):
turtle.goto(x, y)
turtle.color(color)
turtle.begin_fill()
turtle.circle(radius)
turtle.end_fill()
def mySmile(turtle, x, y, wr):
turtle.clear()
drawCircle(turtle, x + 0 * wr, y - 100 * wr, 150 * wr, 'green')
drawCircle(turtle, x - 40 * wr, y + 60 * wr, 30 * wr, 'white')
drawCircle(turtle, x - 40 * wr, y + 60 * wr, 10 * wr, 'black')
drawCircle(turtle, x + 50 * wr, y + 60 * wr, 40 * wr, 'white')
drawCircle(turtle, x + 50 * wr, y + 60 * wr, 10 * wr, 'black')
drawCircle(turtle, x + 0 * wr, y + 20 * wr, 10 * wr, 'black')
drawCircle(turtle, x + 0 * wr, y - 80 * wr, 40 * wr, 'brown')
def left():
global global_xx
screen.onkey(None, 'Left') # disable handler inside handler
global_xx -= 10
mySmile(turtle, global_xx, 0, 0.3)
screen.update()
screen.onkey(left, 'Left')
def right():
global global_xx
screen.onkey(None, 'Right')
global_xx += 10
mySmile(turtle, global_xx, 0, 0.3)
screen.update()
screen.onkey(right, 'Right')
screen = Screen()
turtle = Turtle()
turtle.hideturtle()
turtle.speed('fastest')
turtle.penup()
mySmile(turtle, global_xx, 0, 0.3)
screen.onkey(left, 'Left')
screen.onkey(right, 'Right')
screen.listen()
screen.tracer(0, 0)
screen.mainloop()