虽然是真的:不和龟一起工作

时间:2016-04-24 19:27:15

标签: python turtle-graphics

当我导入乌龟时,尝试使用while True:循环,它不起作用。这是代码:

import turtle
import time

stage = turtle.Turtle()

width = 900
height = 500

def up():
    turtle.setheading(90)
    turtle.forward(10)

def down():
    turtle.setheading(270)
    turtle.forward(10)

def char():
    turtle.listen()
    turtle.onkey(up, 'w')
    turtle.onkey(up, 's')

turtle.setup(width, height)
turtle.goto(390, 0)
char()

while True:
    if (turtle.ycor() >= 250):
        turtle.goto(460, 0) 

stage.goto(350, 0)
turtle.done()

我不知道为什么它不起作用,它只是冻结(没有响应)然后,没有错误消息。这真的太烦人了,因为在我有乌龟和真正循环的其他程序中也发生了同样的事情。

如果问题是True,有没有其他方法可以'永远检查',谢谢!

2 个答案:

答案 0 :(得分:0)

我不确切知道你需要完成什么,但你可能只是把

if (turtle.ycor() >= 250):
    turtle.goto(460, 0) 

在up()和down()里面。

虽然你需要让这个功能永远运行,正如你在评论中提到的那样,你可以把你的while True:内容放在第二个线程中,这样可以防止窗口冻结。

答案 1 :(得分:0)

如果乌龟已到达感兴趣的边界,您可以使用任何移动乌龟检查的例程,而不是您的无限循环:

import turtle

WIDTH = 900
HEIGHT = 500

def up():
    turtle.setheading(90)
    turtle.forward(10)
    check()

def down():
    turtle.setheading(270)
    turtle.forward(10)
    check()

def check():
    if turtle.ycor() >= HEIGHT/2:
        turtle.goto(400, 0) 

turtle.setup(WIDTH, HEIGHT)

turtle.goto(350, 0)

turtle.listen()
turtle.onkey(up, 'w')
turtle.onkey(down, 's')

turtle.done()

另请注意,您的原始代码有两只海龟,默认海龟和一只名为stage的海龟 - 确保跟踪您正在操纵的海龟!另外,在坐标系统的顶部,你将乌龟移出屏幕(除非那是你想要的),无法将它移回屏幕。