Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中对turtle进行碰撞检测?_Python_Python Turtle - Fatal编程技术网

如何在python中对turtle进行碰撞检测?

如何在python中对turtle进行碰撞检测?,python,python-turtle,Python,Python Turtle,当我使用代码时,我遇到了一个问题: from turtle import Turtle, Screen playGround = Screen() playGround.screensize(500, 500) playGround.title("Race") x=0 run = Turtle("turtle") run.speed("fastest") run.color("blue") run.penup()

当我使用代码时,我遇到了一个问题:

from turtle import Turtle, Screen

playGround = Screen()
playGround.screensize(500, 500)
playGround.title("Race")
x=0

run = Turtle("turtle")
run.speed("fastest")
run.color("blue")
run.penup()
run.setposition(250, 250)

follow = Turtle("turtle")
follow.speed("fastest")
follow.color("red")
follow.penup()
follow.setposition(-250, -250)

def k1():
    run.forward(10)

def k2():
    run.left(20)

def k3():
    run.right(45)

def k4():
    run.backward(20)


def follow_runner():
    if x==0:
        follow.setheading(follow.towards(run))
        follow.forward(0.7)
        playGround.ontimer(follow_runner, 10)
        
while 1==1:
    playGround.onkey(k1, "Up")  # the up arrow key
    playGround.onkey(k2, "Left")  # the left arrow key
    playGround.onkey(k3, "Right") #It's obvious  
    playGround.onkey(k4, "Down")

    playGround.listen()

    follow_runner()
    runx= run.xcor()
    runy= run.ycor()
    followx = follow.xcor()
    followy= follow.ycor()

    playGround.mainloop()
    if  runx==followx and runy==followy:
        playGround.clear()
        x=1
当follow运行时,它只是继续,这意味着代码失败。

我想让它工作起来,使箭头键能够保持。你能帮助我吗?请不要关闭此按钮。

如果您想让海龟在按住键时移动,请使用
onkeypress()
。另外,请注意,不需要使用while循环

这里使用这个:

from turtle import Turtle, Screen
import turtle
playGround = Screen()
playGround.screensize(500, 500)
playGround.title("Race")
x=0

run = Turtle("turtle")
run.speed("fastest")
run.color("blue")
run.penup()
run.setposition(250, 250)


follow = Turtle("turtle")
follow.speed("fastest")
follow.color("red")
follow.penup()
follow.setposition(-250, -250)


def k1():
    run.forward(10)

def k2():
    run.left(20)

def k3():
    run.right(45)

def k4():
    run.backward(20)


def follow_runner():
    global x
    runx= run.xcor()
    runy= run.ycor()
    followx = follow.xcor()
    followy= follow.ycor()

    if x==0:
        follow.setheading(follow.towards(run))
        follow.forward(0.7)
        playGround.ontimer(follow_runner, 10)
    
    if int(runx) == int(followx) or int(runy) == int(followy):
       
        x=1
        playGround.clear()


playGround.onkeypress(k1, "Up")  # the up arrow key
playGround.onkeypress(k2, "Left")  # the left arrow key
playGround.onkeypress(k3, "Right") #It's obvious  
playGround.onkeypress(k4, "Down")


follow_runner()

playGround.listen()
playGround.mainloop()