Вы можете использовать цикл while, чтобы квадрат постоянно «шел» в одном и том же направлении, например, каждые 50 секунд.
Это можно сделать, определив случайное направление и затем запустив цикл.
Цикл работает, пока переменная 'flag' = True
Цикл создает квадрат 'идти "в случайно сгенерированном направлении.
Направление не генерируется каждый раз, когда квадрат" идет ".Это происходит потому, что случайно сгенерированное направление генерируется до запуска цикла, поэтому, когда цикл зацикливается, направление не генерируется снова случайно.
Я внес изменения (как вы можете видеть ниже) в ваш код, такчто он больше не использует рекурсию, а итерацию, так что код, который генерирует направление случайным образом, запускается только один раз.
Вам нужно будет добавить условие в цикл while, который устанавливает 'flag' в False, если вы хотитецикл до конца.В настоящее время цикл продолжается вечно.
Примечание. Я поместил ваш код, который я удалил, в комментарии, например # root.after (50, animate)
def animate():
leftorright = random.randint(1,2) #1 = LEFT, 2 = RIGHT
if leftorright = 1: #(LEFTWARDS)
dx = random.randint(-5, -1) #A random leftwards movement of 1-5 pixels
elif leftorright = 2: #(RIGHTWARDS)
dx = random.randint(1, 5) #A random rightwards movement of 1-5 pixels
upordown = random.randint(1,2) #1 = UP, 2 = DOWN
if upordown = 1: #(UPWARDS)
dy = random.randint(-5, -1) #A random upwards movement of 1-5 pixels
elif leftorright = 2: #(DOWNWARDS)
dy = random.randint(1, 5) #A random downwards movement of 1-5 pixels
flag = True
while flag = True:
if(check_crash() == 1):
print("crash on X axis: ", canvas.coords(square))
dx = dx * (-1)
elif(check_crash() == 2):
print("crash on Y axis: ", canvas.coords(square))
dy = dy * (-1)
canvas.move(square, dx, dy)
time.sleep(50)
#root.after(50, animate)