Анимация движения
Практическая работа № 36 «Анимация»
Сначала создадим новый холст для анимации:
новый лист(200, 200, синий)
Вспомните, что означают аргументы, переданные команде новый лист.
Шарик будем изображать в виде круга жёлтого цвета. Его контур рисовать не будем, поэтому сразу установим прозрачный цвет пера:
перо (1, прозрачный)
Рисование и стирание шарика можно выполнять одной процедурой, которая принимает три параметра: пару координат (х, у) центра шарика и цвет заливки:
алг Шарик(цел х, у, цвет ц)
нач
цел R=10
кисть(ц)
окружность(х, у, R)
кон
Что означает число 10 в тексте процедуры?
Как с помощью этой процедуры нарисовать шарик на синем фоне? Как стереть шарик, восстановив синий фон?
Для хранения текущих координат шарика (т. е. координат в данный момент) будем использовать переменные х и у основной программы. Шарик будем двигать слева направо по середине холста на уровне у = 100 (рис. 6.61).
Рис. 6.61
Определите координаты центра шарика, когда он находится:
а) у левой стенки;
б) у правой стенки (рис. 6.61).
Какие начальные значения нужно установить для переменных х и у, чтобы шарик начал движение от левой стенки?
Если х-координата шарика стала больше, чем 200 - R, где R — радиус шарика, то шарик вышел за правую границу холста. Поэтому цикл движения должен продолжаться, пока х < 200 - R. При R = 10 получается такой цикл:
нц пока х < 190
| движение шарика вправо
кц
В теле цикла сейчас только комментарий. Там нужно записать все повторяющиеся операции: вывод шарика на экран, скрытие шарика и его перемещение.
Как нужно вызвать процедуру Шарик, чтобы нарисовать шарик с координатами (х, у)? Стереть шарик с координатами (х, у)?
Как вы думаете, что произойдёт, если нарисовать шарик и сразу же его стереть? Обе эти операции компьютер выполняет очень быстро, поэтому мы даже не заметим, что на экране что-то было нарисовано. Чтобы все-таки увидеть шарик, после того как мы его нарисовали, нужно сделать паузу. Во время этой паузы шарик будет виден на экране. Пауза должна быть небольшая, например можно выбрать её длину 20 миллисекунд (1 миллисекунда = 1/1000 секунды). Добавить такую паузу в программу можно с помощью команды
ждать:
ждать (20)
Остаётся понять, как сдвинуть шарик. Положение шарика определяется координатами его центра, которые хранятся в переменных х и у. Поэтому для перемещения шарика достаточно изменить значения этих переменных. Например, чтобы передвинуть шарик вправо на 2 пикселя, нужно добавить 2 к значению его х-координаты:
х:=х+2
Таким образом, мы можем написать тело цикла:
нц пока х<=190
Шарик(х, у, жёлтый)
ждать(20)
Шарик(х, у, синий)
х:=х+2
кц
Иннокентий и Данила написали свои циклы моделирования так:
Объясните, почему их программы работают неправильно.
Теперь остаётся «собрать» всю программу. Вы уже можете сделать это самостоятельно. Не забудьте, что после основной программы нужно поместить процедуру Шарик.
Следующая страница Выводы. Интеллект-карта