unit grafdiff; interface uses crt,graph; const {maxn=100;} szin=9; szurke=8; maxn=50; maxm=50; maxi=100; type pont= record x,y:integer;end; ablak= record bf,ja:pont;end; keptip =array[1..4] of ablak; { diatip=array[1..maxn] of {real integer; } string25=string[25]; var kep:keptip; { dia:diatip;} dx,dy:real; sx,sy:integer; const menupont:array[1..4] of string25=('1. Parameter beallitasa', '2. Lepesenkent', '3. Folyamatos', '4. Kilepes'); function initgr(var PATH:string):boolean; procedure szovegesre; procedure ablinic(const vfoszt:real;const ffoszt:real;const cim:string); procedure kepadat(const melyik:integer;var x1,y1,x2,y2:integer); procedure keptorol(melyik:integer); procedure gaz(const u,v,r:integer;const szin:integer;const ki:integer); procedure teglalap(bal1,bal2,jobb1,jobb2:integer;szin:integer); procedure szakaszrajz(const x1,y1,x2,y2:integer;const szin:integer); function menuzes(var valaszt:integer):integer; procedure valtoztat(akt,k1,k2,k3,k4:integer;var suruseg:real;var ido:integer;var n:integer;var m:integer); implementation function initgr(var PATH:string):boolean; var hiba:integer; gd,gm:integer; { path:string; } v:char; Procedure inic; begin detectgraph(gd,gm); initgraph(gd,gm,path); hiba:=graphresult; {sikeres volt-e az inicializalas} end; begin repeat {path:='c:\langs\tp\bgi';} {path:='c:\tp\bgi';} inic; if (hiba<>grok) then begin clrscr; writeln('Hol tal lhat˘ az egavga.bgi f jl? '); readln(path); inic; if (hiba<>grok) then begin writeln('Rossz ez az utvonal.'); repeat Writeln('Akar £jat megadni? (i/n)'); v:=readkey; if (v<>'i') and (v<>'n') then writeln('Nincs ilyen v laszlehet‹s‚g!'); until (v='i') or (v='n'); if v='i' then inic; end; end; until ((v='n') or (hiba=grok)); initgr:=(hiba=grok); if (hiba=grok) then begin sx:=getmaxx; sy:=getmaxy; end; end; procedure szovegesre; begin CloseGraph; {lezarja a grafikus uzemmodot} RestoreCrtMode; {Visszaallitja az InitGraph meghivasa elotti kepernyokezelesi modot} end; procedure teglalap(bal1,bal2,jobb1,jobb2:integer;szin:integer); begin setcolor(szin); bar(bal1,bal2,jobb1,jobb2); setcolor(15); end; procedure ablinic(const vfoszt:real;const ffoszt:real;const cim:string); var i,e:integer; begin e:=5; setcolor(9); rectangle(1,1,sx,20); setcolor(15); i:=round(sx/2-50); outtextxy(i,8,cim); kep[1].bf.x:=1; kep[1].bf.y:=e*2+20; kep[1].ja.x:=round(sx*vfoszt-e); kep[1].ja.y:=round(sy*ffoszt-e); kep[2].bf.x:=round(sx*vfoszt+e); kep[2].bf.y:=e*2+20; kep[2].ja.x:=sx-1; kep[2].ja.y:=round(sy*ffoszt-e); kep[3].bf.x:=1; kep[3].bf.y:=round(sy*ffoszt+e); kep[3].ja.x:=round(sx*vfoszt-e); kep[3].ja.y:=sy-1; kep[4].bf.x:=round(sx*vfoszt+e); kep[4].bf.y:=round(sy*ffoszt+e); kep[4].ja.x:=sx-1; kep[4].ja.y:=sy-1; for i:=1 to 4 do begin teglalap(kep[i].bf.x,kep[i].bf.y,kep[i].ja.x,kep[i].ja.y,9); end; end; procedure kepadat(const melyik:integer;var x1,y1,x2,y2:integer); begin x1:=kep[melyik].bf.x; y1:=kep[melyik].bf.y; x2:=kep[melyik].ja.x; y2:=kep[melyik].ja.y; end; procedure keptorol(melyik:integer); begin setfillstyle(1,0); bar(kep[melyik].bf.x+1,kep[melyik].bf.y+1,kep[melyik].ja.x-1,kep[melyik].ja.y-1); setfillstyle(15,0); end; procedure gaz(const u,v,r:integer;const szin:integer;const ki:integer); begin setcolor(szin); setfillstyle(1,szin); circle(u,v,r); floodfill(u,v,ki); setfillstyle(1,15); setcolor(15); end; procedure szakaszrajz(const x1,y1,x2,y2:integer;const szin:integer); begin setcolor(szin); line(x1,y1,x2,y2); setcolor(15); end; function menuzes(var valaszt:integer):integer; var ch:char; akt:integer; begin {setcolor(0);} outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+valaszt*15,'*'); {setcolor(white);} outtextxy(kep[2].bf.x+25,kep[2].bf.y+15,'Menu'); outtextxy(kep[2].bf.x+25,kep[2].bf.y+35,menupont[1]); outtextxy(kep[2].bf.x+25,kep[2].bf.y+50,menupont[2]); outtextxy(kep[2].bf.x+25,kep[2].bf.y+65,menupont[3]); outtextxy(kep[2].bf.x+25,kep[2].bf.y+80,menupont[4]); menuzes:=0; {outtextxy(kep[2].bf.x+10,kep[2].bf.y+35,'*');} ch:=#0; akt:=valaszt; while (ch<>#13) do begin ch:=readkey; outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+akt*15,'*'); if ch=chr(0) then ch:=readkey; case ch of #72: begin {fellep} setcolor(0); outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+akt*15,'*'); setcolor(white); if akt=0 then akt:=3 else akt:=akt-1; outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+akt*15,'*'); end; #80: begin {lelep} setcolor(0); outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+akt*15,'*'); setcolor(white); if akt=3 then akt:=0 else akt:=akt+1; outtextxy(kep[2].bf.x+10,kep[2].bf.y+35+akt*15,'*'); end; end; end; menuzes:=akt; {valaszt:=akt;} end; procedure valtoztat(akt,k1,k2,k3,k4:integer;var suruseg:real;var ido:integer;var n:integer;var m:integer); var kar:char; sz:string; begin kar:=#0; case akt of {0: {suruseg valtoztatasa} 1: {ido} begin setcolor(szurke); str(suruseg,sz);outtextxy(k1+5,k2+5,'A gaz surusege: '+sz); str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); while (kar<>#13) do begin kar:=readkey; if kar=chr(0) then kar:=readkey;{??????????} case kar of #77: begin {noveli} setcolor(0); {torli} str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); setcolor(white); if ido=maxi then ido:=1 else ido:=ido+1; str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); end; #75: begin {csokkenti} setcolor(0); {torli} str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); setcolor(white); if ido=1 then ido:=maxi else ido:=ido-1; str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); end; end;{elagazas vege} end;{ciklus vege} end;{ido vege} 2: {szelesseg} begin setcolor(szurke); str(suruseg,sz);outtextxy(k1+5,k2+5,'A gaz surusege: '+sz); str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); while (kar<>#13) do begin kar:=readkey; if kar=chr(0) then kar:=readkey;{??????????} case kar of #77: begin {noveli} setcolor(0); {torli} str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); setcolor(white); if n=maxn then n:=1 else n:=n+1; str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); end; #75: begin {csokkenti} setcolor(0); {torli} str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); setcolor(white); if n=1 then n:=maxn else n:=n-1; str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); end; end;{elagazas vege} end;{ciklus vege} end; 3: {magassag} begin setcolor(szurke); str(suruseg,sz);outtextxy(k1+5,k2+5,'A gaz surusege: '+sz); str(ido,sz);outtextxy(k1+5,k2+25,'Idotartalm: '+sz); str(n,sz);outtextxy(k1+5,k2+45,'A ter szelessege: '+sz); while (kar<>#13) do begin kar:=readkey; if kar=chr(0) then kar:=readkey;{??????????} case kar of #77: begin {noveli} setcolor(0); {torli} str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); setcolor(white); if m=maxm then m:=1 else m:=m+1; str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); end; #75: begin {csokkenti} setcolor(0); {torli} str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); setcolor(white); if m=1 then m:=maxm else m:=m-1; str(m,sz);outtextxy(k1+5,k2+65,'A ter magassaga: '+sz); end; end;{elagazas vege} end;{ciklus vege} end; end; end; begin end.