Ім'я файлу: додатки.docx
Розширення: docx
Розмір: 17кб.
Дата: 31.05.2021
скачати
Пов'язані файли:
М.т. 2 Дієслово.docx


ДОДАТКИ

Додаток 1

Текст тестової програми з коментарями.

#include

#include

#include

#include //підключаємо необхідні бібліотеки

//----------------------------------

class classProgressBar //клас classProgressBar

{

protected:

int fill //захищена змінна fillc – колір заповнення

public: //загальнодоступні дані та методи

int backc; //колір фону

virtual void my_colors(int text, int back, int fillcolor);

//прототип віртуальної функції my_colors

};

//опис віртуальної функції заміни кольору

void classProgressBar::my_colors(int text, int back, int fillcolor)

{

setcolor(text); //вибір кольору шрифту

setbkcolor(back); //вибір кольору фону

fillc = fillcolor; //запам’ятовуємо колір заповнення

backc = back; //запам’ятовуємо колір фону

}

//-----------------------------------------

class font //другий базовий клас - font

{

public:

void my_font(int font); //прототип метода my_font

};

void font::my_font(int font) //описання методу – вибір шрифту

{

settextstyle(font, 0, 0);

}

//-----------------------------------------

//клас «горизонтальна смужка»

class horBar:public classProgressBar, public font

{

protected:

int x1, y1, x2, y2, p;

public:

horBar(int p); //конструктор. р – обсяг виконаної роботи

//прототип функції – вибір розміру

void size(int xt, int yt, int xb, int yb);

horBar(horBar &h); //прототип конструктора копіювання

void show(); //прототип метода show

//перевантаження віртуальної функції

void my_colors(int text, int back, int fillcolor)

{

setcolor(text); //вибираємо колір тексту

setbkcolor(back); //вибираємо колір фону

fillc = fillcolor;

backc = back; //запам’ятовуємо кольори

};

horBar(); //прототип деструктора

};

horBar::horBar(horBar &h) //описуємо конструктор копіювання

{

p = h.p;

}

horBar::horBar(){} //описуємо деструктор

horBar::horBar(int per) //описуємо основний конструктор

{

p = per; //р – обсяг виконаної роботи

}

//метод size для вибору параметрів віконця

void horBar::size(int xt, int yt, int xb, int yb)

{

x1 = xt;

y1 = yt;

x2 = xb;

y2 = yb;

}

//метод show – показуємо об’єкт

void horBar::show()

{

float del = (x2 - x1) / 100; //шаг, з яким буде мінятися

//смужка

int defc = 5, step = 20; //колір рамки віконця та шаг

//переміщення

char x = 40, y = 1; //координати виводу відсотків

setcolor(defc); //встановлюємо колір рамки

//віконця – default color

rectangle(x1, y1, x2, y2); //малюємо рамку

while (getch() != 'r') //організовуємо рух

{

switch(getch())

{

case 'd': setcolor(backc); //малюємо об’єкт кольором фону

//на його старому місці (стираємо)

rectangle (x1, y1, x2, y2);

setcolor(defc);

x1 = x1 + step;

x2 = x2 + step;

rectangle (x1, y1, x2, y2); //малюємо новий об’єкт

//на новому місці

break;

case 'a': setcolor(backc);

rectangle (x1, y1, x2, y2);

setcolor(defc);

x1 = x1 - step;

x2 = x2 - step;

rectangle (x1, y1, x2, y2);

break;

case 's': setcolor(backc);

rectangle (x1, y1, x2, y2);

setcolor(defc);

y1 = y1 + step;

y2 = y2 + step;

rectangle (x1, y1, x2, y2);

break;

case 'w': setcolor(backc);

rectangle (x1, y1, x2, y2);

setcolor(defc);

y1 = y1 - step;

y2 = y2 - step;

rectangle (x1, y1, x2, y2);

break;

};

}

setcolor(fillc);

for (int w = 1; w < p + 1; w++)

{

if ((w == 25)||(w == 50)||(w == 75)||(w == 100))

{

sound(550);

delay(300);

nosound(); //організовуємо звук

}

if (w < p)

{

gotoxy (x, y);

printf ("%i%", w + 1);

line(x1 + 1, y1 + 1, x1 + 1, y2 - 1);

delay(100);

x1 = x1 + del;

}

}

getch();

}

//-----------------------------------------

class vertBar: public classProgressBar, public font

{

protected:

int x1, y1, x2, y2, p;

friend void my_size(vertBar *t, int xt, int yt, int xb, int yb);

public:

vertBar(int p);

void size(int xt, int yt, int xb, int yb);

void show();

vertBar();

};

vertBar::vertBar(){}

vertBar::vertBar(int per)

{

p = per;

}

void vertBar::size(int xt, int yt, int xb, int yb)

{

x1 = xt;

y1 = yt;

x2 = xb;

y2 = yb;

}

void vertBar::show()

