#python #python-turtle
#питон #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()
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
Когда выполняются следующие касания, они просто продолжаются, и это означает, что код не удался.
Я хочу заставить его работать и сделать так, чтобы клавиши со стрелками можно было удерживать. Вы можете мне помочь? Пожалуйста, не закрывайте это.
Ответ №1:
Если вы хотите, чтобы черепаха перемещалась при удержании клавиши, используйте 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()