Program Szimulacio_Keret; Uses Crt,Graph; Const Jobbra=#75; Balra=#77; Fel=#72; Le=#80; Esc=#27; Enter=#13; Max=10; Mdb=7; Mpont: Array [1..Mdb] of String=('Norml','Csendes','Grafikon ki/be','Lpsenknt', 'Paramterek','Sg','Kilps'); Type TMpont=Record e,v : Integer; End; TMenu=Array [1..Max] Of TMpont; Var path : String; szl : Integer; s_szl : String; x,y:integer; szin:integer; n_e,n_t,n_v,n_a : integer; szt_e,szt_t,szt_v,szt_a : integer; p_e,p_t,p_v,p_a : integer; g_e,g_t,g_v,g_a : integer; m_t,m_a : Integer; Procedure Szovegesre; begin CloseGraph; {lezarja a grafikus uzemmodot} RestoreCrtMode; {Visszaallitja az InitGraph meghivasa elotti kepernyokezelesi modot} end; Procedure Grafikusra; Var gd,gm : integer; hiba:integer; kilep:boolean; valasz:char; Begin kilep:=False; path:={'d:\nyelvek\tp7\bgi';}'c:\langs\tp\bgi'; Repeat DetectGraph(gd,gm); {detektalja a grafikus eszkozt} InitGraph(gd,gm,path); {inicializalja a grafikus rendszert} hiba:=GraphResult; If hiba<>Grok Then Begin ClrScr; GotoXY(2,2); WriteLn('A grafikus mdhoz szksges a Graph.tpu elrsi tja.'); Gotoxy(2,3); Write('Kivnja megadni az elrsi utat (i/n)? '); Repeat valasz:=ReadKey; Until (valasz='i') or (valasz='I') or (valasz='n') or (valasz='N'); If (valasz='i') or (valasz='I') Then Begin Gotoxy(2,4); Write('Az utvonal: '); ReadLn(path); End Else Begin kilep:=True; End; End Else Begin kilep:=True; End; Until kilep; End; Procedure SzimLepes; Begin SetTextJustify(0,2); SetColor(0); OutTextXY(p_e+155,p_t+5,s_szl); szl:=szl+1; Str(szl,s_szl); SetTextJustify(0,2); SetColor(3); OutTextXY(p_e+155,p_t+5,s_szl) End; Procedure SzimNev(szimulacio_nev:String); Var x,y:Integer; Begin szin:=Getcolor; {szim nv ablakkoordintk} n_e:=5; n_t:=5; n_v:=GetMaxX-5; n_a:=25; {szim nv ablak} SetfillStyle(1,1); Bar(n_e,n_t,n_v,n_a); {szim nv kiirsa} x:=Round(((n_v-n_e)/2)); y:=n_t+Round((n_a-n_t)/2); SetTextJustify(1,1); SetColor(15); OutTextXY(x,y,szimulacio_nev); SetColor(szin); End; Procedure Ablakok(szimter:Boolean; parameter:Boolean; grafikon:Boolean); Begin szin:=GetColor; setcolor(7); If szimter Then Begin {szimtr ablakkoordintk} szt_e:=5; szt_t:=35; szt_v:=405; szt_a:=225; {szimtr ablak} Rectangle(szt_e,szt_t,szt_v,szt_a); End; If grafikon Then Begin {grafikon ablakkoordintk} g_e:=5; g_t:=245; g_v:=GetMaxX-5; g_a:=GetMaxY-35; {grafikon ablak} Rectangle(g_e,g_t,g_v,g_a); End; If parameter Then Begin {paramter ablakkoordintk} p_e:=415; p_t:=35; p_v:=GetMaxX-5; p_a:=105; {paramter ablak} Rectangle(p_e,p_t,p_v,p_a); {} SetTextJustify(0,2); OutTextXY(p_e+5,p_t+5,'Szimulcis lps: '); Str(szl,s_szl); SetColor(3); OutTextXY(p_e+155,p_t+5,s_szl) End; SetColor(szin); End; Procedure Menu; Var x,y,i :Integer; menum : TMenu; akt_mp: Integer; bill : Char; szeles : Integer; kilep:Boolean; Begin szin:=GetColor; akt_mp:=5; kilep:=False; Repeat {menu ablakkoordintk} m_t:=GetMaxY-25; m_a:=GetMaxY-5; szeles:=TextWidth(mpont[1])+20; menum[1].e:=5; menum[1].v:=menum[1].e+szeles; For i:=2 To Mdb Do Begin menum[i].e:=menum[i-1].v; szeles:=TextWidth(mpont[i])+20; menum[i].v:=menum[i].e+szeles; End; {menupontok kiirsa} For i:=1 To Mdb Do Begin If i=akt_mp Then Begin SetfillStyle(1,3); SetColor(1); End Else Begin SetfillStyle(1,1); SetColor(3); End; Bar(menum[i].e,m_t,menum[i].v,m_a); SetTextJustify(1,1); x:=menum[i].e+Round(((menum[i].v-menum[i].e)/2)); y:=m_t+Round((m_a-m_t)/2); OutTextXY(x,y,Mpont[i]); End; {Mozgs} Repeat bill:=ReadKey; Until bill in [Jobbra,Balra,Esc,Enter]; Case bill Of Jobbra : Begin If akt_mp>1 Then Begin akt_mp:=akt_mp-1; End Else Begin akt_mp:=7; End; End; Balra : Begin If akt_mp<7 Then Begin akt_mp:=akt_mp+1; End Else Begin akt_mp:=1; End; End; Enter : Begin Case akt_mp Of 1: Begin SzimLepes; End; 2: Begin SzimLepes; End; 3: Begin End; 4: Begin SzimLepes; End; 5: Begin End; 6: Begin End; 7: Begin kilep:=True; End; End; End; Esc : Begin kilep:=True; End; Fel : Begin End; Le : Begin End; End; Until (kilep); SetColor(szin); End; BEGIN Grafikusra; SzimNev('Szimulcis keretprogram'); Ablakok(true,true,true); Menu; Szovegesre; END.