Загрузка...

вызов функции, рисующей провод


provod(x1,y1,x2,y2);

cursor_on();

kn=0;

break;

case 16:

cursor_off();

for(i=59;i<108;i++)

for(j=296;j<330;j++)

putpixel(i,j,7);

tranzistor(65,312,89,312,161);

line(95,304,95,299);

line(95,320,95,325);

setfillstyle(1,4);

floodfill(89,312,15);

floodfill(70,304,15);

floodfill(83,310,15);

floodfill(83,314,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

cursor_off();

for(i=0;i<=6;i++)

for(j=0;j<=6;j++)

a[i][j]=getpixel(x1-3+j,y1-3+i);

setcolor(8);

circle(x1,y1,3);

setfillstyle(1,14);

floodfill(x1,y1,8);

setcolor(15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x2=ms.hor_pos;

y2=ms.ver_pos;

break;

}

}

cursor_off();

setfillstyle(1,7);

floodfill(89,312,15);

floodfill(70,304,15);

floodfill(83,310,15);

floodfill(83,314,15);

for(i=0;i<=6;i++)

for(j=0;j<=6;j++)

putpixel(x1-3+j,y1-3+i,a[i][j]);

if(x1>108&&x1<630&&x2>108&&x2<630)

if(y1>50&&y1<435&&y2>50&&y2<435)

// вызов функции, рисующей транзистор

tranzistor(x1,y1,x2,y2,kn_add);

cursor_on();

kn_add=0;

kn=0;

break;

case 17:

cursor_off();

setfillstyle(1,4);

