Анимация в паскаль авс

Анимация в паскаль авс

Выступление по исследователской работе

Скачать:

Вложение Размер
samo_vystuplenie.docx 152.2 КБ

Предварительный просмотр:

Здравствуйте, Уважаемые члены жюри и присутствующие здесь конкурсанты. Хотим вам представить нашу исследовательскую работу по теме Графические возможности системы программирования Паскаль АБЦ. Тема работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данный проект показывает, что можно создавать простые рисунки, анимацию не только в графических программах, таких как Paint, Adobe Photoshop, Corel Draw, но и в среде языка программирования PascalАВС.

Целью работы является разработка графического проекта в среде программирования PascalАВС.

Перед собой мы ставили следующие задачи:

1)Познакомиться с историей становления языка программирования PascalАВС.

2)Изучить основные понятия графики, функции и процедуры работы с графикой PascalАВС.

3) Освоить навыки создания графических изображений в среде программирования PascalАВС

Язык программирования Pascal был создан в 1968-1969 годах швейцарским учены Никлаусом Виртом. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа.

В настоящее время Pascal — один из наиболее известных языков программирования, который используется для обучения программированию в старших классах и на первых курсах вузов, и является базой для ряда других языков.

Pascal ABC разработан в 2002 году сотрудниками факультета математики, механики и компьютерных наук Южного федерального университета (Ростов-на-Дону, Россия) во главе со Станиславом Станиславовичем Михалковичем. Целью авторов было создание обучающей среды программирования, более современной, чем Borland Pascal и Turbo Pascal, более простой для изучения.

Язык Pascal является традиционным алгоритмическим языком. Правильная программа представляет собой формальную запись средствами языка некого алгоритма. Любая программа состоит из двух основных частей: описание последовательных действий и описание данных, которыми оперируют эти действия. Кроме того программа снабжена заголовком, который задает имя программы и завершается программа символом точки. Описание данных в программе предшествует описанию действий и должно содержать упоминание о всех объектах используемых в программе. Таким образом, общая структура программы выглядит следующим образом:

  • заголовок программы;
  • раздел описания переменных;
  • раздел действий;
  • точка.

Множество графических процедур и функций среды программирования Pascal собраны в модуле Graph . Для подключения библиотеки графических функций и процедур необходимо подключить модуль к вашей программе строкой Uses graph.

Читайте также:  Ferrox прошивка для ps3

Положение каждой точки изображения задано координатами Х и У. Координаты- целые числа, они задают номера колонки и строки и не зависят от физического размера экрана. Оси координат направлены следующим образом: горизонтальная ось Х направлена слева направо; вертикальная ось У направлена сверху вниз; верхний левый угол имеет координаты(0, 0).

Очевидно, что запись изображения требует хранения информации о положении множества точек, для каждой из которых должен быть задан цвет. Цветное изображение получается смешиванием трех основных цветов – красного, зеленого и синего. Такая модель представления цвета называется моделью RGB ( Red — Green — Blue )

Стандартный модуль GraphABC системы PascalABC содержит типы, константы, переменные, процедуры и функции, позволяющие создавать изображения в специально графическом окне.

Рассмотрим конкретные примеры программ, в которых реализованы графические возможности системы Паскаль АБЦ .

Задача 1. Нарисовать 4 неподвижные окружности и одну окружность которая будет проходить через остальные окружности и будет менять свой цвет.

program animation ; (заголовок программы, всегда пишется английскими буквами, может содержать цифры, пробел нельзя )

uses GraphABC ; ( подключаем графический модуль)

var i : integer ; ( описание переменной, слово integer показывает,что i – целое число,I – будет отвечать за изменяющуюся координату )

SetWindowSize ( 400 , 400 ); (установим размер окна, в котором появиться изображение)

LockDrawing ; (рисуем картинку в памяти компьютера не выводя промежуточный вариант сразу на экран)

//Движение от первой точки до второй

for i := 100 to 300 do (цикл с параметром)

SetBrushColor ( clWhite ); (установка цвета окружности)

