Вы знаете, что уже пошли по неверному пути, когда дважды импортируете черепаху, двумя разными способами, а также используете sleep()
в среде, основанной на событиях, например, черепаха:
import turtle
from time import sleep
from turtle import Screen, Turtle
Вы такжене следует использовать цикл while True:
в среде, основанной на событиях, а использовать событие таймера.Ниже приведена перезапись вашего кода, который устраняет эти проблемы.Поскольку вы никогда не устанавливали координату Y для двух черепах, нет ни «верха», ни «низа», просто две черепахи движутся мимо друг друга:
from turtle import Screen, Turtle
def go_left():
x = turtle_b.xcor() - turtle_b_speed
if -300 <= x <= 300:
turtle_b.setx(x)
def go_right():
x = turtle_b.xcor() + turtle_b_speed
if -300 <= x <= 300:
turtle_b.setx(x)
def move_a():
global turtle_a_direct
turtle_a.setx(turtle_a.xcor() + turtle_a_direct)
if not -300 <= turtle_a.xcor() <= 300:
turtle_a.undo()
turtle_a_direct *= -1
screen.ontimer(move_a, 500)
screen = Screen()
screen.title("Turtle Test")
screen.bgcolor('grey')
screen.setup(width=640, height=640)
turtle_a = Turtle('square')
turtle_a.speed('fastest')
turtle_a.color('white')
turtle_a.penup()
turtle_a_direct = 5
turtle_b = Turtle('square')
turtle_b.speed(0)
turtle_b.color('black')
turtle_b.penup()
turtle_b_speed = 10
screen.onkeypress(go_left, 'Left')
screen.onkeypress(go_right, 'Right')
screen.listen()
move_a()
screen.mainloop()
Поскольку вы вызвали onkeypress()
, япредполагая Python 3.