floodfill(25,340,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

cursor_off();

setfillstyle(1,7);

floodfill(45,340,15);

if(x1>108&&x1<630&&y1>50&&y1<435)

outtextxy(x1-3,y1-3,"+");

cursor_on();

kn=0;

break;

case 18:

cursor_off();

setfillstyle(1,4);

floodfill(75,340,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

cursor_off();

setfillstyle(1,7);

floodfill(85,340,15);

if(x1>108&&x1<630&&y1>50&&y1<435)

outtextxy(x1-3,y1-3,"-");

cursor_on();

kn=0;

break;

case 19:

cursor_off();

setfillstyle(1,4);

floodfill(10,370,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

cursor_off();

if(x1>108&&x1<630&&y1>50&&y1<435){

outtextxy(x1-3,y1-3,"|");//устан-ка указ-ля

char text[20]="",ch;

i=0;

while((ch=getch())!=13){

text[i++]=ch;//ввод текста

outtextxy(x1+2,y1-3,text);

}

setcolor(7);

outtextxy(x1-3,y1-3,"|");

}

setcolor(15);

setfillstyle(1,7);

floodfill(10,370,15);

cursor_on();

kn=0;

break;

case 20:

cursor_off();

setfillstyle(1,4);

floodfill(62,370,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

if(x1>108&&x1<630&&y1>50&&y1<435){

cursor_off();

setcolor(8);//обозначение узла

circle(x1,y1,2);

setfillstyle(1,15);

floodfill(x1,y1,8);

setcolor(15);

circle(x1,y1,2);

cursor_on();

}

cursor_off();

setfillstyle(1,7);

floodfill(62,370,15);

cursor_on();

kn=0;

break;

case 21:

cursor_off();

setfillstyle(1,4);

floodfill(115,440,15);

floodfill(126,452,15);

floodfill(151,451,15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x1=ms.hor_pos;

y1=ms.ver_pos;

break;

}

}

cursor_off();

for(i=0;i<=6;i++)

for(j=0;j<=6;j++)

a[i][j]=getpixel(x1-3+j,y1-3+i);

setcolor(8);

circle(x1,y1,3);

setfillstyle(1,14);

floodfill(x1,y1,8);

setcolor(15);

cursor_on();

while(1){

if((ms_release(&ms,0)==1)||(ms_release(&ms,1)==1)){

x2=ms.hor_pos;

y2=ms.ver_pos;

break;

}

}

cursor_off();

for(i=0;i<=6;i++)

for(j=0;j<=6;j++)

putpixel(x1-3+j,y1-3+i,a[i][j]);

if(x1>108&&x1<630&&x2>108&&x2<630)

if(y1>50&&y1<435&&y2>50&&y2<435)

// вызов функции коррекции

correct(x1,y1,x2,y2);

setfillstyle(1,7);

floodfill(115,440,15);

floodfill(126,452,15);

floodfill(151,451,15);

cursor_on();

kn=0;

break;

case 22:

cursor_off();

setfillstyle(1,4);

floodfill(180,440,15);

char file1[20]="",ch1;

FILE *f1;//указатель на файл

for(i=377;i<=629;i++)

for(j=436;j<=469;j++)

putpixel(i,j,7);//очистка командной строки

outtextxy(380,440,"input name:");

i=0;

while((ch1=getch())!=13){

file1[i++]=ch1;//отобр-е вводимой строки на экран

outtextxy(380,453,file1);

}

for(i=377;i<=629;i++)

for(j=436;j<=469;j++)

putpixel(i,j,7); //очистка командной строки

if((f1=fopen(file1,"wt"))==NULL)

outtextxy(450,450,"error");

else{

fseek(f1,0,SEEK_SET);//запись в файл

for(i=109;i<=629;i++)

for(j=51;j<=434;j++){

if(getpixel(i,j)==15)

fputc(‘1’,f1);

else

fputc(‘0’,f1);

}

}

fclose(f1);//закрытие файла

setfillstyle(1,7);

floodfill(180,440,15);

cursor_on();

kn=0;

break;

case 23:

cursor_off();

setfillstyle(1,4);

floodfill(245,440,15);

floodfill(263,452,15);

floodfill(271,452,15);

char file2[20]="",ch2;

FILE *f2;

for(i=377;i<=629;i++)

for(j=436;j<=469;j++)

putpixel(i,j,7);

outtextxy(380,440,"input name:");

i=0;

while((ch2=getch())!=13){

file2[i++]=ch2;

outtextxy(380,453,file2);

}

for(i=377;i<=629;i++)

for(j=436;j<=469;j++)

putpixel(i,j,7);

if((f2=fopen(file2,"rt"))==NULL)

outtextxy(450,450,"error");

else{

fseek(f2,+1,SEEK_SET);

for(i=109;i<=629;i++)

for(j=51;j<=434;j++){

if(fgetc(f2)==’1′)//открытие файла

putpixel(i,j,15);

else

putpixel(i,j,7);

}

}

fclose(f2);

setfillstyle(1,7);

floodfill(245,440,15);

floodfill(263,452,15);

floodfill(271,452,15);

cursor_on();

kn=0;

break;

case 24:

cursor_off();

setfillstyle(1,4);

floodfill(372,440,15);

floodfill(328,452,15);

printgraph(109,51,629,434);//распечатка файла

setfillstyle(1,7); //(указ-ся лев. верхн. и

//прав. нижн. угол обл. экр.)

floodfill(372,440,15);

floodfill(328,452,15);

cursor_on();

kn=0;

break;

case 25:

flag=0;//признак конца программы

cursor_off();

break;

}//от switch

} while(flag!=0); //от do

closegraph();

}//от main

/* Определение функций, конструирующих выбранные элементы */

//Функция, определяющая первоначальный угол наклона к оси ох

int pozition(int x1,int y1,int x2,int y2){

int rezult=0;//результат: 1-горизонтальное положение,

//2-вертикальное положение, 3-под углом 45 градусов к

//оси ox, 4-под углом 135 градусов к оси ox.

float fi;//угол

if(x2==x1)

fi=3.14/2.0;

else

if(y2==y1)

fi=0;

else

if(((x2>x1)&&(y2<y1))||((x2<x1)&&(y2>y1)))

fi=atan2(abs(y2-y1),abs(x2-x1));

else

if(((x2>x1)&&(y2>y1))||((x2<x1)&&(y2<y1)))

fi=3.14-atan2(abs(y2-y1),abs(x2-x1));

if((fi>=0&&(fi<=(3.14/9.0)))||(fi>=(8.0*3.14/9)&&fi<=3.14))

rezult=1;

if(fi>=(7.0*3.14/18.0)&&fi<=(11.0*3.14/18.0))

rezult=2;

if((fi>(3.14/9.0)&&fi<(7.0*3.14/18.0)))

rezult=3;

if((fi>(11.0*3.14/18.0)&&fi<(8.0*3.14/9)))

rezult=4;

return(rezult);

//возвращается номер диапозона: 1-от 0 до 20 и от 160 до 180

//2-от 70 до 110 градусов, 3-от 20 до 70 и 4-от 110 до 160 гр.

}