Circle ( 100 , 100 , 20 ); ( окружность (1 и 2 координата центра, 3 радиус)

Circle ( 300 , 100 , 20 );

Circle ( 100 , 300 , 20 );

Circle ( 300 , 300 , 20 );

SetBrushColor ( clBlack ); (установка черного цвета)

Circle ( i , 100 , 20 );

//Движение от второй точки до третьей

for i := 100 to 300 do

Circle ( 100 , 100 , 20 );

Circle ( 300 , 100 , 20 );

Circle ( 100 , 300 , 20 );

Circle ( 300 , 300 , 20 );

Circle ( 300 , i , 20 );

//Движение от третьей точки до четвертой

for i := 300 downto 100 do

Circle ( 100 , 100 , 20 );

Circle ( 300 , 100 , 20 );

Circle ( 100 , 300 , 20 );

Читайте также:  Not found working rts перевод на русский

Circle ( 300 , 300 , 20 );

Circle ( i , 300 , 20 );

//Движение от четвертой точки до первой

for i := 300 downto 100 do

Circle ( 100 , 100 , 20 );

Circle ( 300 , 100 , 20 );

Circle ( 100 , 300 , 20 );

Circle ( 300 , 300 , 20 );

Circle ( 100 , i , 20 );

RedRaw ; (вызывает перерисовку всей картинки)

  1. Задача №2 Создание проезжающего грузовика

Uses GraphAbc; // подключим графическую библиотеку GraphAbc

SetWindowSize(1000,500); //установим размер окна

lockdrawing; (рисуем картинку в памяти компьютера не выводя промежуточный вариант сразу на экран)

repeat ( начинается цикл с постусловием)

clearwindow;( очищает графическое окно белым цветом)

SetPenColor(clRed);( устанавливает цвет пера, задаваемый параметром color.)

SetBrushColor(clRed);( устанавливает цвет кисти, задаваемый параметром color.

Rectangle(x,100,x+300,300);(задаем координаты прямоугольника с изменениями)

Circle(x+100,300,50); задаем координаты прямоугольника с изменениями)

sleep(50); (скорость движения рисунка)

until x>windowwidth (условие завершения анимации)

var xx, i: integer;

procedure Parovoz(x: integer);

line(x+400,300,x+361,329); (чертим линию между точками)

lineto(x+400,300); ( вычерчивает линию от последнего положения указателя до точки с координатами)

floodfill(x+399,303,clSilver); // закрашиваем замкнутую область серебрянным цветом

setbrushcolor(clSilver); (устанавливаем цвет кисти)

rectangle(x+470,260,x+510,310); (рисуем прямоугольники)

В этом уроке будет показано, как можно создать анимированное изображение с помощью модуля GraphABC.

В качестве примера создадим движение нескольких (примитивных) фигур по заданной траектории.

Без чего мы обойтись не сможем, не сможем мы обойтись без нескольких инструментов:

Процедура LockDrawing;

Рисование средствами PascalABC происходит очень медленно. Пока оно идет, картинка на экране успевает много раз обновиться. Отсюда мерцание. То есть, мы видим не окончательную картинку, а процесс ее рисования. Окончательную картинку в общем-то не видим — как только она построилась, мы ее тут же стираем и начинаем новый цикл рисования. Для борьбы с этим эффектом придумали двойную буферизацию. Идея в том, чтобы сначала построить картинку в памяти (не выводя на экран), а затем отобразить новый кадр на экране целиком, без промежуточных вариантов, где не хватает половины лучиков. Для этого в начале программы вызываем процедуру LockDrawing.

Процедура ClearWindow (color);

После каждой прохода по циклу очищает графическое окно указанным цветом, который передается в качестве параметра.

После этого все команды рисования будут создавать картинку в памяти (в так называемом вторичном буфере). Непосредственно на экране ничего рисоваться не будет. После того, как очередной кадр анимации полностью отрисован (то есть перед ClearWindow), нужно вызвать процедуру

Читайте также:  Onboard nic что это

Redraw;

Эта процедура вызовет перерисовку всей картины.

Нарисуем сначала четыре окружности.

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

Вот программа машинки
uses
GraphABC;

begin
floodfill(1, 1, cllightSkyBlue);
setwindowsize(1000, 1000);
SetPenColor(clBlack);
SetPenWidth(5);
line(440, 310, 375, 250);
line(0, 555, 1000, 555);
floodfill(1, 600, clGreen);
SetPenWidth(10);
setpencolor(clBlack);
rectangle(100, 400, 600, 500);
rectangle(200, 310, 500, 400);
floodfill(310, 450, clGreen );
circle(150, 500, 50);
circle(550, 500, 50);
setpencolor(clRed);
rectangle(100, 400, 160, 430);
floodfill(111, 411, clRed);
SetPenWidth(20);
setpencolor(clYellow);
circle(575, 425, 10);
setpencolor(clBlue);
SetPenWidth(10);
rectangle(225, 325, 325, 385);
rectangle(375, 325, 475, 385);
floodfill(236, 336, clBlue);
floodfill(386, 336, clBlue);
floodfill(216, 316, clGreen);
floodfill(150, 500, clGoldenrod);
floodfill(550, 500, clGoldenrod);
SetPenColor(clBlack);
SetPenWidth(5);
line(440, 310, 375, 250);
line(0, 555, 1000, 555);
floodfill(1, 600, clGreen);
end.

Нужно чтобы она двигалась без мерцаний

//for x := 0 to 500 do begin
while (x <> 1000) do begin
lockdrawing;
floodfill(1+x, 1, cllightSkyBlue);
setwindowsize(1000, 700);
SetPenColor(clBlack);
SetPenWidth(5);
line(440+x, 310, 375+x, 250); // ещё одна антена
line(0, 555, 1000, 555);
floodfill(1, 600, clGreen);
SetPenWidth(10);
setpencolor(clBlack);
//rectangle(100, 400, 600, 500);
rectangle(100+x, 400, 600+x, 500); // кузов
rectangle(200+x, 310, 500+x, 400); // кабина
floodfill(310+x, 450, clGreen );
circle(150+x, 500, 50); // левое колесо
circle(550+x, 500, 50); // правое колесо
setpencolor(clRed);
rectangle(100+x, 400, 160+x, 430); // задняя фара
floodfill(111+x, 411, clRed); // цвет задней фары
SetPenWidth(20);
setpencolor(clYellow);
circle(575+x, 425, 10); // передняя фара
setpencolor(clBlue);
SetPenWidth(10);
rectangle(225+x, 325, 325+x, 385); // левое окно
rectangle(375+x, 325, 475+x, 385); // правое окно
floodfill(236+x, 336, clBlue); // цвет правого окна
floodfill(386+x, 336, clBlue); // цвет левого окна
floodfill(216+x, 316, clGreen); // цвет кабины
floodfill(150+x, 500, clGoldenrod); // цвет левого колеса
floodfill(550+x, 500, clGoldenrod); // цвет правого колеса
SetPenColor(clBlack);
SetPenWidth(5);
line(440+x, 310, 375+x, 250); // антена
line(0+x, 555, 1000+x, 555); // непонятно что
floodfill(1, 600, clGreen); // цвет грунта

Ссылка на основную публикацию
Андроид панель быстрого доступа
Доброго времени! Сегодня будем проводить настройку быстрой панели ( шторки ) на своем устройстве! Большинство пользователей не знают, что такое...
Windows app cert kit что это
Используйте комплект сертификации приложений для Windows, чтобы протестировать приложение перед его отправкой в Microsoft Store или проверить существующие классические приложения....
Windows defender exe что это
Windows Defender Основное окно программы Защитник Windows Тип Антивирусная программа Операционная система Windows 2000, XP, Server 2003, Windows Vista, Windows...
Андроид не видит контакты на телефоне
Иногда встречается неприятная ситуация, когда телефон не отображает список людей, сохранённый на SIM-карте. Их, как известно, можно сохранять как в...
Adblock detector