turtle.goto (x, y) или turtle.setx (x) turtle.sety (y) не будет работать, потому что я хочу, чтобы объект отображался при перемещении
Ваше предположение неверно - черепаха будет появляться при движении со всеми этими операциями:
import turtle
turtle.speed('slowest')
turtle.sety(turtle.ycor() + 100)
turtle.done()
Это перемещает черепаху вертикально, сохраняя при этом горизонтальное направление.Он не телепортируется, это то же видимое движение, что и .forward()
Однако, если у вас есть какая-то другая причина не использовать goto()
, setx()
, sety()
и т. д. и вместо этого мы хотим использовать forward()
, backward()
, есть способ, которым мы можем это сделать.Курсор черепахи имеет концепцию tilt , позволяющую ему смотреть в одном направлении при движении в другом:
import turtle
turtle.speed('slowest')
turtle.tracer(False) # hide the heading change ...
turtle.setheading(90)
turtle.settiltangle(-90) # ... until we can tilt it
turtle.tracer(True)
turtle.forward(100)
turtle.done()
Одна ситуация, в которой мы можем использовать это, это игра в стиле космических захватчиков, гдечерепаха хочет повернуться лицом к верхней части окна, но мы хотим использовать forward()
и backward()
для управления ее движением из стороны в сторону на экране:
""" Oversimplified Example """
from turtle import Turtle, Screen
screen = Screen()
turtle = Turtle('turtle', visible=False)
turtle.settiltangle(90)
turtle.penup()
turtle.showturtle()
screen.onkey(lambda: turtle.forward(10), "Right")
screen.onkey(lambda: turtle.backward(10), "Left")
screen.listen()
screen.mainloop()