Program SACHY; uses crt, graph, Mys, Ovladac; var grDriver : Integer; grMode : Integer; ErrCode : Integer; pal : palettetype; zmena, konec : boolean; KX, KY : integer; procedure Inicializace; begin grDriver := Detect; RegisterBGIDriver(@CGAOvladac); RegisterBGIDriver(@EGAVGAOvladac); RegisterBGIFont(@TripFont); InitGraph(grDriver,grMode,''); ErrCode := GraphResult; if ErrCode <> grOk then begin WriteLn('Graphics error:',GraphErrorMsg(ErrCode)); CloseGraph; Halt(1); end; end; procedure Pozadi(clr1, clr2, clr3, clr4: word); var c1, c2, c3, c4: word; begin c1 := clr1; c2 := clr2; c3 := clr3; c4 := clr4; setcolor(c1); setfillstyle(solidfill,c1); bar(0,0,639,479); { pozadi } setcolor(c2); setfillstyle(solidfill,c2); bar(0,0,2,479); { okrajove listy } bar(637,0,639,479); bar(0,0,639,22); bar(0,477,639,479); setcolor(c3); rectangle(0,0,639,479); { vnejsi obdelnik } rectangle(3,3,636,476); { vnitrni obdelnik } rectangle(3,3,636,22); { horni radek } line(20,0,20,3); { levy horni roh } line(0,20,3,20); line(619,0,619,3); { pravy horni roh } line(636,20,639,20); line(0,459,3,459); { levy dolni roh } line(20,476,20,479); line(619,476,619,479);{ pravy dolni roh } line(636,459,639,459); setcolor(7); { dolni radek } setfillstyle(solidfill,7); bar(6,454,633,473); setcolor(white); line(6,454,633,454); line(6,454,6,473); setcolor(black); line(6,473,633,473); line(633,454,633,473); line(8,456,200,456); { dolni radek - vnitrni okenko } line(8,456,8,471); setcolor(white); line(8,471,200,471); line(200,471,200,456); setcolor(c4); settextstyle(defaultfont,0,1); outtextxy(305,9,'Chess'); outtextxy(280,461,'Beta version Copyright 2000 David Padrta'); end; procedure Sachovnice; var i, j: integer; z: boolean; begin for i:=0 to 8 do begin setcolor(black); line(50+5*i,370-35*i,410-5*i,370-35*i); { vodorovne cary } line(50+45*i,370,90+35*i,90); { svisle cary } end; for i:=0 to 7 do rectangle(50+45*i,370,95+45*i,375); z := true; end; procedure Tlacitko(rx, ry: integer; clc: boolean; txt: string); var delka, l, mx, my: integer; click: boolean; text: string; begin mx := rx; my := ry; click := clc; text := txt; delka := 70; l := length(text); if ((l+1)*8) > delka then delka := (l+1)*8; if (delka=70) then begin setcolor(lightgray); setfillstyle(solidfill,lightgray); bar(mx-1, my-1, mx+delka+1, my+20); if (clc = true) then begin setcolor(white); line(mx, my, mx, my+19); line(mx, my, mx+delka, my); setcolor(black); line(mx+delka, my, mx+delka, my+19); line(mx, my+19, mx+delka, my+19); settextstyle(defaultfont,0,1); outtextxy(mx+(35-((length(text)*8)div 2)), my+6, text); end else begin setcolor(white); line(mx+delka, my, mx+delka, my+19); line(mx, my+19, mx+delka, my+19); setcolor(black); line(mx, my, mx, my+19); line(mx, my, mx+delka, my); settextstyle(defaultfont,0,1); outtextxy(mx+(36-((length(text)*8)div 2)), my+7, text); end; end; if (delka>70) then begin setcolor(lightgray); setfillstyle(solidfill,lightgray); bar(mx-1, my-1, mx+delka+1, my+20); if (clc = true) then begin setcolor(white); line(mx, my, mx, my+19); line(mx, my, mx+delka, my); setcolor(black); line(mx+delka, my, mx+delka, my+19); line(mx, my+19, mx+delka, my+19); settextstyle(defaultfont,0,1); outtextxy(mx+((delka div 2)-((length(text)*8)div 2)), my+6, text); end else begin setcolor(white); line(mx+delka, my, mx+delka, my+19); line(mx, my+19, mx+delka, my+19); setcolor(black); line(mx, my, mx, my+19); line(mx, my, mx+delka, my); settextstyle(defaultfont,0,1); outtextxy(mx+(((delka div 2)+1)-((length(text)*8)div 2)), my+7, text); end; end; end; procedure Stisk_Tlacitka(px, py: integer; t: string); begin Kurzor_off; Tlacitko(px,py,zmena,t); Kurzor_on; zmena := not(zmena); delay(250); Kurzor_off; Tlacitko(px,py,zmena,t); Kurzor_on; zmena := not(zmena); KX := Kurzor_X; KY := Kurzor_Y; delay(100); end; procedure Intro; var i: integer; begin for i:=0 to 21 do begin setrgbpalette(62,3*i,0,0); setcolor(62); settextstyle(triplexfont,horizdir,10); outtextxy(130,100,'CHESS'); settextstyle(triplexfont,horizdir,4); outtextxy(70,250,'Copyright (c)2000 David Padrta'); outtextxy(160,300,'All rights reserved.'); delay(50); end; delay(1000); for i:=21 downto 0 do begin setrgbpalette(62,3*i,0,0); setcolor(62); settextstyle(triplexfont,horizdir,10); outtextxy(130,100,'CHESS'); settextstyle(triplexfont,horizdir,4); outtextxy(70,250,'Copyright (c)2000 David Padrta'); outtextxy(160,300,'All rights reserved.'); delay(50); end; end; BEGIN zmena := false; konec := false; KX := -1; KY := -1; Inicializace; Intro; Pozadi(7,2,0,15);{pozadi,ram,linie ramu,pismo} Sachovnice; Tlacitko(550,50,true,'OK'); Tlacitko(550,75,true,'Zrusit'); Tlacitko(550,100,true,'Pomoc'); Tlacitko(550,125,true,'Konec'); Mys_start; Kurzor_on; repeat Stav_Mysi; if ((KX <> Kurzor_X) or (KY <> Kurzor_Y)) then begin if ((Kurzor_X >= 550) and (Kurzor_X <= 620)) and ((Kurzor_Y >= 50) and (Kurzor_Y <= 70)) and (Tlacitko_Leve = true) then Stisk_tlacitka(550,50,'OK'); if ((Kurzor_X >= 550) and (Kurzor_X <= 620)) and ((Kurzor_Y >= 75) and (Kurzor_Y <= 95)) and (Tlacitko_Leve = true) then Stisk_tlacitka(550,75,'Zrusit'); if ((Kurzor_X >= 550) and (Kurzor_X <= 620)) and ((Kurzor_Y >= 100) and (Kurzor_Y <= 120)) and (Tlacitko_Leve = true) then Stisk_tlacitka(550,100,'Pomoc'); if ((Kurzor_X >= 550) and (Kurzor_X <= 620)) and ((Kurzor_Y >= 125) and (Kurzor_Y <= 145)) and (Tlacitko_Leve = true) then begin Stisk_tlacitka(550,125,'Konec'); konec := true; end; end; until (konec = true); cleardevice; CloseGraph; clrscr; END.