на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Побудова динамічної графіки
p align="left">Тут Pattern - вираз типу FillPatternType; встановлює зразок малюнка для Fill - UserFill в процедурі SetFillStyle; Color - колір заповнення.

Зразок малюнка задається у вигляді матриці з 8x8 пікселів і може бути представлений масивом з 8 байт наступного типу:

type

FillPatternType = array [1..8] Byte;

Кожний розряд будь-якого з цих байтів управляє світимістю пікселя, причому перший байт визначає 8 пікселів першого рядка на екрані, другий байт - 8 пікселів другого рядка і т.д.

Процедура GetFillPattern.

Повертає зразок заповнення, встановлений раніше процедурою SetFillPattern. Заголовок:

Procedure GetFillPattern(var Pattern: FillPatternType);

Тут Pattern - змінна типа FillPatternType, в якій повертається зразок заповнення.

Якщо програма не встановлювала зразок за допомогою процедури SetFillPattern, масив Pattern заповнюється байтами із значенням 255 ($FF).

Процедура GetFillSettings.

Повертає поточний стиль заповнення. Заголовок:

Procedure GetFillSettings(var Pattlnfo: FillSettingsType);

Тут Pattlnfo - змінна типа FillSettingsType, в якій повертається поточний стиль заповнення.

В модулі Graph визначений тип:

type

FillSettingsType = record

Pattern: Word; {Зразок}

Color : Word {Колір} 

end;

Поля Pattern і Color в цьому, записі мають те ж призначення, що і аналогічні параметри при зверненні до процедури SetFillStyle.

Процедура SetRGBPalette.

Встановлює колірну гамму при роботі з дисплеєм IBM 8514 і адаптером VGA. Заголовок:

Procedure SetRGBPalette(ColNum,RedVal, GreenVal,BlueVal:Integer);

Тут ColNum - номер кольору; RedVal, GreenVal, BlueVal - вирази типу Integer, що встановлюють інтенсивність відповідно червоній, зеленій і сині складових кольору.

Ця процедура може працювати тільки з дисплеєм IBM 8514, а також з адаптером VGA, що використовує відеопам'ять об'ємом 256 Кбайт. В першому випадку параметр ColNum задається числом в діапазоні 0...255, в другому - в діапазоні 0...15. Для установки інтенсивності використовуються 6 старших розрядів молодшого байта будь-якого з параметрів RedVal, GreenVal, BlueVal.

Процедура FloodFill.

Заповнює довільну замкнуту фігуру, використовуючи поточний стиль заповнення (узор і колір). Заголовок:

Procedure FloodFill(X,Y: Integer; Border: Word);

Тут X, Y- координати будь-якої точки всередині замкнутої фігури; Border - колір граничної лінії.

Якщо фігура незамкнута, заповнення «розіллється» по всьому екрану.

Слід врахувати, що реалізований в процедурі алгоритм проглядання меж замкнутої фігури не відрізняється досконалістю. Зокрема, якщо виводяться підряд два порожні рядки, заповнення припиняється. Така ситуація звичайно виникає при заповненні невеликих фігур з використанням типу LtSlashFill. У фірмовому керівництві по Турбо Паскалю рекомендується, по можливості, замість процедури FloodFill використовувати FillPoly (заповнення прямокутника).

Процедура Bar.

Заповнює прямокутну область екрану.

Заголовок: 

Procedure Bar(X1,Y1,X2,Y2: Integer);

Тут XJ...Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів закрашуваної області.

Процедура закрашує (але не обводить) прямокутник поточним зразком узору і поточним кольором, які встановлюються процедурою SetFillStyle.

Процедура Ваr3D.

Викреслює тривимірне зображення паралелепіпеда і закрашує його передню грань . Заголовок:

Procedure Ваr3D (X1,Y1,X2,Y2,Depth: Integer; Top: Boolean);

Тут X1... Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів передньої грані; Depth - третє вимірювання тривимірного зображення («глибина») в пікселях; Тор - спосіб зображення верхньої грані.

Якщо параметр Тор має значення True, верхня грань паралелепіпеда викреслюється, інакше - не викреслюється (цей варіант використовується для зображення поставлених один на одного паралелепіпедів). Як значення цього параметра може використовуватися одна з наступних констант, визначених в модулі Graph:

const

TopOn = True; 

TopOff = False;

