Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ramki_kursak.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
402.94 Кб
Скачать

22.2 Опис розробленої головної програми

Лістинг розробленої програми приведено в додатку. Програма написана на мові Pascal в середовищі Turbo Pascal

До складу програми входять наступні функції та методи

Опис функції

Призначення функції

function Value:real

Вичислити об’єм молекули

function shar.Value:real;

Повертає об’єм молекули

function initializeGraph:integer;

Функція ініціалізації анімації

Далі приведено метод вводу даних в якому в програму вводяться дані.

function Value:real; {Вичислити Об’єм молекули}

{procedure PrintState;}

end;

function shar.value:real’

begin { повертає об’єм малекули }

value:=4*pi*r*r*r/1;

end;

function initializeGraph:integer; { ініціалізує анімацію }

var grDriver : Integer;

grMode : Integer;

begin

grDriver:=Detect;

InitGraph(grDriver, grMode, '');

initializeGraph:=GraphResult;

end;

2.3 Керівництво користувача

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

cередовища Turbo Pascal шляхом вибору операції Run.

(Попередньо програма повинна бути завантажена в ОП –

F10, File, Open, molekula.pas).

Після запуску програми включається анімація.

Рисунок2. Вигляд відкритого проекту

Запускаємо проект на виконання і одержуємо результат

Рисунок 3 Результат роботи проекту

2.4 Опис файлів даних та інтерфейсу програми

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

    1. Файл molekula.pas, що містить вихідний текст програми

    2. файл molekula.exe – прокомпільований виконуваний файл.

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

Висновки

В ході написання представленого проекту було вивчено і описано теоретичний матеріал, що стосується теми «створення анімації типу,, Рухомих фігур’’з використанням методології ООП.», опрацьовано технічне завдання, розроблено алгоритм роботи програми, спроектований клас користувача та складено програму, яка реалізує всі поставлені завдання. Програма була протестована і дала коректні результати. Програма складена на мові Pascal з використанням методів об’єктно орієнтованого програмування.

Схеми алгоритму, вихідний текст програми та результати її роботи додаються.

Список використаних джерел

1. Pascal: Пер. С англ./Дейтел Х.,Дейтел П., Листфилд Дж., Нието Т., Йегер Ш., Златкина М. – СПб.: БХВ-Петербург, 2006. – 1056 с.:ил.

2. Джеффри Рихтер - Pascal. Программирование на Pascal. Мастер-класс./Пер. с англ. — М.: Издательство «Русская Редакция»; СПб.: Питер, 2007. — 656 стр. : ил.

3. Кристиан Нейгел, Билл Ивьен, Джей Глинн, Карли Уотсон, Морган Скиннер - Pascal 2008

4. Герберт Шилдт - Pascal Учебный Курс. - Питер, Москва, 2003.

5. Симон Робинсон, Олли Корнес, Джей Глинн, Бартон Харвей, Крейг Макквин, Джерод Моемека, Кристиан Нагель, Морган Скиннер, Карли Ватсон - Pascal для профессионалов Том I.

6. Симон Робинсон, Олли Корнес, Джей Глинн, Бартон Харвей, Крейг Макквин, Джерод Моемека, Кристиан Нагель, Морган Скиннер, Карли Ватсон - Pascal для профессионалов Том II.

7. А.В. Фролов, Г.В. Фролов - Язык Pascal. Самоучитель. – М.: Диалог-Мифи, 2003.-560с.

8. http://ru.wikipedia.org/wiki/Виртуальный_метод

9.http://uk.wikipedia.org/wiki/анімація_(програмування))

10.http://www.rsdn.ru/article/dotnet/datagridview20.xьl

Додаток A

Лістинг програми

Uses Graph,Crt;

const MaxShar=10;

type shar = object

x,y:integer;

r:word;

color:byte;

dx,dy:shortint;

hits:set of byte;

constructor initShar(x0,y0:integer; r0:word; color0:byte; dx0,dy0:shortint);

procedure Move;

procedure Show;

procedure Hide;

procedure CheckBorder;

procedure CheckHit(k:byte);

procedure revertXDirection;

procedure revertYDirection;

procedure TurnAfterHit(k:byte);

function Value:real;

{procedure PrintState;}

end;

var bgColor,i:byte;

x,y,dx,dy,ErrCode:integer;

r:word;

shars: array[1..MaxShar] of shar;

