允许输入时无限期移动Python乌龟

时间:2018-10-11 16:45:04

标签: python turtle-graphics

我刚刚开始使用Turtle制作Snake版本,但遇到了问题。我希望蛇可以无限期地移动,但也要允许用户使用键盘来移动蛇。我让蛇从用户输入中移开,但是我不知道如何在没有输入的情况下使蛇保持在相同方向上移动,同时防止蛇忽略用户输入:

while True:
  win.onkey(up,"Up")
  win.onkey(right,"Right")
  win.onkey(down,"Down")
  win.onkey(left,"Left")
  win.listen()
#moves the snake one unit in the same direction it is currently facing
  movesnake()

我是Turtle的新手,这是我对如何解决此问题的猜测-这显然​​行不通。任何帮助,将不胜感激。我意识到Pygame可能会使其变得更容易,但是由于我已经开始使用Turtle,因此,如果可能的话,我希望获得Turtle解决方案。

1 个答案:

答案 0 :(得分:1)

诸如乌龟之类的事件驱动环境永远不应该有while True:,因为它可能会阻塞事件(例如键盘)。请改用ontimer()事件。

通常,onkey()listen()不属于循环-对于大多数程序,它们只需调用一次即可。

以下是通过用户输入重定向的自主乌龟的骨架示例:

from turtle import Screen, Turtle

def right():
    snake.setheading(0)

def up():
    snake.setheading(90)

def left():
    snake.setheading(180)

def down():
    snake.setheading(270)

def movesnake():

    snake.forward(1)

    screen.ontimer(movesnake, 100)

snake = Turtle("turtle")

screen = Screen()

screen.onkey(right, "Right")
screen.onkey(up, "Up")
screen.onkey(left, "Left")
screen.onkey(down, "Down")

screen.listen()

movesnake()

screen.mainloop()