При викреслюванні використовується поточний стиль ліній (SetLineStyle) і поточний колір (SetColor). Передня грань заливається поточним стилем заповнення (SetFillStyle).

Процедура звичайно застосовується при побудові стовпчикових діаграм. Слід врахувати, що паралелепіпед «прозорий», тобто за його незакрашеними гранями можуть бути видні інші елементи зображення.

Процедура Fill Poly.

Обводить лінією і закрашує замкнутий багатокутник.

Заголовок:

Procedure FillPoly(N: Word; var Coords);

Тут N - кількість вершин замкнутого багатокутника; Coords - змінна типа PointType, що містить координати вершин.

Координати вершин задаються парою значень типа Integer: перше визначає горизонтальну, друге - вертикальну координати. Для них можна використовувати наступний певний в модулі тип:

type

PointType = record

х, у : Integer 

end;

Стиль і колір лінії контура задаються процедурами SetLineStyle і SetColor, тип і колір заливки - процедурою SetFillStyle.

Процедура FillEllipse.

Обводить лінією і заповнює еліпс.

Заголовок:

Procedure FillEllipse(X,Y,RX,RY: Integer);

Тут X, У - координати центру; RX, RY- горизонтальний і вертикальний радіуси еліпса в пікселях.

Еліпс обводиться лінією, заданою процедурами SetLineStyle і SetColor, і заповнюється з використанням параметрів, встановлених процедурою SetFillStyle.

Процедура Sector.

Викреслює і заповнює еліпсний сектор.

Заголовок:

Procedure Sector(X,Y: Integer; BegA,EndA,RX,RY: Word);

Тут BegA, EndA - відповідно початковий і кінцевий кути еліпсного сектора. Решта параметрів обігу аналогічна параметрам процедури FillEllipse.

Процедура PieSlice.

Викреслює і заповнює сектор кола.

Заголовок: 

Procedure PieSlice(X,Y: Integer; BegA,EndA,R: Word);

На відміну від процедури Sector, указується лише один горизонтальний радіус R, решта параметрів аналогічна параметрам процедури Sector.

· Збереження і видача зображень

Функція ImageSize.

Повертає розмір пам'яті в байтах, необхідний для розміщення прямокутного фрагмента зображення.

Заголовок:

Function ImageSize(X1,Y1,X2,Y2: Integer): Word;

Тут X1... Y2 - координати лівого верхнього (X1, Y1) і правого нижнього (Х2, Y2) кутів фрагмента зображення.

Процедура Getlmage.

Поміщає в пам'ять копію прямокутного фрагмента зображення.

Заголовок:

Procedure Getlmage(X1,Y1,X2,Y2: Integer; var Buf)

Тут X1...Y2 - координати кутів фрагмента зображення; Buf - змінна або ділянка купи, куди буде поміщена копія відеопам'яті з фрагментом зображення.

Розмір Buf повинен бути не менше значення, що повертається функцією ImageSize з тими ж координатами X1....Y2.

Процедура Put Image.

Виводить в задане місце екрану копію фрагмента зображення, раніше поміщену в пам'ять процедурою Getlmage.

Заголовок:

Procedure Putlmage(X,Y: Integer; var Buf; Mode: Word);

Тут X,Y- координати лівого верхнього кута того місця на екрані, куди буде скопійований фрагмент зображення; Buf - змінна або ділянка купи, звідки береться зображення; Mode - спосіб копіювання.

Як бачимо, координати правого нижнього кута не указуються, оскільки вони повністю визначаються розмірами копії зображення, що знов виводиться на екран. Координати лівого верхнього кута можуть бути якими завгодно, тільки щоб копія, що виводиться, уміщалася в межах екрану (якщо копія не може розміститися на екрані, вона не виводиться і екран залишається без змін).

Параметр Mode визначає спосіб взаємодії знов розміщуваної копії із зображенням, що вже є на екрані. Взаємодія здійснюється шляхом вживання кодованих цим параметром логічних операцій до кожного біта копії і зображення. Для вказівки вживаної логічної операції можна використовувати одну з наступних заздалегідь визначених констант:

const

NormalPut= 0;{Заміна існуючого зображення на копію}

XorPut = 1;{Виняткове АБО}

