Проект «Анимация» на языке объектно-ориентированного программирования Visual Basic
Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 1
Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 2
Шаг 2. Решаем задачи на Паскале
Задача 2 Полет кольца. Из центра поля размером 500 × 500 пикселей должно вылетать кольцо и лететь в левый верхний угол. После вылета за пределы экрана кольцо должно возвращаться обратно, после чего снова лететь в угол экрана и так до нажатия любой клавиши. При каждой смене направления движения кольцо должно менять свой цвет. Размер и толщину кольца подберите самостоятельно.
Алгоритм решения задачи
1. Подключите в разделе uses графический блок graphabc и текстовый блок crt (так как команда управления клавиатурой находится в этом блоке).
2. Задайте размеры экрана по осям Х и Y командой setwindowsize(500,500).
3. Для исключения эффекта «моргания» используйте команду lockdrawing.
Для того чтобы на экране не мигал курсор, используйте команду hidecursor.
4. Задайте начальное положение кольца (в середине экрана, х = 250, у = 250), его радиус (например, r = 20) и толщину командой setpenwidth(8).
5. Так как кольцу нужно будет двигаться то в одном, то в другом направлении, задайте начальное направление (= 1).
6. Теперь, когда все начальные значения заданы, создайте большой цикл, который закончится, только если пользователь нажмет какую-нибудь клавишу. Здесь удобнее использовать цикл repeat … until, в конце которого проверять, была ли нажата какая-нибудь клавиша, и если была, то закончить внешний цикл.
7. Внутри внешнего цикла вначале задайте параметры цвета кольца. Так как принята система раскраски RGB, то случайным образом задайте каждый из этих цветовых параметров командами:
rr1:= random(255)
gg1:=random(255)
bb1:=random(255)
8. Теперь можно запустить цикл движения в одном направлении (из центра в угол или обратно). Здесь удобнее всего использовать цикл for. В зависимости от того, хотите ли вы, чтобы кольцо «ударялось» о границу экрана или «вылетало» за экран, цикл должен меняться от 1 до (250 – диаметр кольца) или до (250 + диаметр кольца).
9. В цикле for:
• вначале каждый раз очищайте экран командой ClearWindow;
• задавайте раскраску кольца командой setpencolor(rgb(rr1,gg1,bb1));
• рассчитывайте положение кольца по осям Х и Y. Для этого текущее положение по Х уменьшайте на 1, по Y также уменьшайте на 1 (точнее, не на 1, а на величину приращения, определяемого направлением движения, заданного в п. 5);
• рисуйте кольцо командой circle(x,y,r);
• замедляйте движение командой sleep(5) (5 – параметр замедления; чем он больше, тем медленнее будет движение);
• для того чтобы не было видно моргания в результате использования команды clearwindow, нужно использовать команду redraw.
10. После окончания цикла for запишите команду изменения направления на противоположное, умножив старое направление на (–1).
11. И наконец, завершите внешний цикл repeat командой until keypressed.
1. Дан шаблон программы решения задачи. Дополните его – составьте программу.
program polyot_koltca; uses ___________________; var i, rr1, gg1,bb1, ii, xx1, yy1, r: integer; begin ________________________; ________________________; ________________________; xx1:= ______; {начальные координаты} yy1:= ______; r:= _____; _______________; ii:= __; {начальное направление движения} repeat rr1:= _______________; gg1:= _______________; bb1:= _______________; for i:= __ to _____ do begin _________________: ______________________; xx1:= ___________; yy1:= ___________; circle ______________; sleep(5); ______________; end; ii:=-ii; until ____________________; end.
2. Выполните программу. Если обнаружите ошибки, исправьте их.
3. Скриншот выполнения программы (текст программы должен быть виден):
Скриншот |
4. Поясните действие следующих команд.
setwindowsize(x,y) – _____________________________________________
___________________________________________________________________
lockdrawing – ____________________________________________________
___________________________________________________________________
hidecursor – _____________________________________________________
___________________________________________________________________
circle(x,y,r) – __________________________________________________
___________________________________________________________________
rgb(r,g,b) – _____________________________________________________
___________________________________________________________________
redraw – __________________________________________________________
___________________________________________________________________
Какие возможности анимации в языке Паскаль вы изучили?
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
__________________________________________________________________
_________________________________________________________________
Оценка учителя: ________