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

ЛИЧНЫЙ КАБИНЕТ 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

 

Повышение оригинальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение оригинальности любого файла в формате MS Word. После такого повышения оригинальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, РУКОНТЕКСТ, etxt.ru. Программа «StudentHelp» работает по уникальной технологии так, что на внешний вид, файл с повышенной оригинальностью не отличается от исходного.

Результат поиска


Наименование:


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

Информация:

Тип работы: курсовая работа. Добавлен: 24.04.13. Год: 2012. Страниц: 36. Уникальность по antiplagiat.ru: < 30%

Описание (план):


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

Колледж Карагандинского государственного университета
имени академика Е.А. Букетова




Специальность: 1305000 - «Информационные системы (по областям применения)»


Дисциплина: «Программирование»





КУРСОВАЯ РАБОТА
на тему: «Графические возможности Паскаль»







                Выполнила: обучающаяся
              группы ИС-31
              Новикова Е. О.

                  Научный руководитель:
                  преподователь Гудз О. Д.









Караганда 2012

СОДЕРЖАНИЕ














ВВЕДЕНИЕ

В данной курсовой работе рассматривается тема «Графические возможности языка Паскаль». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, Adobe Photoshop, Corel Draw, но и в среде языка программирования Паскаль.
Целью курсовой работы является разработка «мультипликационного графического проекта в среде программирования Паскаль. Графические возможности Паскаль будут реализованы на примере персонажа «ЦЫПА».
Курсовая работа состоит из двух основных разделов:
      Графические возможности язык Паскаль;
      Разработка графического проекта «ЦЫПА».
В первом разделе описывается история языка Паскаль, основные понятия графики, работа с графикой в Паскале, описывается понятие «расширение», основные команды построения изображения, графические модули, дается основная структура программы.
Во втором разделе подробно описываются этапы создания «мультипликационного» персонажа «ЦЫПА», дается краткое изложение основных элементов рисунка и рекомендации к написанию программы в целом.
Текст созданной программы прикладываются в данной курсовой работе в разделе «Приложение».
Данная курсовая работа может выступать руководством по созданию графических изображений в среде языка Паскаль.





1. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПАСКАЛЬ

1.1 История языка

Язык программирования Pascal создан в 1973 году швейцарским ученым Николасом Виртом и был назван в честь выдающегося французского физика, математика и философа Блеза Паскаля (1623-1662), который являлся автором первой в мире вычислительной (суммирующей) машины (1641).
Язык первоначально создавался для целей обучения программированию вообще. По словам автора языка «… разработка языка Паскаль базировалась на двух принципиальных концепциях.
Первая состояла в том, чтобы изобрести язык, приспособленный к обучению программированию как систематической дисциплине, базирующейся на некоторых фундаментальных положениях, ясно и естественно отраженных в языке.
Вторая предполагала разработку конкретных представлений этого языка, которые были бы надежны и эффективны на современных ЭВМ».
Язык Паскаль является не только наилучшим языком обучения программированию, но и дает возможность осуществить простую реализацию его на современных ПЭВМ, использовать его как язык системного программирования, но и является базой для создания более мощных языков.
Широкой популярности Паскаль среди программистов способствовали следующие причины:
– благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно легким для обучения;
– язык программирования Паскаль отражает фундаментальные и наиболее важные концепции (идеи) алгоритмов в очевидной и легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы;
– язык Паскаль позволяет четко реализовывать идеи структурного проектирования и структурной организации данных;
– язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ и позволил реально перейти от методов отладки программ к системам автоматической проверки правильности программ;
– применение языка Паскаль значительно подняло «планку» надежности разрабатываемых программ за счет требований Паскаль к описанию используемых в программе переменных, проверки согласованности программы при компиляции без ее выполнения;
– использование в Паскаль простых и гибких структур управления: ветвлений циклов.


1.2 Основные понятия графики

