Графические возможности Паскаль

Автор работы: Пользователь скрыл имя, 18 Февраля 2012 в 13:28, курсовая работа

Краткое описание

Целью курсовой работы является разработка «мультипликационного» графического проекта в среде программирования Паскаль. Графические возможности Паскаль будут реализованы на примере персонажа «ЦЫПА».
Курсовая работа состоит из двух основных разделов:
1. Графические возможности язык Паскаль;
2. Разработка графического проекта «ЦЫПА».

Содержание работы

ВВЕДЕНИЕ…..………………………………………………………………….
1. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПАСКАЛЬ …………………
1.1 История языка …………………………………………………………….
1.2 Основные понятия графики ………………………………………….......
1.3 Работа с графикой в Паскале …………………………………………….
2. РАЗРАБОТКА ГРАФИЧЕСКОГО ПРОЕКТА ……………………………..
2.1 Этапы создания проекта ………………………………….........................
2.2 Реализация проекта на экране…………………………………………….
ЗАКЛЮЧЕНИЕ……………………………………………………………………
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ..……………………………
ПРИЛОЖЕНИЕ…………………………………………………………………....

Содержимое работы - 1 файл

Министерство образования и науки Республики Казахстан.doc

— 294.50 Кб (Скачать файл)

 аналогично второй «глаз»:

ellipse(255,170,0,180,11,54);

ellipse(255,145,0,180,10,14);       {glaz 2}

ellipse(258,167,0,180,4,13);

ellipse(255,172,0,180,14,5);

   Как видно в отрывке  основной программы  координаты меняются только по оси X. Это говорит о том что «глаза» находятся на одном уровне.

   Далее рассмотрим «губки» персонажа. Можно  было использовать такую команду  как Circle, но тогда «губки» получился круглые, а не овальной формы. Так что рекомендуется взять команду Ellipse:

ellipse(230,187,0,360,10,5);

ellipse(215,187,305,45,4,6);   {rot}

ellipse(245,187,120,255,4,6);

line(220,187,240,187);

   Теперь начинается завершающая стадия рисования «головы» персонажа, т.е. изображаются «волосы», «брови» и «ресницы»:

{irokes}т.е. волосы

line(230,70,225,45);

line(235,60,230,35);

line(240,60,240,40);

{browi}

ellipse(255,115,10,80,20,20);

ellipse(205,115,100,170,20,20);

{resniz}

ellipse(251,108,270,30,5,10);

ellipse(256,106,270,30,5,10);

ellipse(260,110,270,30,5,10);

ellipse(209,108,150,270,5,10);

ellipse(204,106,150,270,5,10);

