Найти тему
SamAlex

Летающая черепашка

Здравствуйте. Сегодня поговорим как запустить черепашку в полет и что бы она еще и бесконечно двигались. Вот ссылки на последние две статьи, где мы работали с графическим модулем Turtles.

ЧАСТЬ 6
ЧАСТЬ 7

Первым делом добавим границы, за которые наша черепашка не должна улетать. Мы наш экран устанавливали 800*600 пикселей. Установим границы нашего поля 500*500 пикселей. Поднимаем карандаш, перемещаем черепашку в правый верхний угол наших границ в координаты 250:250, опускаем карандаш. И поочередно перемещаем нашу черепашку по координатам 250: -250, -250: -250, -250: 250, 250: 250. Незабываем, что центр экрана имеет координаты 0:0. Так же давайте линию нашей границы сделаем толще, для этого будем использовать функцию «pensize» и передадим ей параметр 3. И закрасим ее красным цветом, для этого будем использовать функцию «color» и передадим ей «red». Вот наш результат, а внутри код.

Поехали дальше. Для удобства написания и отладки нашего кода не будем сразу много создавать черепашек, и запускать их. Создадим еще одну черепашку, назовем ее «star» и сделаем ее реально черепашкой желтого цвета, для этого будем использовать команду «shape». И что черепашка не оставляла за собой следов поднимем карандаш командой «up».

-2

Перейдем к написанию алгоритма движения. Нам необходимо, что бы наша черепашка непрерывно двигалась, но не заходила за пределы границ. Непрерывное движение можно организовать с помощью цикла «While» мы его рассматривали в этой статье. В цикле будем запрашивать координаты нашей черепашки? используя функцию «position».

Научим нашу черепашку двигаться по координате «x», используя функцию «goto», где будем «x» увеличивать на величину прироста скорости, назовем нашу переменную «sx». Теперь наша черепашка пойдет в правую сторону, причем ей все равно на наши границы. Для того что бы черепашка при достижении границы разворачивалась и шла в другую сторону, зададим ограничения. Сделаем проверку условия. Если к нашей текущей координате «x» прибавить шаг черепашки переменную «sx» и получим координату, выходящую за наши границы, то меняем скорость нашей черепашки на противоположную. И разворачиваем черепашку на 180 градусов (только ради визуального эффекта, что бы черепашка не шла задом).

-3

Так же делаем для оси «y». Запускаем и наша черепашка начинает двигаться, доходя до границы, разворачивается и двигается в обратном направлении. Если прирост скорости «sx» и «sy» будут одинаковые значения, тогда черепашка будет двигаться по диагонали от верхнего правого угла в нижний левый.

-4

Теперь, когда разобрали принцип работы данного алгоритма, можно усложнить задачу и вместо одной экспериментальной черепашки запускать сразу несколько черепашек, разных цветов. Но этот пример, мы рассмотрим в следующей статье. Листинг кода лежит ТУТ.

На сегодня все.

Спасибо за внимание!

До новых встреч!