Python - клавиатура нескольких объектов черепахи
Я хотел бы создать программу, в которой объект Turtle реагирует на нажатия клавиш. Я могу сделать это, но я не могу понять, как перемещать второй объект Черепахи, который управляется компьютером, в то время как первый движется. Любая помощь будет оценена.
Вот мой код:
from turtle import *
from Tkinter import Tk
root = Tk()
root.withdraw()
turtle = Turtle()
def h1():turtle.forward(10)
def h2():turtle.left(45)
def h3():turtle.right(45)
def h4():turtle.back(10)
def h5(root=root):root.quit()
onkey(h1,"Up")
onkey(h2,"Left")
onkey(h3,"Right")
onkey(h4,"Down")
onkey(h5,"q")
listen()
root.mainloop()
2 ответа
Вставьте вторую черепаху перед listen()
который движется с ключами w,a,s,d:
turtle2 = Turtle()
def h11():turtle2.forward(10)
def h21():turtle2.left(45)
def h31():turtle2.right(45)
def h41():turtle2.back(10)
onkey(h11,"w")
onkey(h21,"a")
onkey(h31,"d")
onkey(h41,"s")
Кажется, я не понимаю, как двигать второй объект Черепахи, который управляется компьютером, пока движется первый.
Ниже приведен минимальный код, который соответствует описанию. Зеленая черепаха Pokey управляется компьютером, а красная черепаха Hokey - пользователем (сначала нажмите на окно, чтобы услышать нажатия клавиш):
from turtle import Turtle, Screen
def move_pokey():
pokey.forward(10)
x, y = pokey.position()
if not (-width/2 < x < width/2 and -height/2 < y < height/2):
pokey.undo()
pokey.left(90)
screen.ontimer(move_pokey, 100)
hokey = Turtle(shape="turtle")
hokey.color("red")
hokey.penup()
pokey = Turtle(shape="turtle")
pokey.setheading(30)
pokey.color("green")
pokey.penup()
screen = Screen()
width = screen.window_width()
height = screen.window_height()
screen.onkey(lambda: hokey.forward(10), "Up")
screen.onkey(lambda: hokey.left(45), "Left")
screen.onkey(lambda: hokey.right(45), "Right")
screen.onkey(lambda: hokey.back(10), "Down")
screen.onkey(screen.bye, "q")
screen.listen()
screen.ontimer(move_pokey, 100)
screen.mainloop()
Это не законченный код (завершение события таймера должно быть более чистым, обработчики Hokey должны блокировать дополнительные события во время работы и т. Д.), Но оно должно дать вам базовое представление о том, как это сделать.