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



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






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

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

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

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


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

image Задача 1 Физкультурники. На поле расположите семь физкультурников. Все они произвольным образом должны выполнять упражнения: смену четырех разных положений. Последовательность движений – случайная для каждого физкультурника. Упражнения выполняются до нажатия любой клавиши. Четыре положения физкультурников заданы в файлах a1.bmp, a2.bmp, a3.bmp, a4.bmp (о месте размещения файлов спросите у учителя).

Алгоритм решения задачи

1. Подключите в разделе uses графический блок graphabc и текстовый блок crt (так как команда управления клавиатурой находится в этом блоке).

2. Названия файлов запомните в массиве (m) из четырех элементов (так как у вас четыре картинки), но ввиду того, что в команде имя будет переведено в число, массив будет целочисленный.

3. Вначале в цикле for запомните имена всех четырех файлов в массиве.

Имена файлов картинок – a1.bmp, a2.bmp, a3.bmp, a4.bmp.

Используйте команду m[i]:= LoadPicture('a'+intToStr(i)+'.bmp'),

где: 'a' – буква в имени файла;

i – счетчик цикла for;

intToStr(i) – команда перевода целого числа в строковую переменную;

'.bmp' – расширение файла картинок.

4. Задайте начальное положение физкультурников по осям Х и Y.

5. Для правильного расположения картинок определите их размеры – ширину и высоту (на самом деле, высота здесь, в общем-то, не нужна) командами:

h:= PictureHeight(m[1])

w:= PictureWidth(m[1])

(берем за основу первую картинку, так как все они имеют одинаковые размеры).

6. Теперь, когда все начальные значения заданы, создайте большой цикл, который закончится, только если пользователь нажмет какую-нибудь клавишу. Здесь удобнее использовать цикл repeat … until, в конце которого проверять, была ли нажата какая-нибудь клавиша, и если была, то закончить внешний цикл.

7. Внутри большого цикла создайте цикл для всех семи физкультурников. Здесь удобнее использовать цикл for с параметром, изменяющимся от 1 до 7.

8. В цикле for выводите картинки командой:

DrawPicture (m[Random(4)+1], x+i*w, y).

Здесь картинки выводятся случайным образом, а к Random(4) прибавляется единица, так как Random генерирует числа, начиная с 0, а в именах картинок числа начинаются с единицы.

x+i*w – к начальному положению по оси Х прибавляется ширина картинки (w), умноженная на ее номер.

у – положение картинок по оси Y.

9. После выполнения движения всеми семью физкультурниками сделайте задержку командой sleep(500) (500 – параметр замедления. Чем он больше, тем медленнее будет движение).

10. И наконец, завершите внешний цикл repeat командой until keypressed. Эта команда определяет, была ли нажата какая-нибудь клавиша.

1. Дан шаблон программы решения задачи. Дополните его – составьте программу.

program fiskulturniki;
uses __________________;
var
   m: __________________;
   x, y, h, w, i: integer;
begin
  for i:=1 to 4 do
    m[i] := _________________________;
  x:=10;
  y:=10;
  h:= _________________________;
  w:= _________________________;
  repeat
    for i:=1 to 7 do
      ___________________________;
    __________________;
  until _____________________;
end.

2. Выполните программу. Если обнаружите ошибки, исправьте их.

3. Скриншот выполнения программы (текст программы должен быть виден):

 Скриншот 

4. Поясните действие следующих команд.

h := PictureHeight (…) – __________________________________________

___________________________________________________________________

w := PictureWidth (…) – __________________________________________

___________________________________________________________________

intToStr (х) – ____________________________________________________

___________________________________________________________________

sleep (t) – ________________________________________________________

___________________________________________________________________

a := LoadPicture('…') – ___________________________________________

___________________________________________________________________

DrawPicture (имя, x, y) – _________________________________________

___________________________________________________________________

keypressed – _______________________________________________________

___________________________________________________________________

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







Наверх