Uses MyCrt, Graph{, Bgi_Inc}; { Kb. egy hasonl kperny-felosztst kne megvalstani : (ASCII-art rulez :) .--------------------------------------------------------. | Szimulci neve | |---------------------------------------.----------------| | |Szim.lps szma| | |----------------| | Szimulcis tr | | | | | | | | | | Paramterek | |---------------------------------------| | | | | | Grafikon | | | | | | | | |---------------------------------------^----------------| | Men | |--------------------------------------------------------| | Sttusz-sor | `--------------------------------------------------------' Menpontok: norml - csendes - grafikon - lpsenknt - paramterek - kilps - (segtsg) - norml: szim.tr be, grafikon be, folyamatos be - csendes: szim.tr ki, grafikon ki, folyamatos be - grafikon: grafikon ki/bekapcsolsra val - lpsenknt: folyamatos ki - paramterek, segtsg: folyamatos ki Szimulcis tr frisstse Grafikon frisstse (cssztatssal) <- 2 darab, egyik a cssztats, msik ha j adat rkezett Szimulcis lps szmnak frisstse Paramterek frisstse Szimulcis tr, ill. grafikon "kdstse" Sznek tprogramozsa - ChangeColors - csak VGA-n Menkezel rutin "fl-delay" rutin : szmll-figyels 40:6C ****************************************************************************** Frutin: Ha billencs rkezett -->> Ha eltelt egy idegysg az utols frissts ta j szim. lps kiszmtsa Szimulcis tr frisstse Grafikon frisstse Paramterek frisstse klnben vretr figyels Grafikon idarnyos cssztats vagy Szimulcis tr s/vagy Grafikon kdstse E.v. } Type TAblak = Array [0..4] of Integer; Const Cim = 0; SzimTer = 1; Grafikon = 2; Menu = 3; LepesSzam = 4; Parameterek = 5; Var Ablakok : Array[0..5] of TAblak; Procedure Grafikusra; Var grDriver: Integer; grMode: Integer; ErrCode: Integer; begin DetectGraph(grDriver, grMode); { grDriver := Detect;} InitGraph(grDriver, grMode,' '); ErrCode := GraphResult; if not ErrCode = grOk then Writeln('Graphics error:', GraphErrorMsg(ErrCode)); end; Procedure Teglalap(bfx,bfy,jax,jay : integer; szin : byte); Begin SetFillStyle(1,szin); Bar(bfx, bfy, jax, jay); End; Procedure Ablak(bfx,bfy,jax,jay : integer; szin : byte); Var i : integer; Begin Teglalap(bfx+1,bfy,jax-1,jay,szin); Teglalap(bfx,bfy+1,jax,jay-1,szin); SetColor(8); For i:=0 to 3 do Begin { SetLineStyle(i,0,0);} Line(bfx+1+(i and 2)-(i and 1)*(i and 2),jay+1+i,jax+5-i,jay+1+i); End; End; Var hatter : Byte; Procedure RakdKiAzAblakokat; Begin { Bar(bfx, bfy, jax, jay);} Teglalap(0,0,GetMaxX,GetMaxY,2); Teglalap(0,GetMaxY-TextHeight('H')-2,GetMaxX,GetMaxY,hatter); Ablak(GetMaxX div 3,GetMaxY div 3,(GetMaxX*2) div 3, (GetMaxY*2) div 3,7); SetFillStyle(1,15); { Line(0, 0, GetMaxX, GetMaxY); Line(GetMaxX, 0, 0, GetMaxY);} { OutText('Nyomj iszkpet a kilpshez baszki!');} End; Procedure setPAL(r,g,b : byte); Begin Asm Mov Dx,3C8h Mov Al,2 Out Dx,Al Inc Dl Mov Al,r Out Dx,Al Mov Al,g Out Dx,Al Mov Al,b Out Dx,Al End End; Var c : Char; r,g,b : byte; s,s2 : string; BEGIN Grafikusra; RakdKiAzAblakokat; r:=21; g:=42; b:=21; setPAL(r,g,b); c:=#1; repeat c:=ReadKey; if c=#0 then Begin c:=ReadKey; case c of #71 : if r<63 then inc(r); #72 : if g<63 then inc(g); #73 : if b<63 then inc(b); #79 : if r>0 then dec(r); #80 : if g>0 then dec(g); #81 : if b>0 then dec(b); end; setPAL(r,g,b); Ablak(GetMaxX div 3,GetMaxY div 3,(GetMaxX*2) div 3, (GetMaxY*2) div 3,7); SetFillStyle(1,0); SetTextStyle(2,0,2); SetTextJustify(1,0); str(r,s2); str(g,s); s2:=s2+','+s; str(b,s); s2:=s2+','+s; outtextxy(GetMaxX div 2,GetMaxY div 2,s2); End; { if (c>='0') and (c<='9') then begin hatter:=ord(c)-48; RakdKiAzAblakokat; end; c:=upcase(c); if (c>='A') and (c<='F') then begin hatter:=ord(c)-55; RakdKiAzAblakokat; end; } until c=#27; CloseGraph; END.