Проект «Анимация» на языке объектно-ориентированного программирования Visual Basic
Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 1
Лабораторная работа № 14. Шаг 2. Решаем задачи на Паскале. Задача 2
Шаг 2. Решаем задачи на Паскале
Задача 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 – _______________________________________________________
___________________________________________________________________