хотел максимально отсрочить изучение документации) и всю боль ощутить на практике и кстати "погружение в питон 3" новичку дается с трудом. т.к много неизвестных обращений на ЯП без должного пояснения)
допустим значение перешло границу 300 значение поменялось на отрицательное (-) и потом убывает и когда становиттся уже меньше 0 то накладывается еще один минус (-)
в check ты не проверяешь в какую сторону объект двигался до того как выбрать ему направление. поэтому у тебя направление будет зависесть только от текущей координаты.