{

float del = (y2 - y1) / 100;

int defc = 5;

char x = 40, y = 1, step = 20;

setcolor(defc);

rectangle(x1, y1 - 1, x2, y2);

while (getch() != 'r')

{

switch(getch())

{

case 'd': setcolor(backc);

rectangle (x1, y1 - 1, x2, y2);

setcolor(defc);

x1 = x1 + step;

x2 = x2 + step;

rectangle (x1, y1 - 1, x2, y2);

break;

case 'a': setcolor(backc);

rectangle (x1, y1 - 1, x2, y2);

setcolor(defc);

x1 = x1 - step;

x2 = x2 - step;

rectangle (x1, y1 - 1, x2, y2);

break;

case 's': setcolor(backc);

rectangle (x1, y1 - 1, x2, y2);

setcolor(defc);

y1 = y1 + step;

y2 = y2 + step;

rectangle (x1, y1 - 1, x2, y2);

break;

case 'w': setcolor(backc);

rectangle (x1, y1 - 1, x2, y2);

setcolor(defc);

y1 = y1 - step;

y2 = y2 - step;

rectangle (x1, y1 - 1, x2, y2);

break;

default: putch('q');

};

}

setcolor(fillc);

for (int w = 1; w < p + 2; w++)

{

if ((w == 26)||(w == 51)||(w == 76)||(w == 101))

{

sound(550);

delay(300);

nosound();

}

if (w < p + 1)

{

gotoxy(x, y);

printf("%i%", w);

line(x1 + 1, y2 - 1, x2 - 1, y2 - 1);

delay(100);

y2 = y2 - del;

}

}

getch();

}

//-----------------------------------------

void my_size(vertBar *t, int xt, int yt, int xb, int yb)

{

t -> x1 = xt;

t -> y1 = yt;

t -> x2 = xb;

t -> y2 = yb;

}

//-----------------------------------------

class roundBar: public classProgressBar, public font

{

protected:

int x0, y0, r, p, defc;

public:

void size(int x, int y);

void size(int rad);

void show();

roundBar(int per);

roundBar();

};

roundBar::roundBar(){}

void roundBar::size(int x, int y)

{

x0 = x;

y0 = y;

}

void roundBar::size(int rad)

{

r = rad;

}

roundBar::roundBar(int per)

{

p = per;

}

void roundBar::show()

{

int x = 40, y = 1, step = 20;

setcolor(5);

circle(x0, y0, r);

backc = 0;

while (getch() != 'r')

{

switch (getch())

{

case 'd': setcolor(backc);

circle(x0, y0, r);

x0 = x0 + step;

setcolor(5);

circle (x0, y0, r);

break;

case 'a': setcolor(backc);

circle(x0, y0, r);

x0 = x0 - step;

setcolor(5);

circle (x0, y0, r);

break;

case 's': setcolor(backc);

circle(x0, y0, r);

y0 = y0 + step;

setcolor(5);

circle (x0, y0, r);

break;

case 'w': setcolor(backc);

circle(x0, y0, r);

y0 = y0 - step;

setcolor(5);

circle (x0, y0, r);

break;

}

}

for (int j = 0; j < p + 1; j++)

{

if ((j == 26) || (j == 51) || (j == 76) || (j == 100))

{

sound(550);

delay(200);

nosound();

}

gotoxy (x, y);

printf ("%i%", j);

pieslice(x0, y0, 0, j * 3.6, r);

delay(300);

}

getch();

}

//-----------------------------------------

class ringBar: virtual public roundBar

{

public:

ringBar(int per): roundBar(per)

{

p = per;

};

void show();

void operator + (ringBar&);

};

void ringBar::operator + (ringBar &c)

{

c.r = c.r + r;

}

void ringBar::show()

{

int x = 40, y = 1, step = 20;

setcolor(5);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

while (getch() != 'r')

{

switch (getch())

{

case 'r': break;

case 'd': setcolor(backc);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

x0 = x0 + step;

setcolor(5);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

break;

case 'a': setcolor(backc);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

x0 = x0 - step;

setcolor(5);

circle (x0, y0, r);

circle(x0, y0, r / 1.5);

break;

case 's': setcolor(backc);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

y0 = y0 + step;

setcolor(5);

circle (x0, y0, r);

circle(x0, y0, r / 1.5);

break;

case 'w': setcolor(backc);

circle(x0, y0, r);

circle(x0, y0, r / 1.5);

y0 = y0 - step;

setcolor(5);

circle (x0, y0, r);

circle(x0, y0, r / 1.5);

break;

}

}

for (int j = 0; j < p + 1; j++)

{

if ((j == 26) || (j == 51) || (j == 76) || (j == 100))

{

sound(550);

delay(200);

nosound();

}

gotoxy (x, y);

printf ("%i%", j);

pieslice(x0, y0, 0, j * 3.6, r);

setfillstyle(0, 0);

fillellipse(x0, y0, r / 1.5, r / 1.5);

setfillstyle(1, 1);

delay(300);

}

getch();

}

//-----------------------------------------

void main()

{

clrscr();

int gd = VGA, gm = 2;

initgraph(&gd, &gm, "...\\bgi");

//-------------------------------------

printf("Progress Bars:"

"\n1 - Horizontal;\n2 - Vertical;"

"\n3 - Round; \n4 - Ring.");

switch(getch())

{

case '1': horBar a(100);

horBar a1 = a;

a1.my_colors(1, 0 ,2);

a1.my_font(4);

a1.size(140, 140, 240, 170);

a1.show();

a1.horBar::horBar();

break;

//----------------------

case '2': vertBar b = vertBar(100);

b.my_colors(1, 0 ,2);

b.my_font(4);

my_size(&b, 140, 140, 190, 240);

b.show();

b.vertBar::vertBar();

break;

//-----------------------

case '3': roundBar c(100);

roundBar *k;

k = &c;

k -> size(150, 150);

k -> size(100);

(*k).show();

c.roundBar::roundBar();

break;

//-----------------------

case '4': ringBar d(5);

d.size(150, 150);

d.size(100);

d.show();

break;

default: gotoxy (1, 6);

printf ("Choose 1, 2, 3, or 4 !!!");

getch();

}

//-------------------------------------

closegraph();

}
скачати

© Усі права захищені
написати до нас