Перемещайте Python Turtle горизонтально, не меняя заголовок - PullRequest
0 голосов
/ 26 мая 2018

Я работаю над игрой в Python-3, которая требует перемещения объекта Turtle горизонтально (AKA в сторону) без изменения моего курса.turtle.goto(x,y) или turtle.setx(x) turtle.sety(y) не будет работать, потому что я хочу, чтобы объект обнаруживался при движении, так же, как когда вы делаете turtle.fd(distance).

Вот код, который у меня сейчас есть:

import turtle 
turtle.speed('slowest')
turtle.lt(90)
turtle.fd(20)
turtle.rt(90)

С этим кодом черепаха поворачивается, движется вперед и поворачивается назад.Есть ли способ, которым я мог бы двигаться в сторону, не поворачиваясь?

Большое спасибо!Любые комментарии будут приветствоваться!

1 Ответ

0 голосов
/ 26 мая 2018

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