我正在使用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)
使用此代码,乌龟转身,向前移动,然后转身。有没有办法让我可以侧身移动而不必转弯?
非常感谢! 欢迎任何评论!
答案 0 :(得分:0)
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()
相反,我们可以做到这一点。乌龟光标有一个倾斜的概念,允许它在一个方向上看,而在另一个方向上移动:
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()