у по x і по y під кутом 45 градусів
void Point :: Drag (int by)
{int dlx, dly;
int fx, fy;
Show ();
fx = GetX (); fy = GetY ();
while (GetDelta (dlx, dly))
{fx + = dlx * by;
fy + = dly * by;
MoveTo (fx, fy);};}// переміщення точки, поки стрілка натиснута
Circle :: Circle (int nx, int ny, int nr): Point (nx, ny)
{R = nr;}
void Circle :: Show ()
{vis = true; circle (X, Y, R); } p> void Circle :: Hide ()
{unsigned tcol;// tcol - поточне значення кольору
tcol = getcolor ();
setcolor (getbkcolor ()) ;//установка кольору фону
vis = false;
circle (X, Y, R);// стандартна функція малювання окружності
setcolor (tcol);}// гасіння окружності, відновлення вихідних значень кольору
void Circle :: Expand (int by)// збільшення окружності
{Hide ();
R + = by;
if (R <0)
R = 0;
Show ();}
void Circle :: Contract (int by)// зменшення окружності
{Expand (-by);}
// клас Кільце
class Ring: public Circle
{protected:
int R; int R1;
public:
Ring (int nx, int ny, int nr, int nr1);// конструктор
void Show ();
void Hide ();
void Expand (int by);
void Contract (int by);
};
Ring :: Ring (int nx, int ny, int nr, int nr1): Circle (nx, ny, nr)
{R = nr; R1 = nr1;}
void Ring :: Show ()
{vis = true; circle (X, Y, R); circle (X, Y, R1);}
void Ring :: Hide ()
{unsigned tcol;
tcol = getcolor ();
setcolor (getbkcolor ());
vis = false;
circle (X, Y, R);
circle (X, Y, R1);
setcolor (tcol);
}
void Ring :: Expand (int by)
{Hide ();
R + = by;
R1 + = by;
if (R <0)
R = 0;
if (R1 <0)
R1 = 0;
Show ();
}
void Ring :: Contract (int by)
{Expand (-by);}
// клас Ауді
class Audi: public Ring
{protected:
int R; int R1;
public:
Audi (int nx, int ny, int nr, int nr1);
void Show ();
void Hide ();
void Expand (int by);
void Contract (int by);
};
Audi :: Audi (int nx, int ny, int nr, int nr1): Ring (nx, ny, nr, nr1)
{R = nr; R1 = nr1;}
void Audi :: Show ()
{vis = true;
circle (X, Y, R); circle (X, Y, R1);// Малювання взаємопов'язаних кілець
circle (X +120, Y, R); circle (X +120, Y, R1);
circle (X +240, Y, R); circle (X +240, Y, R1);
circle (X +360, Y, R); circle (X +360, Y, R1);
}
void Audi :: Hide ()
{unsigned tcol;
tcol = getcolor ();
setcolor (getbkcolor ());
vis = false;
circle (X, Y, R); circle (X, Y, R1);
circle (X +120, Y, R); circle (X +120, Y, R1);
circle (X +240, Y, R); circle (X +240, Y, R1);
circle (X +360, Y, R); circle (X +360, Y, R1);
setcolor (tcol);
}
void Audi :: Expand (int by)
{Hide ();
R + = by;
R1 + = by;
if (R <0)
R = 0;
if (R1 <0)
R1 = 0;
Show ();
}
void Audi :: Contract (int by)
{Expand (-by);}
// основна частина програми
void main ()
// ініціалізація графічного режиму
{int graphdriver = DETECT, graphmode;
initgraph (& graphdriver, & graphmode, "c: borlandc bgi");
// створення об'єкта класу Точка і дії з ним
Point P (100,50);
P.Show (); getch ();
P.MoveTo (300,100); getch ();
P.Hide ();
// створення об'єкта класу Коло і дії з ним
Circle C (200,200,100);
C.Show (); getch ();
C.MoveTo (300,200); getch ();
C.Contract (50); getch ();
C.Expand (50); getch ();
C.Drag (5);
C.Hide ();
// створення об'єкта класу Кільце і дії з ним
Ring R (300,300,100,80);
R.Show (); getch ();
R.MoveTo (200,200); getch ();
R.Contract (50); getch ();
R.Expand (50); getch ();
R.Drag (10);
R.Hide ();
// створення об'єкта класу Ауді і дії з ним
Audi A (100,300,80,70);
A.Show (); getch ();
A.MoveTo (150,200); getch ();
A.Contract (50); getch ();
A.Expand (50); getch ();
A.Drag (10);
A.Hide ();
// закриття графічного режиму
closegraph ();
}