ellipse(200,110,150,270,5,10);

     Далее следует выполнить рисование «туловища». Здесь используется не только процедура ellipse, но и line.

   Процедура Line (x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами начало координаты задаваемой линии (x1, y1) и конец координаты (x2, y2).

{tulovish}

ellipse(245,210,90,150,10,13);

ellipse(207,206,0,45,10,13);

line(218,205,205,235);

line(235,205,250,235);

ellipse(245,237,320,50,6,8);

ellipse(210,237,100,260,6,8);

line(207,245,220,215);

line(248,245,235,215);

ellipse(227,245,180,360,20,20);

ellipse(248,250,240,90,5,5);

ellipse(207,250,90,300,5,5);

   Заключительный  элемент персонажа – «ноги». Здесь важно подобрать правильный угол:

line(230,263,230,296);

line(235,263,235,285);

line(235,285,287,283);

ellipse(288,293,290,90,15,10);

ellipse(283,303,340,90,10,10);

ellipse(265,298,175,325,35,14);

setfillstyle(1,b);

floodfill(285,290,6);

line(225,263,225,298);

line(220,263,220,285);

line(220,285,165,275);               {nogi}

ellipse(165,285,65,240,15,10);

ellipse(170,295,90,200,13,10);

ellipse(192,298,180,10,33,11);

setfillstyle(1,b);

floodfill(165,285,6);

   По завершению изображения контуров персонажа необходимо  просмотреть соединены ли все линии между собой. Это потребуется для того, чтобы процедура заливки не заполнила всю область экрана, закрасив другие объекты рисунка. Для закрашивания фигур в среде программирования Паскаль применяются команды заливки: SetColor (размещаются перед объектом), SetFillStyle, FloodFill (размещаются после объекта последовательно).

   SetFillStyle (p, c) – устанавливает текущий стиль p и цвет c (для "закрашенных" фигур).

   FloodFill (x, y, b) – закрашивает замкнутую область с внутренней точкой (x,y) и цветом контура b то есть до цвета SetColor (c).

   Чтобы залить нужный объект потребуется указать координаты объекта в команде FloodFill, но перед этой командой выбирать стиль и цвет заливки при помощи команды SetFillStyle и учесть, что команды располагаются после задаваемого объекта.

   Далее рассмотрена заливка, напримере «глаза» персонажа:

ellipse(205,170,0,180,11,54);     {glaz 1}

ellipse(205,145,0,180,10,14);

ellipse(203,167,0,180,4,13);

ellipse(205,172,0,180,14,5);

setfillstyle(1,10);

floodfill(205,145,6);

setfillstyle(1,7);

floodfill(205,160,6);

setfillstyle(1,15);

floodfill(205,130,6); 

   Как видно по отрывку программы,  написали соответствующие координаты объект «глаза» три раза. Тем самым объект «глаз» закрасился, тремя различными цветами и заливка не заполнила всю область объекта, так как все линии были соединены между собой. Команду SetColor необходимо указать перед командами, описывающими сам объект, то есть перед «головой» персонажа чтобы не повторять эту команду каждый раз перед закрашиванием объекта. Этим же способом аналогично  закрашен и второй «глаз»  персонажа, только изменены некоторые координаты в процедуре floodfill. При помощи процедур заливки заполнено все «туловище» персонажа жёлтым цветом, а «ноги» оранжевым.

   Таким образом, завершено построение персонажа, но композиция не полная. Для дополнения композиции выполнена смена изображений: сначала персонаж находится ночью, следом картинка будет меняться на день. Дополнения к персонажу днем и ночью составят такие объекты изображения как, например «трава», «куст», «цветы», «звезды», «птицы» и т.д.

   Для более удобной организации создания проекта с точки зрения программирования были использованы подпрограммы «PROCEDURE».

   Подпрограмма – самостоятельный фрагмент программы, реализующий определенный алгоритм и допускающий многократное обращение к нему из различных частей программы.  В языке Паскаль существует большой набор стандартных (библиотечных) процедур и функций. Процедуры и функции содержатся в стандартных модулях  и   подключаются к любой программе либо с помощью предложения  Uses (например: CRT, GRAPH и др.)  либо автоматически  (например: System).

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

   Структура процедуры аналогична структуре программы и состоит из заголовка и блока (тела процедуры).    

PROCEDURE <имя> (<сп. форм. пар.>);     

<блок>

где:

      PROCEDURE – зарезервированное слово процедура;

     <имя>  – имя процедуры, является уникальным, выбирается по общим правилам, желательно чтобы оно отражало смысл процедуры;

     <сп. форм. пар.>  – список формальных параметров т.е. список имен обозначающих  исходные данные и результат работы процедуры с указанием их типов;

     <блок>  – тело процедуры, представляющее разделы описаний и раздел операторов,  представляющий составной оператор (совокупность 
операторов,  заключенных в операторные скобки BEGIN END). 
Разделы описаний процедуры содержат те же разделы что и основная программа, в том числе описания подпрограмм низшего уровня (вложенных).

   Далее с помощью процедур были созданы,  такие элементы рисунка как «трава», «ноги», «куст», сам персонаж и т.д.

      Так как персонаж появляется сначала  в «ночное время» начинать необходимо с дополнений к нему различными подпрограммами, которые будут отображать предметы изображения как «куст», «цветы», «луна», «звезды», «озеро» и «ноги».

      Первоначально было выполнена процедура «ноги», так как появление этого объекта осуществляется дважды.

PROCEDURE w(b:integer);

begin

line(230,263,230,296);

line(235,263,235,285);

line(235,285,287,283);

ellipse(288,293,290,90,15,10);

ellipse(283,303,340,90,10,10);

ellipse(265,298,175,325,35,14);

setfillstyle(1,b);

floodfill(285,290,6);

line(225,263,225,298);

line(220,263,220,285);

line(220,285,165,275);

{nogi}

ellipse(165,285,65,240,15,10);

ellipse(170,295,90,200,13,10);  ellipse(192,298,180,10,33,11);

setfillstyle(1,b);

floodfill(165,285,6);

end;

   Как видно по структуре процедуры  она похожа на основную программу, где  есть начало и конец. В процедуре указано имя и формальный параметр b, взятый в качестве цвета заливки «ног» и процедуры создания самого объекта. Затем добавляются остальные процедуры, которые понадобятся при создании ночного фона для мультипликационного персонажа.

   Самой  сложной задачей в данной курсовой работе является создание персонажа второй раз. В этой процедуре персонаж будет появляться в дневном свете. Здесь в точности будут набраны такие же команды с координатами, как и в основной программе. Добавляем в эту же процедуру вложенные процедуры, такие как создание «травы», точнее «цветов», «птиц», «ног» и «кустов». В результате все процедуры будут находиться в одной процедуре. Это позволит вызвать целиком картинку, когда персонаж находится «в дневное время».

   Самой простой процедурой в программе является «птица»:

PROCEDURE m(x,y:integer);

begin

setcolor(8);

ellipse(x+20,y+20,0,150,10,5);

ellipse(x+40,y+20,0,150,10,5);

end;

   Как видно в этой процедуре: m – имя процедуры; (x, y: integer) – список формальных параметров; и далее следует основной блок процедуры, где записаны сами команды по созданию «птицы». Вызов этих процедур будут осуществляться в основном блоке программы. Пример вызова процедуры птиц:

m(300,50);

m(100,45);

m(40,60);

   Пример процедуры создания «куста»:

PROCEDURE l(x,y:integer);

begin

setcolor(8);

line(x,y+10,x+80,y+10);

ellipse(x,y,30,270,5,10);

ellipse(x+10,y-10,30,270,5,10);

ellipse(x+20,y-20,30,270,5,10);

ellipse(x+30,y-30,30,270,5,10);         

{kust}

ellipse(x+40,y-35,0,180,6,15);

ellipse(x+80,y,270,120,6,10);

ellipse(x+70,y-10,270,120,6,10);

ellipse(x+60,y-20,270,120,6,10);

ellipse(x+50,y-30,270,120,6,10);

setfillstyle(6,2);

floodfill(x+30,y-30,8);

end;

   Как видно из вызова процедур, в каждой из них меняются координаты. Это позволяет «птицам» быть в разных местах на экране. Остальные процедуры которые встречаются в программе сделаны аналогично по примеру создания процедур, только в блоке процедуры набирали соответствующие команды которые потребовались при создании того или иного объекта изображения.

   В итоге, по созданию графической композиции мультипликационного персонажа «ЦЫПА» получилось две композиции изображения «Ночное время» и «Дневное время». Код самой программы по созданию этих композиций указан в разделе «Приложение».  
 

   2.2 Реализация проекта на экране 

   После выполнения всех указанных в предыдущем разделе рекомендации по созданию программы была полностью реализована задуманная «мультипликационная картинка».

   Получились такие полноценные рисунки как «Ночное время» (рис. 2) и  «Дневное время» (рис. 3). На рисунке «Ночное время» видно самого мультипликационного персонажа на фоне «звезд», «цветов», «кустов», «луны» и «озера».  На рисунке «Дневное время» мультипликационный персонаж уже изображен на фоне другой композиции: на фоне «гор», «кустов», «цветов».  

     Рисунок 2. «Ночное время» 

     Рисунок 3. «Дневное время» 
 

Информация о работе Графические возможности Паскаль