sh:shar;

f:text;

Procedure shar.Move;

begin

x:=x+dx;

y:=y+dy;

end;

Procedure shar.Show;

begin

setColor(color);

circle(x, y, r);

{PutPixel(x,y,color);}

end;

Procedure shar.Hide;

begin

setColor(bgColor);

circle(x, y, r);

end;

procedure shar.revertXDirection;

begin

dx:=-dx;

x:=x+dx;

end;

procedure shar.revertYDirection;

begin

dy:=-dy;

y:=y+dy;

end;

Constructor shar.initShar(x0, y0 :integer; r0 :word; color0 :byte; dx0, dy0 :shortint);

begin

x:=x0;

y:=y0;

r:=r0;

color:=color0;

dx:=dx0;

dy:=dy0;

hits:=[];

end;

procedure shar.CheckBorder;

begin

if (r+x>=GetMaxX-1) or (x-r<=1) then revertXDirection;

if (y+r>=GetMaxY-1) or (y-r<=1) then revertYDirection

end;

{procedure shar.PrintState;

begin

writeln(f,'x=',x:3,' y=',y:3,' r=',r:3,' dx=',dx:3,' dy=',dy:3);

end;}

procedure shar.TurnAfterHit(k:byte);

var m1, m2 :real;

vx10,vy10,vx20,vy20:integer;

begin

m1 := Value;

m2 := shars[k].Value;

vx10 := dx;

vy10 := dy;

vx20 := shars[k].dx;

vy20 := shars[k].dy;

dx := round((2*m2*vx20 + (m1-m2)*vx10)/(m1+m2));

dy := round((2*m2*vy20 + (m1-m2)*vy10)/(m1+m2));

shars[k].dx := round((2*m1*vx10 + (m2-m1)*vx20)/(m1+m2));

shars[k].dy := round((2*m1*vy10 + (m2-m1)*vy20)/(m1+m2));

end;

function shar.Value:real;

begin

Value:=4*Pi*r*r*r/1;

end;

procedure shar.CheckHit(k:byte);

var i1:byte;

dist:longint;

begin

for i1:=1 to MaxShar do if ((i1<>k) and not(k in hits)) then

begin

shars[i1].hits:=shars[i1].hits+[k];

dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));

if (dist<r+shars[i1].r) then

begin

TurnAfterHit(i1);

CheckBorder;

Move;

shars[i1].CheckBorder;

shars[i1].Move;

dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));

while (dist<r+shars[i1].r) do

begin

CheckBorder;

Move;

shars[i1].CheckBorder;

shars[i1].Move;

dist:=round(sqrt(sqr(1.0*x-shars[i1].x)+sqr(1.0*y-shars[i1].y)));

end;

end;

end;

end;

function initializeGraph:integer;

var grDriver : Integer;

grMode : Integer;

begin

grDriver:=Detect;

InitGraph(grDriver, grMode, '');

initializeGraph:=GraphResult;

end;

begin

ErrCode:=initializeGraph;

if ErrCode <> grOk then

WriteLn('pomylka inicializacii:', GraphErrorMsg(ErrCode))

else

begin

assign(f,'log.txt');

rewrite(f);

bgColor:=0;

rectangle(1,1,GetMaxX-1,GetMaxY-1);

{shars[1].initShar(199,199,100,3,6,-3);

shars[2].initShar(100,200,40,4,5);

shars[3].initShar(200,200,20,5,-7,-4);

shars[4].initShar(400,300,25,-9,-1);

shars[5].initShar(500,200,35,14,-5,-8);

if (MaxShar>60) then}

for i:=1 to MaxShar do

begin

r:=20+random(17);

shars[i].initShar(1+r+random(GetMaxX-6*r),

1+r+random(GetMaxY-2*r),r,1+random(GetMaxColor-1),

random(15)-7,random(12)-6);

end;

repeat

for i:=1 to MaxShar do

shars[i].Show;

Delay(58);

for i:=1 to MaxShar do

shars[i].Hide;

for i:=1 to MaxShar do

begin

shars[i].Move;

shars[i].CheckBorder;

shars[i].CheckHit(i);

end;

for i:=1 to MaxShar do

shars[i].hits:=[];

until keyPressed;

CloseGraph;

close(f);

end

end.

Додаток Б

Рисунок 4. Результат роботи проекту

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]