Добавил:
korayakov
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
#include<graphics.h>
#include <math.h>
struct all
{
int name;
int x11;
int y11;
int x22;
int y22;
int rad;
int col;
int f_col;
};
all ptr[1000];
int nom=0,cons;
void in_mas(int nam,int mx,int my,int mx2,int my2,int rr,int mcol,int fcol)
{
ptr[nom].name=nam; //1-в®зЄ 2-«ЁЁп 3-Їаאַ㣮«. 4-ЄагЈ 0-Їгбв®
ptr[nom].x11=mx; //Є®®а¤-вл ўҐа奣® гЈ« Їап¬-Є Ё«Ё жҐва ЄагЈ
ptr[nom].y11=my; //Ё«Ё Є®®а-вл в®зЄЁ
ptr[nom].x22=mx2; //Є®®а¤-вл Ё¦ҐЈ® гЈ« Їап¬-Є Ё«Ё ўв®а®© в®зЄЁ
ptr[nom].y22=my2; // «ЁЁЁ (¤«п в®зЄЁ Ё ЄагЈ г«Ё)
ptr[nom].rad=rr; //а ¤Ёгб ЄагЈ
ptr[nom].col=mcol; //жўҐв Ја Ёжл Ё«Ё § Єа бЄЁ
ptr[nom].f_col=fcol; //§ Єа иҐ Ё«Ё Ґв
nom++;
}
void in_mas2(int as,int nam,int mx,int my,int mx2,int my2,int rr,int mcol,int fcol)
{
ptr[as].name=nam; //1-в®зЄ 2-«ЁЁп 3-Їаאַ㣮«. 4-ЄагЈ 0-Їгбв®
ptr[as].x11=mx; //Є®®а¤-вл ўҐа奣® гЈ« Їап¬-Є Ё«Ё жҐва ЄагЈ
ptr[as].y11=my; //Ё«Ё Є®®а-вл в®зЄЁ
ptr[as].x22=mx2; //Є®®а¤-вл Ё¦ҐЈ® гЈ« Їап¬-Є Ё«Ё ўв®а®© в®зЄЁ
ptr[as].y22=my2; // «ЁЁЁ (¤«п в®зЄЁ Ё ЄагЈ г«Ё)
ptr[as].rad=rr; //а ¤Ёгб ЄагЈ
ptr[as].col=mcol; //жўҐв Ја Ёжл Ё«Ё § Єа бЄЁ
ptr[as].f_col=fcol; //§ Єа иҐ Ё«Ё Ґв
}
void out_mas(int ww)
{
ptr[ww].name=0;
}
class Pixel
{
public:
int x,y;
void drawpix(int cl);
void drawpix2(int nx,int ny,int cl);
};
void Pixel::drawpix(int cl)
{
mouselimit(101,11,629,459);
while (mousepressed()!=0)
{
x=mousegetx();
y=mousegety();
}
hidemouse();
putpixel(x,y,cl);
in_mas(1,x,y,0,0,0,cl,0);
showmouse();
}
void Pixel::drawpix2(int nx,int ny,int cl)
{
setwritemode(COPY_PUT);
putpixel(nx,ny,cl);
}
class Line:public Pixel
{
public:
int x1,y1;
void drawline(int cl);
void drawline2(int nx,int ny,int nx1,int ny1,int cl);
void Mdrawline(int nx,int ny,int nx1,int ny1,int cl);
};
void Line::drawline(int cl)
{
mouselimit(101,11,629,459);
if (mousepressed()!=0)
{
x=mousegetx();
y=mousegety();
while (mousepressed()!=0)
{
x1=mousegetx();
y1=mousegety();
setwritemode(XOR_PUT);
setcolor(cl);
hidemouse();
line(x,y,x1,y1);
showmouse();
delay(30);
hidemouse();
line(x,y,x1,y1);
showmouse();
} }
hidemouse();
setwritemode(COPY_PUT);
line(x,y,x1,y1);
in_mas(2,x,y,x1,y1,0,cl,0);
showmouse();
}
void Line::drawline2(int nx,int ny,int nx1,int ny1,int cl)
{
setwritemode(COPY_PUT);
setcolor(cl);
line(nx,ny,nx1,ny1);
}
void Line::Mdrawline(int nx,int ny,int nx1,int ny1,int cl)
{
int xx,yy,dx,dy,l=0;
initmouse();
setcolor(cl);
showmouse();
mouselimit(101,11,629,459);
while (mousepressed()==0)
{
xx=mousegetx();
yy=mousegety();
dx=xx-nx;
dy=yy-ny;
x=nx+dx;
y=ny+dy;
x1=nx1+dx;
y1=ny1+dy;
if((x>629)||(y>459)||(x1<101)||(y1<11)||(x1>629)||(y1>459)||(x<101)||(y<11))
{setcolor(13);l=1;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl);continue;}
else{setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl); }
setwritemode(XOR_PUT);
hidemouse();
line(x,y,x1,y1);
showmouse();
delay(40);
hidemouse();
line(x,y,x1,y1);
showmouse();
}
hidemouse();
setwritemode(COPY_PUT);
if (l==0){
line(x,y,x1,y1);
in_mas2(cons,2,x,y,x1,y1,0,cl,0);}
else in_mas2(cons,2,nx,ny,nx1,ny1,0,cl,0);
setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
showmouse();
}
class Rect:public Line
{
public:
void drawrect(int cl);
void drawrect2(int nx,int ny,int nx1,int ny1,int cl,int zor);
void Mdrawrect(int nx,int ny,int nx1,int ny1,int cl,int zor);
};
void Rect::drawrect(int cl)
{
mouselimit(101,11,629,459);
if(mousepressed()!=0)
{
x=mousegetx();
y=mousegety();
while(mousepressed()!=0)
{
x1=mousegetx();
y1=mousegety();
setwritemode(XOR_PUT);
setcolor(cl);
hidemouse();
rectangle(x,y,x1,y1);
showmouse();
delay(30);
hidemouse();
rectangle(x,y,x1,y1);
showmouse();
} }
hidemouse();
setwritemode(COPY_PUT);
rectangle(x,y,x1,y1);
showmouse();
in_mas(3,x,y,x1,y1,0,cl,0);
}
void Rect::drawrect2(int nx,int ny,int nx1,int ny1,int cl,int zor)
{
setwritemode(COPY_PUT);
if(zor==1)
{setfillstyle(SOLID_FILL,cl);
bar(nx,ny,nx1,ny1);}
else {setcolor(cl);rectangle(nx,ny,nx1,ny1);}
}
void Rect::Mdrawrect(int nx,int ny,int nx1,int ny1,int cl,int zor)
{
int xx,yy,dx,dy,l=0;
initmouse();
setcolor(cl);
showmouse();
mouselimit(101,11,629,459);
while (mousepressed()==0)
{
xx=mousegetx();
yy=mousegety();
dx=xx-nx;
dy=yy-ny;
x=nx+dx;
y=ny+dy;
x1=nx1+dx;
y1=ny1+dy;
if((x>629)||(y>459)||(x1<101)||(y1<11)||(x1>629)||(y1>459)||(x<101)||(y<11))
{setcolor(13);l=1;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl);continue;}
else{setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl); }
setwritemode(XOR_PUT);
hidemouse();
rectangle(x,y,x1,y1);
showmouse();
delay(30);
hidemouse();
rectangle(x,y,x1,y1);
showmouse();
}
hidemouse();
setwritemode(COPY_PUT);
if(l==0){
rectangle(x,y,x1,y1);
in_mas2(cons,3,x,y,x1,y1,0,cl,zor);}
else in_mas2(cons,3,nx,ny,nx1,ny1,0,cl,zor);
showmouse();
}
class Circle:public Rect
{
public:
void drawcirc(int cl);
void drawcirc2(int nx,int ny,int rd,int cl,int zor);
void Mdrawcirc(int nx,int ny,int rd,int cl,int zor);
};
void c_hlp(int x1,int y1,int r)
{
double rr=(double)r;
for(int i=0; i<(int)rr; i++)
{
int x,xx,x2,xx2;
x=x1+(int)rr-i;
xx=(int)rr-i;
x2=x1-(int)rr+i;
long double a1=(rr*rr-(double)xx*(double)xx);
int yy1=y1+sqrt(a1);
int yy2=y1-sqrt(a1);
setwritemode(XOR_PUT);
hidemouse();
line(x,yy1,x,yy1);
line(x,yy2,x,yy2);
line(x2,yy1,x2,yy1);
line(x2,yy2,x2,yy2);
showmouse();
}
}
void Circle::drawcirc(int cl)
{
int x1,y1,rr,rr1,rr2,l=0;
mouselimit(101,11,629,459);
setcolor(cl);
if (mousepressed()!=0)
{
x=mousegetx();
y=mousegety();
while (mousepressed()!=0)
{
x1=mousegetx();
y1=mousegety();
rr1=abs(x-x1);
rr2=abs(y-y1);
if (rr1>rr2) rr=rr1; else rr=rr2;
if ( (rr>abs(100-x)) || (rr>abs(630-x)) || (rr>abs(10-y)) || (rr>abs(460-y)))
{setcolor(13);outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl); l=1;continue;}
else{setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl); }
c_hlp(x,y,rr);
c_hlp(x,y,rr);
}
setwritemode(COPY_PUT);
hidemouse();
if (l==0){
ellipse(x,y,0,360,rr,rr);
in_mas(4,x,y,0,0,rr,cl,0);}
setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
showmouse();
}
}
void Circle::drawcirc2(int nx,int ny,int rd,int cl,int zor)
{
setwritemode(COPY_PUT);
if(zor==1)
{
setfillstyle(SOLID_FILL,cl);
setcolor(cl);
fillellipse(nx,ny,rd,rd);
}
else {
setcolor(cl);
ellipse(nx,ny,0,360,rd,rd);}
}
void Circle::Mdrawcirc(int nx,int ny,int rd,int cl,int zor)
{
int xx,yy,dx,dy,rr1,rr2,rr,l=0;
initmouse();
setcolor(cl);
showmouse();
mouselimit(101,11,629,459);
while (mousepressed()==0)
{
xx=mousegetx();
yy=mousegety();
dx=xx-nx;
dy=yy-ny;
x=nx+dx;
y=ny+dy;
if ( (rd>abs(100-x)) || (rd>abs(630-x)) || (rd>abs(10-y)) || (rd>abs(460-y)))
{setcolor(13);l=1;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl);continue;}
else{setcolor(0);l=0;outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
setcolor(cl); }
setwritemode(XOR_PUT);
hidemouse();
c_hlp(x,y,rd);
showmouse();
delay(30);
hidemouse();
c_hlp(x,y,rd);
showmouse();
}
hidemouse();
setwritemode(COPY_PUT);
if(l==0){
ellipse(x,y,0,360,rd,rd);
in_mas2(cons,4,x,y,0,0,rd,cl,zor);}
else in_mas2(cons,4,nx,ny,0,0,rd,cl,zor);
setcolor(0);outtextxy(100,465,"®ЎкҐЄв ўл襫 § Ја Ёжг Ї®«п аЁб®ў Ёп");
showmouse();
}