Фигура определяется параметрами
Круг можно описать координатами центра, радиусом и цветом. Прямоугольник — положением и размерами. Эти параметры являются состоянием, а рисунок показывает его в конкретный момент. Если положение хранится только в готовой картинке, управлять движением сложнее. Поэтому полезно отдельно записать данные объекта и отдельно представить процедуру, которая их отображает. Система координат должна быть ясной: заранее определяют начало отсчёта и направления изменения координат, не полагаясь на привычку к школьному графику.
Шаг движения меняет состояние
В простой модели на каждом кадре к горизонтальной координате прибавляют заданное смещение. Если центр начинается в точке двадцать и сдвигается на пять единиц, следующие положения будут двадцать пять, тридцать и тридцать пять. Это дискретная последовательность, а не непрерывное движение. При изменении длительности кадра одинаковый шаг может создавать другую видимую скорость. Для более точной модели смещение связывают с прошедшим временем. Но сначала важно понять простой цикл обновления и не смешивать координату со скоростью.
Кадр нужно перерисовать согласованно
Если рисовать новый круг, не убирая прежний, получится след из фигур. Иногда это задуманный эффект, но для обычного движения фон восстанавливают и рисуют новое состояние. В GraphABC предусмотрен режим рисования во внеэкранном буфере с последующим обновлением окна. Такой подход помогает показывать кадр целиком и уменьшать мерцание. Конкретные команды следует сверять с документацией установленной среды. Сам принцип остаётся общим: подготовка изображения и его показ являются различимыми этапами.
Граница проверяется с учётом размера объекта
Чтобы круг не ушёл за правый край, недостаточно проверять только координату центра. Нужно учитывать радиус. Например, при ширине области сто и радиусе десять центр должен оставаться не правее девяноста, если круг целиком виден. При отражении движения меняют направление, а не размер фигуры. Также важно решить, что делать, если шаг сразу перенёс объект за границу. Такие случаи полезно проверить вручную до усложнения сцены несколькими объектами.
Попробуйте на практике
Составьте таблицу пяти кадров движения круга в условной области шириной сто единиц.
- Задайте радиус десять, начальную горизонтальную координату семьдесят и шаг пять; вертикальную координату оставьте постоянной.
- Запишите положение центра для пяти кадров, считая начальное состояние первым кадром.
- Для каждого кадра вычислите положение правого края круга.
- Укажите, в какой момент потребуется изменить дальнейшее движение, и опишите порядок очистки и рисования кадра.
Как проверить результат. Центры расположены в точках семьдесят, семьдесят пять, восемьдесят, восемьдесят пять и девяносто. Последний круг касается границы, поэтому следующий шаг требует отдельного решения.
Частые вопросы
Почему после движения остаётся полоса из кругов?
Вероятно, прежнее изображение не удаляется или фон не восстанавливается. Для анимации без следа каждый кадр должен показывать нужное состояние сцены.
Можно ли проверять движение без запуска программы?
Да. Таблица координат помогает найти ошибки шага и границ. Затем результат всё равно проверяют в самой графической среде.
Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.