Похожие презентации:
лобароторная_№5b_Анимация_в_Паскале_ABC (1)
1. Анимация в PascalABC.NET
Лабораторнаяработа№ 5
АНИМАЦИЯ В PASCALABC.NET
Дисциплина:
«Основы алгоритмизации и программирования.»
Преподаватель: Шадрин Валерий Георгиевич
2.
Порядок выполнения лабораторной работы.1. Открыть рабочею папку Ваших работ на рабочем столе :
2. Скачать из папки преподавателя работу:
«лабораторная работа №5b»
с методическим материалом, с заданием и примерами для
выполнения лабораторной работы.
Sol_Pascal
группа
Фамилия
3. Изучить методический материал и задание для
выполнения Практической работы и Лабораторной
работы
4. Выполнить вначале практическое задание, а затем задание
для лабораторной работы
Сохранить все результаты в созданной Вами папке :
5. Выполнить программы:
1. Звездное небо,
2. Движение автомобиля,
3. Движение окружности
4. Движение прямоугольника.
5. Задание по варианту лабораторной работы.
Sol_Pascal
группа
Фамилия
2
3.
Алгоритм анимацииДля эффекта передвижения на экране в программе паскаль, необходимо
рисовать
графический объект после паузы стирать его и рисовать с новыми
координатами.
Общая структура программы для анимации:
for i:=1 to n do
begin
1. нарисовать объект,
2. подождать какое-то время с помощью команды sleep(время
паузы);
3. очистить экран
4. изменить координаты объекта согласно направлению
движения и его скорости
end;
5. рисуем конечное положение объекта
3
4.
Программа «Звездное небо»uses graphABC;
var x,y,i:integer;
begin
randomize;
clearwindow(clBlack);
for i:=1 to 500 do
begin
x:=1+random(windowwidth-1);
y:=1+random(windowheight-1);
setpencolor(clWhite);
setbrushcolor(clWhite);
circle(x,y,3);
sleep(10);
end;
end.
4
5.
Program Zvez_Nebo1;Program nebo1;
uses Graphabc;
Var x,y,z,k:integer;
begin putpixel(100,200,ClRed);
// рисуется созвездие большая медведица
putpixel(150,130,ClRed);
putpixel(230,130,ClRed);
putpixel(270,120,ClRed);
putpixel(360,80,ClRed);
putpixel(370,190,ClRed);
putpixel(320,200,ClRed);
Randomize;
For k:=1 to 400 do Begin // рисуем разноцветные случайные
точки
x:=random(640);
y:=random(480);
z:=random(15);
putpixel(x,y,ClRed);
end;
end.
Программа
«Звездное
небо и Большая
медведица»
5
6.
Program ZvezdnoeN2;uses Graphabc;
Var x,y,z,k:integer;
begin // рисуется созвездие большая медведица —
7 красных звезд
setbrushcolor(clRed);Randomize;
circle(100,200,10);
circle (150,130,10);
circle(230,130,10);
circle(270,120,10);
circle(360,80,10);
circle(370,190,10);
circle(320,200,10);
sleep(10);
For k:=1 to 400 do Begin
x:=random(640);
y:=random(480);
z:=random(15);
circle(x,y,2);
sleep(10);
end;
Программа «Звездное
небо и Большая
медведица».
Звезды, входящие в
созвездие можно
сделать
крупнее, заменить
процедуру putpixel на
circle!
6
7.
Структура программы на паскаль длядвижения сложного объекта:
Для перемещения более сложного объекта необходимо
создать
процедуру рисования объекта, в которую будут передаваться
координаты объекта:
for i:=1 to n do
begin
1. вызвать процедуру рисования объекта с координатами x и y
2. подождать какое-то время с помощью команды sleep
3. очистить экран
4. изменить координаты объекта согласно направлению движения
и его скорости
x=x+vx;
y=y+vy;
end;
5. вызвать процедуру рисования объекта с координатами x и y
7
8.
Программа для передвижения автомобиля по экрануПроцедура, которая рисует
изображение автомобиля по
координатам:
procedure car (x, y : integer);
begin
rectangle (x,y,x+100,y+40);
floodfill (x+1, y+1, clRed);
circle (x+20,y+40,15);
floodfill (x+20, y+40, clGray);
circle (x+60,y+40, 15);
floodfill (x+60, y+40, clGray);
rectangle (x+20, y-30, x+70, y);
floodfill(x+22,y-2, clRed);
end;
8
9.
В теле программы создаются начальные координаты искорость
x :=100;
y :=200;
v :=2;
В цикле for выполняем алгоритм анимации
for i:=1 To 50 do
begin
SetPenColor(clBlack);
car(x,y);
sleep(10);
clearwindow();
x := x+v;
end;
После цикла for отрисовываем конечное положение
автомобиля.
car(x,y);
9
10.
Полный текст программы для передвижения автомобиля поэкрану
Program Mash;
uses GraphABC;
var i,x,y, v : integer;
procedure car (x, y : integer);
begin
rectangle (x,y,x+100,y+40);
floodfill (x+1, y+1, clRed);
circle (x+20,y+40,15);
floodfill (x+20, y+40, clGray);
circle (x+60,y+40, 15);
floodfill (x+60, y+40, clGray);
rectangle (x+20, y-30, x+70, y);
floodfill(x+22,y-2, clRed);
end;
begin
setWindowSize(500, 500);
clearwindow(clBlack);
x :=100;
y :=200;
v :=2;
for i:=1 To 50 do begin
SetPenColor(clBlack);
car(x,y);
sleep(10);
clearwindow();
x := x+v;end;
car(x,y);
end.
10
11.
Практическая работаЗадание 1: Выполнить
анимацию движения квадрата
по следующей траектории:
Задание 2: Создать проезжающий
грузовик
11
12.
Пример программы для создания анимации по заданной траекторииprogram MovingVCircle;
begin
uses GraphABC;
SetWindowSize(800,600); //устанавливаем
размер окна
const
// Начальная позиция
//Рисуем круг изначально
startX=100;
x:=StartX;
startY=100;
y:=StartY;
v=1;
SetPenColor(clBlack);
var
Circle(x,y,20);
x,y,i,j,k:integer;
Движение окружности
по заданной траектории
//ожидаем нажатие клавиши перед началом
движения
Writeln ('Нажмите ENTER для начала
движения');
ReadLn ();
12
13.
// перемещение в правоfor i:=startX to StartX+500 do begin
ClearWindow();
x:=i+v;
SetPenColor(clBlack);
Circle(x,y,20);
Line(StartX,StartY,StartX+300,StartY);
Движение окружности
по заданной траектории
Sleep(10); //Пауза для плавности анимации
end;
//Перемещение вниз
for j:=StartY to StartY+200 do begin
ClearWindow();
y:=j;
Circle(x,y,20);
Sleep(10);
end;
13
14.
//Перемещение в левоДвижение окружности
по заданной траектории
for k:=x downto startX do begin
ClearWindow();
x:=k;
Circle(x,y,20);
Sleep(10);
end;
//Возращение в исходное положение
вертикально
for i:=y downto StartY do begin
ClearWindow();
y:=i;
Circle(x,y,20);
Sleep(10);
end;
// Движение по диагонали
for i:=startX to StartX+200 do begin
ClearWindow();
y:=i;
x:=i;
Circle(x,y,20);
Sleep(10);
end;
end.
14
15.
Движение квадрата по заданной траекторииProgram MovingSquare4;
//Начальная позиция квадрата
uses GraphABC;
x:=0;
const
y:=Height div 2;
//Размеры окна графики
repeat
Width=500;
Height=500;
var x,y:integer;
begin
SetWindowSize(Width,Height);
//Устанавливаем размер окна
ClearWindow(); //очищаем экран перед каждым
обновлением кадра
SetbrushColor(clGreen);
Rectangle(x,y,x+20,y+20); //рисуем
маленький заполненный квадрат
// размером 20*20 пикселей
15
16.
if x<=Width div 2 then begininc(x); //движение вправо вверх по
диагонали
Dec(y);
end else begin
Inc(x); //движимся дальше справа-вниз
по диагонали
Движение квадрата по заданной
траектории.
Inc(y);
end;
Sleep(10); //задерживаем выполнение
программы на 10 миллисекунд для плавности
движения
until (x>=Width-50 ) or ( y>=Height-50);
//продолжаем пока квадрат не достигнет края
экрана
Readln()
End.
16
17.
Задание для лабораторнойработы.
Создать код для траектории
движения объекта.
17
18.
Задание длялабораторной
работы.
Создать код для
траектории движения
объекта.
18
19.
Задание для лабораторнойработы.
Создать код для траектории
движения объекта.
19
Программирование