Планирование уроков на учебный год (по учебнику Н.Д. Угриновича)



Урок 30
Практическая работа 1.12
«Разработка проекта «Анимация»»




Содержание урока

Проект «Анимация» на языке объектно-ориентированного программирования Visual Basic

Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 1

Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 2


image Шаг 2. Решаем задачи на Паскале

image Задача 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 – __________________________________________________________

___________________________________________________________________

Выводы


Какие возможности анимации в языке Паскаль вы изучили?

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

__________________________________________________________________

_________________________________________________________________

Оценка учителя: ________

Cкачать материалы урока
image







Наверх