Экраны цветных мониторов состоят из прямоугольной решетки точек (пикселей), светящихся разным цветом. Каждый цветной пиксель образован тремя более мелкими по площади участками красного, зеленого и синего цветов. При свечении этих участков с разной интенсивностью цвета смешиваются, создавая элементы изображения различных оттенков и яркости.
Расширение экрана – это количество точек (пикселей) на единицу длины. Чем это число выше, тем более мелкими являются сами пиксели, и, соответственно, более плотно они располагаются на плоскости, что и приводит к тому, что мы воспринимаем их как единое, цельное изображение. Из года в год разрешающая способность мониторов, принтеров, сканеров и т.п. растет.
Для использования графических возможностей языка Паскаль необходимо в блоке описания uses подключить графический модуль Graph. Модуль содержит набор графических функций и процедур, основные из них которые рассмотрены ниже.
Паскаль обладает достаточно разнообразными средствами для работы со стандартным VGA экраном (возможно также использование и других типов видеоадаптеров).
VGA адаптер имеет разрешение 640х480 пикселей (точка (0, 0) в левом верхнем углу экрана), 16 цветов.
Положение каждой точки изображения задано координатами X и Y . Координаты – целые числа, они задают номера колонки и строки и не зависят от физического размера экрана. Оси координат направлены следующим образом: горизонтальная ось X направлена слева направо; вертикальная ось Y направлена сверху вниз; верхний левый угол имеет координаты (0, 0).
Важное понятие в машинной графике графический примитив – совокупность пикселей, определяющая некоторую геометрическую фигуру. Наиболее распространенные примитивы – это точка, линия, прямоугольник, закрашенный прямоугольник, окружность и эллипс.
Растровые изображения обладают одним очень существенным недостатком: их трудно увеличивать или уменьшать, т.е. масштабировать. При уменьшении растрового изображения несколько соседних точек преобразуются в одну, поэтому теряется разборчивость мелких деталей. При увеличении – увеличивается размер каждой точки, поэтому появляется ступенчатый эффект. Кроме того, растровые изображения занимают много места в памяти. Чтобы избежать указанных проблем, изобрели так называемый векторный способ кодирования изображений.


1.3 Работа с графикой в Паскале

Множество графических процедур и функций среды программирования Pascal собраны в модуле Graph. Модуль это библиотека, которая содержит константы, описания типов данных, переменные и функции. Наиболее часто используются модули System, Dos, Graph, Crt и др. Процедуры и функции модуля System подключаются автоматически и обеспечивают управление выполнением программ, обработку строк, файлов, управление динамической памятью, производят математические расчеты и другие действия.
Для работы в графическом режиме существует обширная библиотека процедур и функций, находящихся в модуле Graph. Чтобы использовать стандартные модули, достаточно знать лишь один оператор:
USES модуль, ... ;
Этот оператор должен быть первым оператором в программе, в нем перечисляются все модули, используемые данной программой; в частности, чтобы работать с графикой, достаточно записать USES Graph. Для изучения всех возможностей модуля Graph, можно воспользоваться справочной службой среды Паскаль (TurboPascal или BorlandPascal).
Модуль Dos поддерживает большинство функций операционной системы и некоторые функции обработки файлов.
Модуль Crt содержит процедуры и функции управления текстовым экранным режимом, использования цветов, окон и звуков.
Модуль Graph обеспечивает работу в графическом видеорежиме.
Средства модуля Graph позволяют формировать на экране различные цветные изображения, которые могут выводиться как на весь экран, так и в предварительно созданные графические окна.
Для подключения библиотеки графических функций и процедур необходимо инициализировать графический режим.
InitGraph(var Driver, Mode: integer; Path:string);

