void antena(int x1,int y1,int x2,int y2){
switch(pozition(x1,y1,x2,y2)){
case 1:
if(x2>x1){
y2=y1;
line(x1,y1,x2,y2);
line(x2-6,y2,x2,y2-6);
line(x2-6,y2,x2,y2+6);
}
if(x2<x1){
y2=y1;
line(x1,y1,x2,y2);
line(x2+6,y2,x2,y2+6);
line(x2+6,y2,x2,y2-6);
}
break;
case 2:
if(y1<y2){
x2=x1;
line(x1,y1,x2,y2);
line(x2,y2-6,x2+6,y2);
line(x2,y2-6,x2-6,y2);
}
if(y1>y2){
x2=x1;
line(x1,y1,x2,y2);
line(x2,y2+6,x2-6,y2);
line(x2,y2+6,x2+6,y2);
}
break;
case 3:
if(x2>x1){
y2=y1-(x2-x1);
line(x1,y1,x2,y2);
line(x2-5,y2+5,x2-5,y2-5);
line(x2-5,y2+5,x2+5,y2+5);
}
if(x2<x1){
y2=y1+(x1-x2);
line(x1,y1,x2,y2);
line(x2+5,y2-5,x2+5,y2+5);
line(x2+5,y2-5,x2-5,y2-5);
}
break;
case 4:
if(x2>x1){
y2=y1+(x2-x1);
line(x1,y1,x2,y2);
line(x2-5,y2-5,x2-5,y2+5);
line(x2-5,y2-5,x2+5,y2-5);
}
if(x2<x1){
y2=y1-(x1-x2);
line(x1,y1,x2,y2);
line(x2+5,y2+5,x2+5,y2-5);
line(x2+5,y2+5,x2-5,y2+5);
}
break;
}
}
// Функция, рисующая зажим
void zazhim(int x1,int y1,int x2,int y2){
switch(pozition(x1,y1,x2,y2)){
case 1:
if(x2>x1){
y2=y1;
line(x1,y1,x2-2,y2);
circle(x2,y2,2);
}
if(x2<x1){
y2=y1;
line(x2+2,y2,x1,y1);
circle(x2,y2,2);
}
break;
case 2:
if(y1<y2){
x2=x1;
line(x1,y1,x2,y2-2);
circle(x2,y2,2);
}
if(y1>y2){
x2=x1;
line(x1,y1,x2,y2+2);
circle(x2,y2,2);
}
break;
case 3:
if(x2>x1){
y2=y1-(x2-x1);
line(x1,y1,x2-1,y2+1);
circle(x2,y2,2);
}
if(x2<x1){
y2=y1+(x1-x2);
line(x1,y1,x2+1,y2-1);
circle(x2,y2,2);
}
break;
case 4:
if(x2>x1){
y2=y1+(x2-x1);
line(x1,y1,x2-1,y2-1);
circle(x2,y2,2);
}
if(x2<x1){
y2=y1-(x1-x2);
line(x1,y1,x2+1,y2+1);
circle(x2,y2,2);
}
break;
}
}
// Функция, рисующая зажим
void kluch(int x1,int y1,int x2,int y2){
int x3,y3;
switch(pozition(x1,y1,x2,y2)){
case 1:
if(x2>x1){
y2=y1;
x3=x1+(x2-x1)/2;
line(x1,y1,x3-10,y1);
line(x3+12,y1,x2,y2);
line(x3-10,y1,x3+10,y2-10);
}
if(x2<x1){
x3=x2+(x1-x2)/2;
y2=y1;
line(x2,y2,x3-10,y1);
line(x3+12,y2,x1,y1);
line(x3-10,y2,x3+10,y1-10);
}
break;
case 2:
if(y1<y2){
y3=y1+(y2-y1)/2;
x2=x1;
line(x1,y1,x1,y3-10);
line(x1,y3+12,x2,y2);
line(x1,y3-10,x1-10,y3+10);
}
if(y1>y2){
y3=y2+(y1-y2)/2;
x2=x1;
line(x1,y1,x1,y3+12);
line(x1,y3-10,x2,y2);
line(x1,y3-10,x1+10,y3+10);
}
break;
case 3:
if(x2>x1){
y2=y1-(x2-x1);
x3=x1+(x2-x1)/2;
y3=y1+(y2-y1)/2;
line(x1,y1,x3-5,y3+5);
line(x3+8,y3-8,x2,y2);
line(x3-5,y3+5,x3,y3-14);
}
if(x2<x1){
y2=y1+(x1-x2);
x3=x2+(x1-x2)/2;
y3=y1+(y2-y1)/2;
line(x1,y1,x3+8,y3-8);
line(x3-5,y3+5,x2,y2);
line(x3-5,y3+5,x3,y3-14);
}
break;
case 4:
if(x2>x1){
y2=y1+(x2-x1);
x3=x1+(x2-x1)/2;
y3=y1+(y2-y1)/2;
line(x1,y1,x3-5,y3-5);
line(x3+8,y3+8,x2,y2);
line(x3-5,y3-5,x3+14,y3);
}
if(x2<x1){
y2=y1-(x1-x2);
x3=x2+(x1-x2)/2;
y3=y2+(y1-y2)/2;
line(x1,y1,x3+8,y3+8);
line(x3-5,y3-5,x2,y2);
line(x3-5,y3-5,x3+14,y3);
}
break;
}
}
// Функция, рисующая провод
void provod(int x1,int y1,int x2,int y2){
switch(pozition(x1,y1,x2,y2)){
case 1:
if(x2>x1){
y2=y1;
line(x1,y1,x2,y2);
}
if(x2<x1){
y2=y1;
line(x2,y2,x1,y1);
}
break;
case 2:
if(y1<y2){
x2=x1;
line(x1,y1,x2,y2);
}
if(y1>y2){
x2=x1;
line(x1,y1,x2,y2);
}
break;
case 3:
if(x2>x1){
y2=y1-(x2-x1);
line(x1,y1,x2,y2);
}
if(x2<x1){
y2=y1+(x1-x2);
line(x1,y1,x2,y2);
}
break;
case 4:
if(x2>x1){
y2=y1+(x2-x1);
line(x1,y1,x2,y2);
}
if(x2<x1){
y2=y1-(x1-x2);
line(x1,y1,x2,y2);
}
break;
}
}
// Функция, рисующая транзистор
void tranzistor(int x1,int y1,int x2,int y2,int kn_add){
switch(pozition(x1,y1,x2,y2)){
case 1:
if(x2>x1){
y2=y1;
line(x1,y1,x2-4,y2);
line(x2-4,y2-6,x2-4,y2+6);
line(x2-4,y2-3,x2+6,y2-8);
line(x2-4,y2+3,x2+6,y2+8);
switch(kn_add){
case 161:
line(x2+6,y2-8,x2,y2-6);
line(x2+6,y2-8,x2+2,y2-4);
putpixel(x2+2,y2-5,15);
circle(x2,y2,10);
break;
case 162:
line(x2-4,y2-3,x2+1,y2-7);
line(x2-4,y2-3,x2+2,y2-5);
putpixel(x2+1,y2-6,15);
putpixel(x2-2,y2-3,15);
putpixel(x2+3,y2-5,15);
circle(x2,y2,10);
break;
case 163:
line(x2-4,y2+3,x2+1,y2+7);
putpixel(x2+3,y2+5,15);
putpixel(x2+2,y2+5,15);
putpixel(x2,y2+4,15);
putpixel(x2+1,y2+5,15);
circle(x2,y2,10);
break;
case 164:
line(x2+6,y2+8,x2+1,y2+4);
putpixel(x2+1,y2+5,15);
putpixel(x2-1,y2+6,15);
putpixel(x2,y2+6,15);
circle(x2,y2,10);
break;
}
}
if(x2<x1){
y2=y1;
line(x1,y1,x2+4,y2);
line(x2+4,y2+6,x2+4,y2-6);
line(x2+4,y2+3,x2-6,y2+8);
line(x2+4,y2-3,x2-6,y2-8);
switch(kn_add){
case 161:
line(x2+4,y2+3,x2-1,y2+7);
line(x2+4,y2+3,x2-2,y2+5);
putpixel(x2-1,y2+6,15);
putpixel(x2+2,y2+3,15);
putpixel(x2-3,y2+5,15);
circle(x2,y2,10);
break;
case 162:
line(x2-6,y2+8,x2,y2+6);
putpixel(x2-2,y2+5,15);
putpixel(x2-3,y2+6,15);
putpixel(x2-4,y2+8,15);
putpixel(x2-3,y2+8,15);
putpixel(x2-2,y2+8,15);
putpixel(x2-2,y2+7,15);
putpixel(x2-1,y2+7,15);
putpixel(x2,y2+7,15);
circle(x2,y2,10);
break;
case 163:
line(x2-6,y2-8,x2-1,y2-4);
putpixel(x2-1,y2-5,15);
putpixel(x2+1,y2-6,15);
putpixel(x2,y2-6,15);
putpixel(x2+1,y2-6,15);
putpixel(x2-1,y2-3,15);
circle(x2,y2,10);
break;
case 164:
line(x2+4,y2-3,x2-1,y2-7);
putpixel(x2-3,y2-5,15);
putpixel(x2-2,y2-5,15);
putpixel(x2,y2-4,15);
putpixel(x2-1,y2-5,15);
circle(x2,y2,10);
break;
}
}
break;
case 2:
if(y1<y2){
x2=x1;
line(x1,y1,x2,y2-4);
line(x2-6,y2-4,x2+6,y2-4);
line(x2-3,y2-4,x2-8,y2+6);
line(x2+3,y2-4,x2+8,y2+6);
switch(kn_add){
case 161:
putpixel(x2-7,y2+1,15);
putpixel(x2-4,y2+3,15);
putpixel(x2-4,y2+2,15);
putpixel(x2-4,y2+1,15);
putpixel(x2-4,y2,15);
putpixel(x2-5,y2+2,15);
circle(x2,y2,10);
break;
case 162:
line(x2-8,y2+6,x2-4,y2+1);
putpixel(x2-3,y2+1,15);
putpixel(x2-5,y2+1,15);
putpixel(x2-6,y2,15);
putpixel(x2-6,y2-1,15);
circle(x2,y2,10);
break;
case 163:
line(x2+3,y2-4,x2+7,y2+1);
putpixel(x2+5,y2+3,15);
putpixel(x2+5,y2+2,15);
putpixel(x2+4,y2,15);
putpixel(x2+5,y2+1,15);
circle(x2,y2,10);
break;
case 164:
line(x2+8,y2+6,x2+4,y2+1);
putpixel(x2+5,y2+1,15);
putpixel(x2+6,y2-1,15);
putpixel(x2+6,y2,15);
putpixel(x2+5,y2,15);
putpixel(x2+4,y2,15);
putpixel(x2+3,y2,15);
circle(x2,y2,10);
break;
}
}
if(y1>y2){
x2=x1;
line(x1,y1,x2,y2+4);
line(x2+6,y2+4,x2-6,y2+4);
line(x2+3,y2+4,x2+8,y2-6);
line(x2-3,y2+4,x2-8,y2-6);
switch(kn_add){
case 161:
line(x2+8,y2-6,x2+4,y2-1);
putpixel(x2+3,y2-1,15);
putpixel(x2+5,y2-1,15);
putpixel(x2+6,y2,15);
putpixel(x2+6,y2+1,15);
circle(x2,y2,10);
break;
case 162:
putpixel(x2+7,y2-1,15);
putpixel(x2+4,y2-3,15);
putpixel(x2+4,y2-2,15);
putpixel(x2+4,y2-1,15);
putpixel(x2+4,y2,15);
putpixel(x2+5,y2-2,15);
circle(x2,y2,10);
break;
case 163:
line(x2-8,y2-6,x2-4,y2-1);
putpixel(x2-5,y2-1,15);
putpixel(x2-6,y2+1,15);
putpixel(x2-6,y2,15);
putpixel(x2-5,y2,15);
putpixel(x2-4,y2,15);
putpixel(x2-3,y2,15);
circle(x2,y2,10);
break;
case 164:
line(x2-3,y2+4,x2-7,y2-1);
putpixel(x2-5,y2-3,15);
putpixel(x2-5,y2-2,15);
putpixel(x2-4,y2,15);
putpixel(x2-5,y2-1,15);
circle(x2,y2,10);
break;
}
}
break;
}
}
//Функция, корректирующая неудачно изображённый элемент
void correct(int x1,int y1,int x2,int y2){
setcolor(1);
mouse_state ms;
if(x1>x2){
if(y1>y2){
i=x1; j=y1;
x1=x2; y1=y2;
x2=i; y2=j;
}
else{
i=x1;
x1=x2;
x2=i;
}
}
else
if((x1<x2)&&(y1>y2)){
j=y1;
y1=y2;
y2=j;
}
rectangle(x1,y1,x2,y2);
cursor_on();
while(1){
if(ms_release(&ms,0)==1){
cursor_off();
for(i=x1;i<=x2;i++)
for(j=y1;j<=y2;j++)
putpixel(i,j,7);
break;
}
if(ms_release(&ms,1)==1){
cursor_off();
setcolor(7);
rectangle(x1,y1,x2,y2);
break;
}
}
setcolor(15);
}