OrPut = 2;{Об'єднувальне АБО}

AndPut = 3;{Логічне І} 

NotPut = 4;{Інверсія зображення}

Найбільш часто використовуються операції NormalPut, XORPut і NotPut. Перша з них просто стирає частину екрану і на це місце поміщає копію з пам'яті в тому вигляді, як вона там зберігається. Операція NotPut робить те ж саме, але копія виводиться в інверсному вигляді. Для монохромного режиму це означає заміну пікселів, що світяться, на темні і навпаки. В кольоровому режимі операція NotPut застосовується до коду кольору кожного пікселя. Наприклад, для White (код 15 або в двійковому вигляді 1111) ця операція дасть код 0000 = 0 = Black, для Red = 4 = 0100 одержимо 1011 = 11 = LightCyan і т.д. Операція XORPut, застосована до того ж місця екрану, звідки була одержана копія, зітре цю частину екрану. Якщо операцію застосувати двічі до однієї і тієї ж ділянки, вид зображення на екрані не зміниться. У такий спосіб можна досить просто переміщати зображення по екрану, створюючи ілюзію руху.  

· Виведення тексту

Описувані нижче стандартні процедури і функції підтримують виведення текстових повідомлень в графічному режимі. Це не одне і те ж, що використовування процедур Write або WriteLn. Річ у тому, що спеціально для графічного режиму розроблені процедури, що забезпечують виведення повідомлень різними шрифтами в горизонтальному або вертикальному напрямі, із зміною розмірів і т.д. Проте в стандартних шрифтах, розроблених для цих цілей фірмою Borland, відсутня кирилиця, що виключає виведення російськомовних повідомлень.

З другого боку, процедури Write і WriteLn після завантаження в пам'ять другої половини таблиці знакогенератора (а ця операція легко реалізується в адаптерах EGA і VGA) здатні виводити повідомлення з використанням національного алфавіту, але не володіють могутніми можливостями спеціальних процедур.

Нижче описуються стандартні засоби модуля Graph для виведення тексту.

Процедура OutText.

Виводить текстовий рядок, починаючи з поточним положенням покажчика. Заголовок:

Procedure OutText(Txt: String);

Тут Txt - рядок, що виводиться.

При горизонтальному напрямі висновку покажчик зміщується в кінець виведеного тексту, при вертикальному - не міняє свого положення. Рядок виводиться відповідно до встановленого стилю і вирівнювання. Якщо текст виходить за межі екрану, то при використовуванні штрихових шрифтів він відсікається, а у разі стандартного шрифту не виводиться.

Процедура OutTextXY.

Виводить рядок, починаючи із заданого місця.

Заголовок: 

Procedure OutTextXY (X,Y: Integer; Txt: String);

Тут X, У - координати точки виведення; Txt - рядок, що виводиться. Відрізняється від процедури OutText тільки координатами виведення. Покажчик не міняє свого положення.

Процедура SetTextStyle.

Встановлює стиль текстового висновку на графічний екран.

Заголовок:

Procedure SetTextStyle(Font,Direct,Size: Word);

Тут Font - код (номер) шрифту; Direct - код напряму; Size - код розміру шрифту.

Для вказівки коду шрифту можна використовувати наступні заздалегідь певні константи:

const

DefaultFont = 0;{Точковий шрифт 8x8}

TriplexFont = 1;{Потрійний шрифт TRIP.CHR} 

SmallFont = 2;{Зменшений шрифт LITT.CHR}

SansSerifFont = 3;{Прямий шрифт SANS.CHR}

GothicFont = 4;{Готичний шрифт GOTH.CHR}

Зазначу, що ці константи визначають всі шрифти для версій 4.0, 5.0, 5.5 і 6.0. У версії 7,0 набір шрифтів значно розширено, проте для нових шрифтів не передбачені відповідні мнемонічні константи. В цій версії крім перерахованих Ви можете при зверненні до SetTextStyle використовувати такі номери шрифтів:

Номер

Файл

Короткий опис

5

scri.chr

«рукописний» шрифт

6

simp.chr

одноштриховий шрифт типу Courier

7

tscr.chr

Красивий похилий шрифт типуTimes Italic

8

Icom.chr

Шрифт типу Times Roman

9

euro . chr

Шрифт типу Courier збільшеного розміру

10

bold.chr

Крупний двохштриховий шрифт

Шрифт DefaultFont входить в модуль Graph і доступний у будь-який момент. Це -единий матричний шрифт, тобто його символи створюються з матриць 8x8 пікселів. Вся решта шрифтів - векторна: їх елементи формуються як сукупність векторів (штрихів), що характеризуються напрямом і розміром. Векторні шрифти відрізняються більш образотворчими можливостями, але головна їх особливість полягає в легкості зміни розмірів без істотного погіршення якості зображення. Кожний з цих шрифтів розміщується в окремому дисковому файлі. Якщо Ви збираєтеся використовувати який-небудь векторний шрифт, відповідний файл повинен знаходитися у Вашому каталозі, інакше виклик цього шрифту ігнорується і підключається стандартний.

Помічу, що шрифт DefaultFont створюється графічним драйвером у момент ініціалізації графіки на підставі аналізу текстового шрифту. Тому, якщо Ваш ПК здатний виводити кирилицю в текстовому режимі, Ви зможете за допомогою цього шрифту виводити російськомовні повідомлення і в графічному режимі. В решті шрифтів ця можливість з'являється тільки після їх модифікації.

Для завдання напряму видачі тексту можна використовувати константи:

const

HorizDir = 0;{Зліва направо}

VertDir = 1;{Від низу до верху}

Як бачимо, стандартні процедури OutText і OutTextXY здатні виводити повідомлення лише в двох можливих напрямах - зліва направо або від низу до верху. Знаючи структуру векторних шрифтів, неважко побудувати власні процедури, здатні виводити повідомлення в будь-якому напрямі.

Кожний шрифт здатний десятиразово змінювати свої розміри. Розмір символів, що виводяться, кодується параметром Size, який може мати значення в діапазоні від 1 до 10 (точковий шрифт - в діапазоні від 1 до 32). Якщо значення параметра рівно 0. встановлюється розмір 1, якщо більше 10 - розмір 10. Мінімальний розмір шрифту. при якому ще виразно розрізняються всі його деталі, рівний 4 (для точкового шрифту - 1).

Процедура SetTextJustify.

Задає вирівнювання тексту, що виводиться, по відношенню до поточного положення покажчика або до заданих координат.

Заголовок:

Procedure SetTextJustify(Horiz,Vert: Word);

Тут Horiz - горизонтальне вирівнювання; Vert - вертикальне вирівнювання. Вирівнювання визначає як розміщуватиметься текст - лівіше або правіше вказаного місця, вище, нижче або по центру. Тут можна використовувати такі константи:

const

LeftText = 0;{Покажчик зліва від тексту}

CenterText= 1;{Симетрично зліва і справа, верху і знизу}

RightText = 2;{Покажчик праворуч від тексту}

BottomText= 0;{Покажчик знизу від тексту} 

TopText = 2;{Покажчик зверху від тексту}

Зверніть увагу на невдалі, з моєї точки зору, імена мнемонічних констант: якщо, наприклад, Ви задасте LeftText, що в перекладі означає «Лівий Текст», повідомлення буде розташовано праворуч від поточного положення покажчика (при висновку процедурою OutTextXY - праворуч від заданих координат). Також «навпаки» потрактує і решта констант.

Процедура SetUserCharSize.

Змінює розмір символів, що виводяться, відповідно до заданих пропорцій.

Заголовок:

Procedure SetUserCharSize(XI,X2,Yl,Y2: Word);

Тут X1...Y2 - вирази типа Word, що визначають пропорції по горизонталі і вертикалі.

Процедура застосовується тільки по відношенню до векторних шрифтів. Пропорції задають масштабний коефіцієнт, що показує в скільки разів збільшиться ширина і висота символів, що виводяться, по відношенню до стандартно заданих значень. Коефіцієнт по горизонталі знаходиться як відношення X1 до Х2, по вертикалі - як відношення Y1 до Y2. Щоб, наприклад, подвоїти ширину символів, необхідно задати X1=2 і Х2=1. Стандартний розмір символів встановлюється процедурою SetTextStyle, яка відміняє попереднє їй звернення до SetUserCharSize.

Функція TextWidth.

Повертає довжину в пікселях текстового рядка, що виводиться.

Заголовок:

Function TextWidth (Txjt: String): Word;

Враховуються поточний стиль і коефіцієнти зміни розмірів символів, задані відповідно процедурами SetTextStyle і SetUserCharSize.

Функція TextHeight.

Повертає висоту шрифту в пікселях.

Заголовок: 

Function TextHeight(Txt: String): Word;

Процедура GetTextSettings.

Повертає поточний стиль і вирівнювання тексту.

Заголовок:

Procedure GetTextSettins(var Textlnfo: TextSettingsType);

Тут Textlnfo - змінна типа TextSettingsType, який в модулі Graph визначений таким чином:

type

TextSettingsType = record

Font : Word; {Номер шрифту}

Direction: Word; {Напрям}

CharSize : Word; {Код розміру}

Horiz : Word; {Горизонтальне вирівнювання}

Vert : Word; {Вертикальне вирівнювання}

end;

· Включення драйвера і шрифтів в тіло програми

Функція InstallUserFont.

Дозволяє програмі використовувати нестандартний векторний шрифт. Заголовок функції:

Function InstallUserFont(FileName: String): Integer; 

Тут FileName - ім'я файлу, що містить векторний шрифт.

Як вже мовилося, в стандартну поставку Турбо Паскаля версій 4.0 - 6.0 включено три векторні шрифти, для версії 7.0 - 10. Функція InstallUserFont дозволяє розширити цей набір. Функція повертає ідентифікаційний номер нестандартного шрифту, який може використовуватися при зверненні до процедури SetTextStyle.

Функція InstallUserDriver.

Включає нестандартний графічний драйвер в систему BGI-драйверів. Заголовок функції:

Function InstallUserDriver(FileName: String; AutoDetectPtr: Pointer): Integer;

Ця функція розширює і без того достатньо обширний набір стандартних графічних драйверів і призначена в основному для розробників апаратних засобів.

2. Блок-схема

Рух установки вліво вздовж екрану

Size:=ImageSize(1,380,270,479);

GetMem(p2,size);

GetImage(1,380,270,479,p2^);

i:=354;

b:=2;

i>=147

PutImage(i,380,p2^,1);

Delay(5000);

cleardevice;

i:=i-3;

PutImage(i,380,p1^,1);

Delay(5000);

cleardevice;

i:=i-3;

Підняття ракети на 45 x:=180

x<226

y:=x*pi/180;

i:=round(240*cos(y))+404;

j:=round(240*sin(y))+406;

i1:=round(242*cos(y+0.1111))+404;

j1:=round(242*sin(y+0.1111))+406;

i2:=round(26*cos(y+1.59))+404;

j2:=round(26*sin(y+1.59))+406;

i3:=round(260*cos(y+0.05555))+404;

j3:=round(260*sin(y+0.05555))+406;

Line(i,j,404,406);

Line(i1,j1,i2,j2);

line(404,406,i2,j2);

line(i,j,i3,j3);

line(i1,j1,i3,j3);

line(i,j,i1,j1);

x:=x+2;

SetFillStyle(6,9);

Floodfill(i+5,j-1,3);

SetFillStyle(6,4);

Floodfill(i1-5,j1+4,3);

PutImage(154,407,p2^,1);

sound(3000-x*10);

delay(10000);

nosound;

Стартовий вогонь

k:=1..300;1

i:=random(100)+400;

j:=random(179)+380;

putpixel(i,j,random(16));

3. Текст програми

Uses Graph,crt;

const vga=9;

var

p2,p1:pointer;

Driver, Mode:integer; x,j,i,i1,j1,i2,j2,j3,i3,k:integer;Size:word;m:char;

y:real;

procedure raket; {Процедура створення ракети}

begin

line(i+20,j+13,i+260,j+13); {Основа ракети}

line(i+20,j-13,i+260,j-13);

line(i+20,j-13,i+20,j+13);

line(i+260,j-13,i+260,j+13);

outtextxy(344,390,'CCCP'); {Напис на ракеті}

Line(i,j,i+20,j+13); {Кінець ракети}

Line(i,j,i+20,j-13);

end;

Begin

Driver := vga;

Mode:=2;

InitGraph(Driver, Mode,'d:\BP\BGI') ; {Ініціалізація графіки}

setColor(3);

Line(509,417,254,417); {Платформа}

Circle(479,449,30); {Створення шасі}

SetFillStyle(1,1);

Floodfill(479,440,3);

SetFillStyle(1,3);

Circle(479,449,3);

Floodfill(479,449,3);

SetFillStyle(7,12);

Circle(479,464,5);

Floodfill(479,464,3);

Circle(479,434,5);

Floodfill(479,434,3);

Circle(465,449,5);

Floodfill(465,449,3);

Circle(494,449,5);

Floodfill(494,449,3);

Size:=ImageSize(449,419,509,479);

GetMem(p1,size);

GetImage(449,419,509,479,p1^);

PutImage(384,419,p1^,1);

PutImage(319,419,p1^,1);

PutImage(254,419,p1^,1);

Line(300,417,300,407); {Тримачі ракети}

Line(320,417,320,407);

Line(462,417,462,407);

Line(442,417,442,407);

Circle(488,394,10);

PutPixel(488,394,2);

Line(478,417,478,394);

Line(498,417,498,394);

i:=240; {Прорисовка ракети}

j:=394;

SetFillStyle(6,9);

raket;

Floodfill(241,394,3); {Розфарбування ракети}

Floodfill(261,394,3);

SetFillStyle(6,10);

Floodfill(488,394,3);

SetFillStyle(6,9);

Floodfill(488,405,3);

Size:=ImageSize(240,380,509,479);

GetMem(p1,size);

GetImage(240,381,509,479,p1^);

ClearDevice;

PutImage(1,380,p1^,1);

Circle(50,50,30); {Створення нового колеса}

SetFillStyle(1,1);

Floodfill(55,50,3);

SetFillStyle(1,3);

Circle(50,50,3);

floodfill(50,50,3);

SetFillStyle(7,12);

Circle(40,40,5);

floodfill(40,40,3);

Circle(40,61,5);

floodfill(40,61,3);

Circle(60,40,5);

floodfill(60,40,3);

Circle(60,61,5);

floodfill(60,61,3);

Size:=ImageSize(20,20,80,80);

GetMem(p2,size);

GetImage(20,20,80,80,p2^); { Занесення нового колеса в пам'ять}

PutImage(15,418,p2^,0); {Створення нових шасі}

PutImage(80,418,p2^,0);

PutImage(145,418,p2^,0);

PutImage(210,418,p2^,0);

Size:=ImageSize(1,380,270,479);

GetMem(p2,size);

GetImage(1,380,270,479,p2^); {Занесення установки в пам'ять}

ClearDevice;

readkey; { Рух установки вліво вздовж екрану}

i:=354;

b:=2;

while (i>=147) do

begin

PutImage(i,380,p2^,1);

Delay(5000);

cleardevice;

i:=i-3;

PutImage(i,380,p1^,1);

Delay(5000);

cleardevice;

i:=i-3;

end;

PutImage(i,380,p1^,1);

i:=144;

j:=j-1;

SetColor(3);

raket;

Size:=ImageSize(154,407,509,479);

GetMem(p2,size);

GetImage(154,407,509,479,p2^);

x:=180;

while (x<226) do {Підняття ракети на 45}

begin

cleardevice;

y:=x*pi/180;

i:=round(240*cos(y))+404;

j:=round(240*sin(y))+406;

i1:=round(242*cos(y+0.1111))+404;

j1:=round(242*sin(y+0.1111))+406;

i2:=round(26*cos(y+1.59))+404;

j2:=round(26*sin(y+1.59))+406;

i3:=round(260*cos(y+0.05555))+404;

j3:=round(260*sin(y+0.05555))+406;

Line(i,j,404,406);

Line(i1,j1,i2,j2);

line(404,406,i2,j2);

line(i,j,i3,j3);

line(i1,j1,i3,j3);

line(i,j,i1,j1);

x:=x+2;

SetFillStyle(6,9); {Розфарбування ракети}

Floodfill(i+5,j-1,3);

SetFillStyle(6,4);

Floodfill(i1-5,j1+4,3);

PutImage(154,407,p2^,1);

sound(3000-x*10);

delay(10000);

nosound;

end;

for k:=1 to 300 do {Стартовий вогонь}

begin

i:=random(100)+400;

j:=random(179)+380;

putpixel(i,j,random(16));

end;

delay(65000);

Size:=ImageSize(228,215,519,406);

GetMem(p1,size);

GetImage(228,215,519,406,p1^); {Занесення піднятої ракети в пам'ять}

cleardevice;

i:=228;

while (i>1) do {Рух ракети в лівий верхній кут}

begin

PutImage(154,407,p2^,1);

Putimage(i,i-13,p1^,1);

delay(1000);

cleardevice;

i:=i-5;

end;

readkey;

dispose(p1);

dispose(p2);

end.

4. Результати роботи програми

Страницы: 1, 2, 3



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.