Где:
Driver – переменная типа integer, определяющая тип графического драйвера;
Mode – переменная того же типа, задающая режим работы графического адаптера;
Path – выражение типа string, содержащее путь доступа к файлу драйвера.
Завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана процедура CloseGraph.
Любая программа, использующая графический режим, будет иметь одну и ту же структуру:
– определение графического драйвера;
– установка графического режима;
– инициализация графического режима;
– построения;
– закрытие графического режима.
Общая структура графической программы:
Uses crt, graph;
Var Gd, Gm: Integer;
begin
Gd: = Detect;
InitGraph (Gd, Gm, 'c: \bp\bgi');
...
{Здесь построение изображения}
...
ReadKey;
CloseGraph;
end.
Драйвер EGAVGA . BGI позволяет использовать 16 цветов. Каждому цвету присвоен код – целое число, которое используется процедурами и функциями.
Цвет выводимых в графическом режиме на экран линий и символов можно задать процедурой
SetColor (color: word );
Аргумент color – целое число от 0 до 15 или имя одной из приведенных ниже констант.


Таблица 1. Константы цветов

Установка цвета действует на линии и тексты, которые выводятся после ее вызова, но не меняет цвет линий и символов, выведенных на экран ранее. Таким образом, процедуру SetColor следует вызывать каждый раз перед выбором нового цвета. Если цвет не установлен, то используется белый цвет.
Чтобы установить цвет фона для всего экрана, используется процедура:
SetBkColor (color: word);
Если процедура установки цвета фона не вызвана, экран будет черным.