//Функция, рисующая резистор

void rezistor(int x1,int y1,int x2,int y2){

int x3,y3;//координаты середины элемента

//выбор номера диапозона

switch(pozition(x1,y1,x2,y2)){

case 1:

if(x2>x1){

x3=x1+(x2-x1)/2;

y2=y1;

line(x1,y1,x3-11,y1);

line(x3+11,y2,x2,y2);

line(x3-11,y1-5,x3-11,y1+5);

line(x3+11,y2-5,x3+11,y2+5);

line(x3-11,y1-5,x3+11,y2-5);

line(x3-11,y1+5,x3+11,y2+5);

}

if(x2<x1){

x3=x2+(x1-x2)/2;

y2=y1;

line(x2,y2,x3-11,y2);

line(x3+11,y1,x1,y2);

line(x3-11,y2-5,x3-11,y1+5);

line(x3+11,y1-5,x3+11,y2+5);

line(x3-11,y2-5,x3+11,y2-5);

line(x3-11,y2+5,x3+11,y2+5);

}

break;

case 2:

if(y1<y2){

y3=y1+(y2-y1)/2;

x2=x1;

line(x1,y1,x1,y3-11);

line(x2,y3+11,x2,y2);

line(x1-5,y3-11,x1+5,y3-11);

line(x2-5,y3+11,x2+5,y3+11);

line(x1-5,y3-11,x2-5,y3+11);

line(x1+5,y3-11,x2+5,y3+11);

}

if(y1>y2){

y3=y2+(y1-y2)/2;

x2=x1;

line(x1,y1,x1,y3+11);

line(x2,y3-11,x2,y2);

line(x1-5,y3+11,x1+5,y3+11);

line(x1-5,y3-11,x1+5,y3-11);

line(x1-5,y3-11,x1-5,y3+11);

line(x1+5,y3-11,x1+5,y3+11);

}

break;

case 3:

if(x2>x1){

y2=y1-(x2-x1);

x3=x1+(x2-x1)/2;

y3=y1+(y2-y1)/2;

line(x1,y1,x3-8,y3+8);

line(x3+8,y3-8,x2,y2);

line(x3-12,y3+4,x3-4,y3+12);

line(x3+4,y3-12,x3+12,y3-4);

line(x3-12,y3+4,x3+4,y3-12);

line(x3-4,y3+12,x3+12,y3-4);

}

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-8,y3+8,x2,y2);

line(x3-12,y3+4,x3-4,y3+12);

line(x3+4,y3-12,x3+12,y3-4);

line(x3-12,y3+4,x3+4,y3-12);

line(x3-4,y3+12,x3+12,y3-4);

}

break;

case 4:

if(x2>x1){

y2=y1+(x2-x1);

x3=x1+(x2-x1)/2;

y3=y1+(y2-y1)/2;

line(x1,y1,x3-8,y3-8);

line(x3+8,y3+8,x2,y2);

line(x3-4,y3-12,x3-12,y3-4);

line(x3+12,y3+4,x3+4,y3+12);

line(x3-12,y3-4,x3+4,y3+12);

line(x3-4,y3-12,x3+12,y3+4);

}

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-8,y3-8,x2,y2);

line(x3+4,y3+12,x3+12,y3+4);

line(x3-12,y3-4,x3-4,y3-12);

line(x3+4,y3+12,x3-12,y3-4);

line(x3+12,y3+4,x3-4,y3-12);

}

break;

}

}

Загрузка...