我对你的解决方案。代码不是理想的,但它的工作原理,你可以在它上面工作。你必须知道,那只乌龟已经失去了位置,你必须调它。这就是为什么我指出我的乌龟要查找的设置方法。
现在,你必须记住,right(deg)
和left(deg)
方法是说“请在给定的方向转过这样的程度”。
所以请记住,你最后的方向是什么。
这里理解的关键是,您无法在此访问任何绝对。您只能改变与当前位置相关的内容。所以,你不能左转,但如果你知道以前的方向,你知道有多少程度,你应该把你的龟实际左转。您的任务
我的工作代码为:
import turtle
wn = turtle.Screen()
last_pressed = 'up'
def setup(col, x, y, w, s, shape):
turtle.up()
turtle.goto(x,y)
turtle.width(w)
turtle.turtlesize(s)
turtle.color(col)
turtle.shape(shape)
turtle.lt(90)
turtle.down()
wn.onkey(up, "Up")
wn.onkey(left, "Left")
wn.onkey(right, "Right")
wn.onkey(back, "Down")
wn.onkey(quitTurtles, "Escape")
wn.listen()
wn.mainloop()
#Event handlers
def up():
global last_pressed
if last_pressed == 'left':
turtle.rt(90)
turtle.fd(10)
elif last_pressed == 'right':
turtle.lt(90)
turtle.fd(10)
elif last_pressed == 'up':
turtle.fd(10)
else:
turtle.rt(180)
turtle.fd(10)
last_pressed = 'up'
def left():
global last_pressed
if last_pressed == 'left':
turtle.fd(10)
elif last_pressed == 'right':
turtle.lt(180)
turtle.fd(10)
elif last_pressed == 'up':
turtle.lt(90)
turtle.fd(10)
else:
turtle.rt(90)
turtle.fd(10)
last_pressed = 'left'
def right():
global last_pressed
if last_pressed == 'left':
turtle.rt(180)
turtle.fd(10)
elif last_pressed == 'right':
turtle.fd(10)
elif last_pressed == 'up':
turtle.rt(90)
turtle.fd(10)
else:
turtle.lt(90)
turtle.fd(10)
last_pressed = 'right'
def back():
global last_pressed
if last_pressed == 'left':
turtle.lt(90)
turtle.fd(10)
elif last_pressed == 'right':
turtle.rt(90)
turtle.fd(10)
elif last_pressed == 'up':
turtle.rt(180)
turtle.fd(10)
else:
turtle.fd(10)
last_pressed = 'down'
def quitTurtles():
wn.bye()
setup("blue",-200,200,2,2,"turtle")
请记住,它需要一些时间,乌龟实际转,所以不按键,点击它们。
我认为你可以继续这样做。
看看这个:http://www.dreamincode.net/forums/topic/274724-drawing-with-arrow-keys-turtle-module/page__p__1599693entry1599693用户名为'atraub'的答案解释了如何做它。 – jedruniu
叫我白痴,虽然我似乎无法将其实施到我的程序 –