Основные процедуры:
PutPixel (x, y, c) – отображает на экране точку с координатами (x, y) и цветом c.
Line (x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами (x1, y1) и (x2, y2).
LineTo (x, y: integer) вычерчивает линию от последнего положения указателя до точки с координатами (x, y).
Circle (x, y: integer; r: word) вычерчивает окружность радиуса r с центром в точке с координатами (x, y).
Arc (x, y, ugol_ begin, ugol_ end, r: integer) вычерчивает дугу окружности радиуса r с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Отсчет углов ведется пгубкиив часовой стрелки. Значения угловых координат задается в градусах.
Ellips (x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает эллипс или дугу эллипса с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Параметры rx и ry определяют горизонтальный и вертикальный радиусы эллипса.
PieSlice (x, y: integer; ugol_ begin, ugol_ end, r: word) вычерчивает сектор окружности радиуса r с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.
Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle.
Sector (x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает сектор эллипса с центром в точке с координатами (x, y) и горизонтальным радиусом rx, вертикальным – ry. Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора. Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle.
Rectangle (x1, y1, x2, y2: integer) вычерчивает контур прямоугольника. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего.
Bar (x1, y1, x2, y2: integer) вычерчивает закрашенный прямоугольник. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего. Стиль и цвет заливки определяется процедурой SetFillStyle.
Bar3 D(x1, y1, x2, y2: integer; глубина: word; граница: boolean) вычерчивает параллелепипед. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего угла ближней грани. Параметр глубина задает расстояние между передней и задней гранями в пикселях. Параметр граница определяет, нужно ли вычерчивать верхнюю границу задней грани параллелепипеда. Стиль и цвет заливки ближней грани определяется процедурой SetFillStyle.
OutText (text: string) выводит строку символов text от текущей позиции указателя вывода и перемещает указатель в точку, расположенную за последним выведенным символом.
OutTextXY (x, y: integer; text: string) выводит строку символов text, начиная с точки с координатами (x, y), при этом указатель своего положения не меняет, т.е. остается в точке (x, y).
SetLineStyle (type, pattern, thick: word) устанавливает стиль вычерчиваемых линий. Здесь type, pattern, thick – соответственно тип, образец и толщина линии.
Тип линии может быть задан с помощью одной из следующих констант:
– SolidLn=0 (сплошная линия)
– DottedLn=1 (точечная линия)
– CenterLn=2 (штрихпунктирная линия)
– DashedLn=3 (пунктирная линия)
– UserBitLn=4 (узор определяет пользователь)
Параметр Pattern учитывается только для линий, вид которых определяется пользователем, т.е. если type=4. Во всех остальных случаях можно поставить любое значение типа word (но обязательно поставить, все-таки это параметр процедуры, значит должен быть).
Параметр thick может принимать одно из двух значений:
SetFillStyle (style, color: word) устанавливает стиль и цвет заливки (закрашивания) областей (Bar, Bar3 D, Sector и др.). В качестве параметра style используют одну из констант:
– EmptyFill=0 (заливка цветом фона);
– SolidFill=1 (сплошная заливка текущим цветом);
– LineFill=2 (горизонтальная штриховка);
– LtSlashFill=3 (штриховка под углом 45 ° влево тонкими линиями);
– SlashFill=4(штриховка под углом 45 ° влево утолщенными линиями);
– BkSlashFill=5 (штриховка под углом 45 ° вправо утолщенная);
– LtBkSlashFill=6 (штриховка под углом 45 ° вправо тонкая);
– HatchFill=7 (заполнение +++);
– XHatchFill=8 (заполнение под углом 45 ° редкой косой клеткой);
– InterleaveFill=9 (заполнение под углом 45 ° частой косой клеткой);
– WideDotFill=10 (заполнение редкими точками);
– CloseDotFill=11 (заполнение частыми точками);
– UserFill=12 (узор определяется пользователем).
FloodFill (x, y: integer; border: word) заполняет произвольную замкнутую фигуру, используя текущий стиль и цвет заполнения. Координаты точки (x, y) указывают, начиная с какой точки, будет производиться заливка. Если точка находится внутри замкнутой фигуры, то будет закрашена внутренняя область. Если фигура не замкнута, то заливка разольется по всему экрану. Параметр border указывает цвет граничной линии.
ClearDevise очищает графический экран, устанавливает указатель в левый верхний угол. Перед началом работы с графикой необходимо ее инициализировать, а по окончании – "закрыть". Все графические процедуры и функции находятся в модуле Graph, поэтому также необходимо его подключение.
2. РАЗРАБОТКА ГРАФИЧЕСКОГО ПРОЕКТА «ЦЫПА»

2.1 Этапы создания проекта


Графические возможности в паскаль были рассмотрены на примере мультипликационного персонажа «ЦЫПА».


Рисунок 1. Эскиз мультипликационного персонажа

Для более удобного расчета координат необходимо взять заранее подготовленный рисунок (рис. 1) и по его контурным линиям рассматривать, какие потребуется процедуры и координаты.
Прежде чем приступить к работе по созданию героя, необходимо подключить графический модуль языка Паскаль – GRAPH. Для этого нужно написать следующую команду:
initgraph(gd,gm, 'd:/distr/tp7&# 9;);
Чтобы нарисовать мультипликационного персонажа «ЦЫПА» потребуется многократное применение команды Ellipse, так как персонаж состоит из кривых, волнистых линий.
Как видно на макете рисунка можно разбить персонаж на несколько деталей, чтобы не запутаться при разработке программы. Далее необходимо разбить персонаж по частям. Полученные детали такие как: «голова», «глаза» правый и левый, «губки», «туловище», «волосы», «брови», «ресницы» рекомендуется выполнять последовательно. Начать программировать следует с самого сложного и большего по размеру объекта, чтобы потом просто дополнить рисунок оставшимися мелкими деталями.
Для создания «головы» персонажа и заливки контура линии необходимо записать:
setcolor(6);
ellipse(225,100,0,180,6 ,40);
ellipse(160,120,90,27 ,5,20);
ellipse(290,120,270,9 ,5,20);
line(160,140,187,180 ; {golova}
line(290,140,270,180 ;
ellipse(255,190,225,45, 0,13);
ellipse(200,190,135,32 ,19,13);
Для заливки используется команды SetColor, а для рисования линий Ellips:
– Ellipse (x, y, ba, ea, xr, yr) – рисует дугу эллипса с центром в (x, y), горизонтальным и вертикальным радиусом xr и yr, и начальным и конечным углом ba и ea.
– SetColor (c) – устанавливает цвет изображения (для линий) из перечня цветов в нашем случае взяли setcolor (6) оранжевый.
Все остальные линии, которые показаны на рисунке, изображаются аналогично, так же при помощи процедуры Ellipse, но с другими координатами. Некоторые части контура рисунка будут выполнены при помощи процедуры Line.
Изображение «глаз» следует выполнить при помощи процедуры Ellipse. И так сначала построим первый «глаз»:
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);
аналогично второй «глаз»:
ellipse(255,170,0,180, 1,54);
ellipse(255,145,0,180, 0,14); {glaz 2}
ellipse(258,167,0,180 4,13);
ellipse(255,172,0,180, 4,5);
Как видно в отрывке основной программы координаты меняются только по оси X. Это говорит о том что «глаза» находятся на одном уровне.
Далее рассмотрим «губки» персонажа. Можно было использовать такую команду как Circle, но тогда «губки» получился круглые, а не овальной формы. Так что рекомендуется взять команду Ellipse:
ellipse(230,187,0,360 10,5);
ellipse(215,187,305,4 ,4,6); {rot}
ellipse(245,187,120,2 5,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,2 ,20);
ellipse(205,115,100,170 20,20);
{resniz}
ellipse(251,108,270,3 ,5,10);
ellipse(256,106,270,3 ,5,10);
ellipse(260,110,270,30 5,10);
ellipse(209,108,150,2 0,5,10);
ellipse(204,106,150,2 0,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,15 ,10,13);
ellipse(207,206,0,45, 0,13);
line(218,205,205,235 ;
line(235,205,250,235 ;
ellipse(245,237,320,5 ,6,8);
ellipse(210,237,100,26 ,6,8);
line(207,245,220,215)
line(248,245,235,215 ;
ellipse(227,245,180,36 ,20,20);
ellipse(248,250,240,9 ,5,5);
ellipse(207,250,90,30 ,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,9 ,10,10);
ellipse(265,298,175,3 5,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,24 ,15,10);
ellipse(170,295,90,20 ,13,10);
ellipse(192,298,180,1 ,33,11);
setfillstyle(1,b);
floodfill(165,285,6);
По завершению изображения контуров персонажа необходимо просмотреть соединены ли все линии между собой. Это потребуется для того, чтобы процедура заливки не заполнила всю область экрана, закрасив другие объекты рисунка. Для закрашивания фигур в среде программирования Паскаль применяются команды заливки: SetColor (размещаются перед объектом), SetFillStyle, FloodFill (размещаются после объекта последовательно).
SetFillStyle (p, c) – устанавливает текущий стиль p и цвет c (для "закрашенных&quo ; фигур).
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,9 ,10,10);
ellipse(265,298,175,3 5,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,24 ,15,10);
ellipse(170,295,90,20 ,13,10); ellipse(192,298,180,1 ,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,1 0,10,5);
ellipse(x+40,y+20,0,1 0,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+1 );
ellipse(x,y,30,270,5, 0);
ellipse(x+10,y-10,30, 70,5,10);
ellipse(x+20,y-20,30, 70,5,10);
ellipse(x+30,y-30,30, 70,5,10);
{kust}
ellipse(x+40,y-35,0,1 0,6,15);
ellipse(x+80,y,270,12 ,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. «Дневное время»


ЗАКЛЮЧЕНИЕ

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













СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ














ПРИЛОЖЕНИЕ

Текст программы

program zipa;

uses Graph,crt;
var i,n,gd,x,y,c,b,gm,a integer;

PROCEDURE q;
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,9 ,10,10);
ellipse(265,298,175,3 5,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,24 ,15,10);
ellipse(170,295,90,20 ,13,10);
ellipse(192,298,180,1 ,33,11);
setfillstyle(1,b);
floodfill(165,285,6);
PROCEDURE m(x,y:integer);
begin
setcolor(8);
ellipse(x+20,y+20,0,1 0,10,5);
ellipse(x+40,y+20,0,1 0,10,5);
end;
PROCEDURE k(x,y:integer);
begin
setcolor(12);
circle(x+5,y-15,3); {zvetok}
circle(x+5,y-20,3);
circle(x+1,y-17,3);
circle(x+2,y-12,3);
circle(x+10,y-13,3);
circle(x+9,y-18,3);
circle(x+7,y-17,3);
circle(x+7,y-22,3);
circle(x-1,y-19,3);
circle(x+5,y-10,3);
circle(x+12,y-11,3);
circle(x+10,y-20,3);

setcolor(2);
ellipse(x+100,y+50,0,9 ,5,10);
ellipse(x+110,y+50,90,180,5,10);
line(x+105,y+40,x+10 ,y+35);

ellipse(x+300,y+50,0,9 ,5,10);
ellipse(x+310,y+50,90 180,5,10);
line(x+105,y+40,x+10 ,y+35); {trava}
ellipse(x,y,0,90,5,10 ;
ellipse(x+10,y,90,180 5,10);
line(x+5,y-10,x+5,y- 5);
end;
PROCEDURE l(x,y:integer);
begin
setcolor(8);
line(x,y+10,x+80,y+1 );
ellipse(x,y,30,270,5, 0);
ellipse(x+10,y-10,30, 70,5,10);
ellipse(x+20,y-20,30, 70,5,10);
ellipse(x+30,y-30,30, 70,5,10); {kust}
ellipse(x+40,y-35,0,1 0,6,15);
ellipse(x+80,y,270,12 ,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;
Begin
setcolor(3);
line(0,200,640,200);
setfillstyle(1,7);
floodfill(205,300,3);
setfillstyle(1,11);
floodfill(205,100,3);

{gora}
setcolor(3);
line(300,200,350,100);
line(350,100,420,200);
line(340,120,350,110)
line(350,110,370,130)
setfillstyle(2,6);
floodfill(350,150,3);
setfillstyle(6,15);
floodfill(350,105,3);

line(400,170,500,70);
line(500,70,600,200);
line(460,110,480,120)
line(480,120,500,105)
line(500,105,520,120)
line(520,120,530,110)
setfillstyle(2,6);
floodfill(480,130,3);
setfillstyle(6,15);
floodfill(480,100,3);

setcolor(3);
ellipse(630,200,30,155,50,50);
setfillstyle(1,14);
floodfill(630,190,3);
setcolor(12);
line(600,160,590,140)
line(610,155,605,135)
line(620,150,615,130 ;
line(630,150,628,130 ;
line(590,168,575,150 ;

l(50,250);
l(50,400);
l(400,330);
l(500,350);
l(10,350);
l(100,400);
l(350,370);

m(300,50);
m(100,45);
m(40,60);
m(140,20);
m(200,15);
m(420,35);
m(50,20);
m(500,35);
m(550,50);

for i:=1 to 10 do begin
k(i*45,480);
k(i*40,450);
k(i*60,250);
end;
k(150,350);
k(300,350);
k(380,320);
k(400,300);
k(500,350);
k(500,350);
k(450,400);
k(480,400);
k(450,450);
k(500,350);
k(250,400);
k(300,450);

setcolor(0);
ellipse(620,450,50,220 150,100);
ellipse(600,350,0,360, 0,10);
ellipse(570,355,0,360, 0,5);
ellipse(600,340,0,360, 0,5);
setfillstyle(1,0);
floodfill(570,355,0);
floodfill(570,357,0);
floodfill(600,350,0);
floodfill(600,352,0);
setfillstyle(1,15);
floodfill(600,342,0);
floodfill(600,339,0);
setfillstyle(1,1);
floodfill(620,440,0);

setcolor(6);
ellipse(225,100,0,180,6 ,40);
ellipse(160,120,90,27 ,5,20);
ellipse(290,120,270,9 ,5,20);
line(160,140,187,180 ; {golova}
line(290,140,270,180 ;
ellipse(255,190,225,45,20,13);
ellipse(200,190,135,32 ,19,13);

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);

ellip
и т.д.................


Скачать работу


Скачать работу с онлайн повышением оригинальности до 90% по antiplagiat.ru, etxt.ru


Смотреть полный текст работы бесплатно


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.