case 4: clrscr();printf ("1 - Blue\n2 - Green\n3 - Gray\n4 - Red\n5 - Magenta\n6 - Brown\n7 - LightGray\n8 - DarkGray\n9 - LightBlue\n10 - LightGreen\n11 - LightCyan\n12 - LightRed\n13 - LightMagenta\n14 - Yellow\n15 - White\n\n");
scanf ("%d",&cf); break;
case 0: break;
}
}while (a>0);
setgraphmode(gm);
setcolor(cl);
setlinestyle(0,0,fl);
};
void Color::filling(int x,int y)
{floodfill(x,y,cl);
};
//---contur
class Figcont: public Figure
{public:
Figcont();
~Figcont();
void draw() {Figure::draw();};
void options(int gm);
};
Figcont::Figcont()
{};
Figcont::~Figcont()
{};
void Figcont::options(int gm)
{int fl=1,cl=15,tl=0, a;
restorecrtmode();
do{
clrscr();
printf ("LINE:\n 1 - Fat (1 or 3)\n 2 - Color\n 3 - Type\n\n 0 - Back\n");
scanf ("%d",&a);
switch (a)
{case 1: clrscr();printf ("1 or 3\n\n");
scanf ("%d",&fl); break;
case 2: clrscr();printf ("1 - Blue\n2 - Green\n3 - Gray\n4 - Red\n5 - Magenta\n6 - Brown\n7 - LightGray\n8 - DarkGray\n9 - LightBlue\n10 - LightGreen\n11 - LightCyan\n12 - LightRed\n13 - LightMagenta\n14 - Yellow\n15 - White\n\n");
scanf ("%d",&cl); break;
case 3: clrscr();printf ("0 - Solid line\n1 - Dotted line\n2 - Center line\n3 - Dashed line\n\n");
scanf ("%d",&tl); break;
case 0: break;
}
}while (a>0);
setgraphmode(gm);
setcolor(cl);
setlinestyle(tl,0,fl);
};
//---Color
class Colorfig: public Figure, public Color
{public:
Colorfig();
~Colorfig();
void draw() {Figure::draw(); setfillstyle(tf,cf); Colorfig::filling(xo,yo);};
};
Colorfig::Colorfig()
{};
Colorfig::~Colorfig()
{};
//-----------------dup
class Dupfig: public Figure, public Color
{public:
Dupfig();
~Dupfig();
void draw() {Figure::draw();Color::filling(xo,yo);};
void draw2();
void dup(int x,int y,int lx,int ly,int alf);
};
Dupfig::Dupfig()
{};
Dupfig::~Dupfig()
{};
void Dupfig::draw2()
{setfillstyle(0,0);
draw();
setfillstyle(tf,cf);
}
void Dupfig::dup(int x,int y,int lx,int ly,int alf)
{setfillstyle(tf,cf);
draw();
enter(x,y,lx,ly,alf);
draw2();
}
Файл:main.cpp
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include "multclas.cpp"
void main()
{int choice, gmode;;
int gdriver = DETECT, errorcode;
initgraph(&gdriver, &gmode, "C:\\bc\\bgi");
errorcode = graphresult();
if (errorcode != grOk)
{
printf("Graphics error: %s\n", grapherrormsg(errorcode));
printf("Press any key to halt:");
getch();
exit(1);
}
int xx,yy,lx,ly,alf, i;
do{
printf ("1 - Kontur\n2 - Zalitaja\n3 - Dvojnaja\n\n");
scanf ("%d",&i);
switch (i){
case 1:
Figcont R;
R.Figcont::options(gmode);
printf ("X, Y, LX, LY, Alf\n");
scanf ("%d%d%d%d%d",&xx,&yy,&lx,&ly,&alf);
R.Figcont::enter(xx,yy,lx,ly,alf);
R.Figcont::draw();
break;
case 2:
Colorfig C;
C.Colorfig::options(gmode);
printf ("X, Y, LX, LY, Alf\n");
scanf ("%d%d%d%d%d",&xx,&yy,&lx,&ly,&alf);
C.Colorfig::enter(xx,yy,lx,ly,alf);
C.Colorfig::draw();
break;
case 3:
Dupfig D;
D.Dupfig::options(gmode);
printf ("BIG - X, Y, LX, LY, Alf\n");
scanf ("%d%d%d%d%d",&xx,&yy,&lx,&ly,&alf);
D.Dupfig::enter(xx,yy,lx,ly,alf);
printf ("Small - X, Y, LX, LY, Alf\n");
scanf ("%d%d%d%d%d",&xx,&yy,&lx,&ly,&alf);
D.Dupfig::dup(xx,yy,lx,ly,alf);
break;
break;}
getch();
}while (i>0);
}
4. Набор тестов
№ теста |
Тип фигуры, данные и функция |
Результат |
1 |
Figcont 320 240 150 100 30 draw |
Незакрашенный ромб |
2 |
Colorfig 300 200 100 50 45 draw |
Закрашенный ромб |
3 |
Dupfig 320 240 150 100 0 320 240 100 100 0 dup |
Два вложенных ромба |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.