{ SACH.PAS Copyright (c) Miro Kuki } { } { Je tu koneène šach pre dvoch (síce s hroznou grafilkou, ale èo už)} { Ovládanie je ve¾mi jednoduché pohybuje sa pomocou: } { ‹ èo umožní pohyb smerom do ¾ava } { ¡ èo umožní pohyb smerom dolu } { › èo umožní pohyb smerom do prava } { ^ èo umožní pohyb smerom nahor } { medzerník èo umožní zobratie figúrky } { } { V - znamená veža } { K - znamená kôò } { S - znamená strelec } { Q - znamená krá¾ovna } { + - znamená krá¾, s ktorým sa ešte nepohlo } { R - znamená krá¾, s ktorým sa pohlo } { P - znamená pešiak } { } { Pre ukonèenie nápovedy stisnite "ENTER" a pre ukonèenie hry } { stisnite k (ale až po tom,ako stlaèíte "ENTER" ) } { Prajem príjenu zábavu } { } { Author: Miro Kuki } { Date : 28.8.2006 http://www.trsek.com } program sach; uses crt; const biely = 15; cierny = 9; minx = 30; {UrŸuje, kde sa nach dza prvì bod} miny = 10; hlaska = 12; z = 15; vy = 14; ak = 13; ine = 11; koniec = 12; var sachovnica : array [minx..minx+16,miny..miny+16] of char; {tu sa uklada, Ÿi ide o Ÿierneho alebo bieleho} pole : array [minx..minx+16,miny..miny+16] of char; poradie : byte; pomocna : char; p : char; x,y : byte; px,py : byte; nic : char; j,i : integer; {na vymazanie sachovnice, ale d  sa hocikde pou§iœ} ozaj : boolean; kral1pohyb,kral2pohyb : boolean; prvytah : array [1..16,1..2] of boolean;{pre prvy tah pesiaka} e,f : byte; koniechry : boolean; Function zistenieciniektonevyhral:boolean; var a,b,c:byte; begin c:=0; zistenieciniektonevyhral:=false; for a:=miny to miny+16 do for b:=minx to minx+16 do begin if sachovnica[b,a] = 'Å' then inc(c); end; if c < 2 then zistenieciniektonevyhral:=true; end; Procedure pohyb; begin case p of 'H': dec(y,2); 'P': inc(y,2); 'K': dec(x,2); 'M': inc(x,2); end; if x >= minx+17 then x:=minx+2; if x <= minx then x:=minx+16; if y >= miny+17 then y:=miny+2; if y <= miny then y:=miny+16; end; Procedure vymena; var proc:boolean; begin proc:=true; if pomocna = 'P' then begin if (y = 12) or (y = 26) then begin repeat gotoxy(35,30); write('Nap¡ç ktor£ chceç fig£rku: '); readln(pomocna); case pomocna of 'v': begin if poradie = 1 then pole[x,y]:='c' else pole[x,y]:='b'; pomocna:='V'; proc:=true; end; 'q': begin if poradie = 1 then pole[x,y]:='c' else pole[x,y]:='b'; pomocna:='Q'; proc:=true; end; 's': begin if poradie = 1 then pole[x,y]:='c' else pole[x,y]:='b'; pomocna:='S'; proc:=true; end; 'k': begin if poradie = 1 then pole[x,y]:='c' else pole[x,y]:='b'; pomocna:='K'; proc:=true; end; else begin proc:=false; gotoxy(46,30); write(' '); end; end; until proc=true; end; end; gotoxy(35,30); write(' '); end; Function skusp:boolean; {pre peçiakov} begin skusp:=false; if pomocna = 'P' then begin f:=(px-minx); if poradie = 1 then begin {Zaciatok cierneho} if ((pole[x,y] = 'b') and ((px = x+2) and (py = y+2))) or ((pole[x,y] = 'b') and ((px = x-2) and (py = y+2))) then skusp:=false else begin if ((py >= (y+4)) and (prvytah[f,2] = true)) or ((py >= (y+6)) and (prvytah[f,2] = false)) or (pole[x,y] = 'c') or (py < y) or ((pole[x,y] = ' ') and (px <> x)) or ((pole[x,y] = ' ') and (py = y)) or ((pole[x,y] = 'b') and (px = x)) or ((pole[x,y] = 'b') and (py = y)) or (pole[x,y] = 'c') or (px <> x) then begin skusp:=true; y:=py; x:=px; textcolor(cierny); end; end; end {koniec cierneho} else {Zaciatok bieleho} begin if ((pole[x,y] = 'c') and ((px = x+2) and (py = y-2))) or ((pole[x,y] = 'c') and ((px = x-2) and (py = y-2))) then skusp:=false else begin if ((py <= (y-4)) and (prvytah[f,1] = true)) or ((py <= (y-6)) and (prvytah[f,1] = false)) or (pole[x,y] = 'b') or (py > y) or ((pole[x,y] = ' ') and (px <> x)) or ((pole[x,y] = ' ') and (py = y)) or ((pole[x,y] = 'c') and (px = x)) or ((pole[x,y] = 'c') and (py = y)) or (pole[x,y] = 'b') or (px <> x) then begin skusp:=true; y:=py; x:=px; textcolor(biely); end; end; end; {Koniec Bieleho} end; vymena; {odkaz na proceduru, ktor  vymen¡ peçiaka za nieŸo ine} end; Function skusv:boolean; {pre ve§u} begin skusv:=false; if pomocna = 'V' then begin if poradie = 1 then begin {Skuska, Ÿi niekto nestoj¡ v ceste} if px > x then {do–va} for i:=x+1 to px do if pole[i,y] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(cierny); end; if px < x then {doprava} for i:=px to x-1 do begin if pole[i,y] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(cierny); end; end; if py > y then {hore} for i:=y+1 to py do if pole[x,i] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(cierny); end; if py < y then {dolu} for i:=py to y-1 do begin if pole[x,i] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(cierny); end; end; {Koniec preskakovania} if (py <> y) and (px <> x) or (py = y) and (px = x) or (pole[x,y] = 'c') or (pole[x,y] = 'c') then begin skusv:=true; y:=py; x:=px; textcolor(cierny); end end else begin {preskakovanie} if px > x then {do–va} for i:=x+1 to px do if pole[i,y] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(biely); end; if px < x then {doprava} for i:=px to x-1 do begin if pole[i,y] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(biely); end; end; if py > y then {hore} for i:=y+1 to py do if pole[x,i] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(biely); end; if py < y then {dolu} for i:=py to y-1 do begin if pole[x,i] <> ' ' then begin skusv:=true; y:=py; x:=px; textcolor(biely); end; end; {Koniec preskakovania} if (py <> y) and (px <> x) or (py = y) and (px = x) or (pole[x,y] = 'b') or (pole[x,y] = 'b') then begin skusv:=true; y:=py; x:=px; textcolor(biely); end; end; end; end; Function skuss:boolean; {pre strelca} var k:byte; begin skuss:=false; if pomocna = 'S' then begin {ci nieco nestoj¡ v ceste} j:=0; if (x > px) and (py < y) then for i:=px to x-1 do begin k:=py+j; if pole[i,k] <> ' ' then begin skuss:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; j:=-1; if (px > x) and (py < y) then for i:=x+1 to px do begin k:=y+j; if pole[i,k] <> ' ' then begin skuss:=true; i:=px; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; dec(j); end; j:=0; if (x > px) and (py > y) then for i:=px to x-1 do begin k:=py-j; if pole[i,k] <> ' ' then begin skuss:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; j:=1; if (px > x) and (py > y) then for i:=x+1 to px do begin k:=y+j; if pole[i,k] <> ' ' then begin skuss:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; {u§ vieme Ÿi nieŸo stj¡ v ceste, alebo nie} if poradie = 1 then begin if (abs(py-y) <> abs(px-x)) or (py = y) and (px = x) or (pole[x,y] = 'c') or (pole[x,y] = 'c') then begin skuss:=true; y:=py; x:=px; textcolor(cierny); end end else begin if (abs(py-y) <> abs(px-x)) or (py = y) and (px = x) or (pole[x,y] = 'b') or (pole[x,y] = 'b') then begin skuss:=true; y:=py; x:=px; textcolor(biely); end; end; end; end; Function skusk:boolean; {pre koåa} begin skusk:=false; if pomocna = 'K' then begin if poradie = 1 then begin if (py <> y-4) or (px <> x+2) or (pole[x,y] = 'c') then begin if (py <> y-4) or (px <> x-2) or (pole[x,y] = 'c') then begin if (px <> x-4) or (py <> y+2) or (pole[x,y] = 'c') then begin if (px <> x-4) or (py <> y-2) or (pole[x,y] = 'c') then begin if (py <> y+4) or (px <> x+2) or (pole[x,y] = 'c') then begin if ((py <> y+4) or (px <> x-2)) or (pole[x,y] = 'c') then begin if ((px <> x+4) or (py <> y+2)) or (pole[x,y] = 'c') then begin if ((px <> x+4) or (py <> y-2)) or (pole[x,y] = 'c') then begin skusk:=true; y:=py; x:=px; textcolor(cierny); end; end; end; end; end; end; end; end; end else begin if (py <> y-4) or (px <> x+2) or (pole[x,y] = 'b') then begin if (py <> y-4) or (px <> x-2) or (pole[x,y] = 'b') then begin if (px <> x-4) or (py <> y+2) or (pole[x,y] = 'b') then begin if (px <> x-4) or (py <> y-2) or (pole[x,y] = 'b') then begin if (py <> y+4) or (px <> x+2) or (pole[x,y] = 'b') then begin if ((py <> y+4) or (px <> x-2)) or (pole[x,y] = 'b') then begin if ((px <> x+4) or (py <> y+2)) or (pole[x,y] = 'b') then begin if ((px <> x+4) or (py <> y-2)) or (pole[x,y] = 'b') then begin skusk:=true; y:=py; x:=px; textcolor(biely); end; end; end; end; end; end; end; end; end; end; end; Function skusq:boolean; {pre kr –ovnu} var k:byte; begin skusq:=false; if pomocna = 'Q' then begin if poradie = 1 then begin if (py <> y) and (px = x) and (pole[x,y] <> 'c') or (py = y) and (px <> x) and (pole[x,y] <> 'c') then skusq:=false else begin if (abs(py-y) <> abs(px-x)) or (py = y) and (px = x) or (pole[x,y] = 'c') then begin skusq:=true; y:=py; x:=px; textcolor(cierny); end; end; end else begin if (py <> y) and (px = x) and (pole[x,y] <> 'b') or (py = y) and (px <> x) and (pole[x,y] <> 'b') then skusq:=false else begin if (abs(py-y) <> abs(px-x)) or (py = y) and (px = x) or (pole[x,y] = 'b') then begin skusq:=true; y:=py; x:=px; textcolor(biely); end; end; end; if skusq = true then else begin {Skuska, Ÿi niekto nestoj¡ v ceste vodorovne a zvysle} if (abs(py-y) <> abs(px-x)) then begin if px > x then {do–va} for i:=x+1 to px do if pole[i,y] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; if px < x then {doprava} for i:=px to x-1 do begin if pole[i,y] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; end; if py > y then {hore} for i:=y+1 to py do if pole[x,i] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; if py < y then {dolu} for i:=py to y-1 do begin if pole[x,i] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; end; end else {Koniec vertik lneho a horizont lneho zisœovania} begin j:=0; {Zisœovanie Ÿi nieco nestoj¡ v çikmej ceste} if (x > px) and (py < y) then for i:=px to x-1 do begin k:=py+j; if pole[i,k] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; j:=-1; if (px > x) and (py < y) then for i:=x+1 to px do begin k:=y+j; if pole[i,k] <> ' ' then begin skusq:=true; i:=px; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; dec(j); end; j:=0; if (x > px) and (py > y) then for i:=px to x-1 do begin k:=py-j; if pole[i,k] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; j:=1; if (px > x) and (py > y) then for i:=x+1 to px do begin k:=y+j; if pole[i,k] <> ' ' then begin skusq:=true; y:=py; x:=px; if poradie = 1 then textcolor(cierny) else textcolor(biely); end; inc(j); end; end; {u§ vieme Ÿi nieŸo stj¡ v ceste, alebo nie} end; end; end; Function skuskr:boolean; {pre kr –a} begin skuskr:=false; if pomocna = 'Å' then begin if (kral1pohyb = false) and (poradie = 0) or (kral2pohyb = false) and (poradie = 1) then begin if (px <= x-2) or (px >= x+2) or (py >= y+2) or (py <= y-2) then begin if poradie = 1 then begin if (pole[x,y] = 'c') then begin skuskr:=true; y:=py; x:=px; textcolor(cierny); end else begin if (py = y-2) and (px = x) {zaciatok vodorovne a zvysle} or ((py = y+2) and (px = x)) or ((py = y) and (px = x+2)) or ((py = y) and (px = x-2)) {koniec vodorovne a zvysle} or ((py = y-2) and (px = x-2)) {zaciatok kr¡§} or ((py = y-2) and (px = x+2)) or ((py = y+2) and (px = x-2)) {koniec kr¡§ + to potom} or ((py = y+2) and (px = x+2)) or ((px = x-4) and (py = y)) or ((px = x+4) and (py = y)) then begin skuskr:=false; end else begin skuskr:=true; y:=py; x:=px; textcolor(cierny); end; end; end else begin if (pole[x,y] = 'b') then begin skuskr:=true; y:=py; x:=px; textcolor(biely); end else begin if (py = y-2) and (px = x) {zaciatok vodorovne a zvysle} or ((py = y+2) and (px = x)) or ((py = y) and (px = x+2)) or ((py = y) and (px = x-2)) {koniec vodorovne a zvysle} or ((py = y-2) and (px = x-2)) {zaciatok kr¡§} or ((py = y-2) and (px = x+2)) or ((py = y+2) and (px = x-2)) {koniec kr¡§ + to potom} or ((py = y+2) and (px = x+2)) or ((px = x-4) and (py = y)) or ((px = x+4) and (py = y)) then begin skuskr:=false; end else begin skuskr:=true; y:=py; x:=px; textcolor(biely); end; end; end; end; {ROç DA} if (px = x-4) and (py = y) then {doprava} begin if poradie = 1 then begin if pole[42,26] <> ' ' then skuskr:=true else begin {kr –} pole[40,26]:=' '; pole[44,26]:='c'; sachovnica[40,26]:=' '; sachovnica[44,26]:='Å'; {ve§a} pole[46,26]:=' '; pole[42,26]:='c'; sachovnica[46,26]:=' '; sachovnica[42,26]:='V'; gotoxy(46,26);write(' '); textcolor(cierny); gotoxy(42,26);write('V'); end; end else begin if pole[42,12] <> ' ' then skuskr:=true else begin {kr –} pole[40,12]:=' '; pole[44,12]:='b'; sachovnica[40,12]:=' '; sachovnica[44,12]:='Å'; {ve§a} pole[46,12]:=' '; pole[42,12]:='b'; sachovnica[46,12]:=' '; sachovnica[42,12]:='V'; gotoxy(46,12);write(' '); gotoxy(42,12);write('V'); end; end; end; if (px = x+4) and (py = y) then {do–ava} begin if poradie = 1 then begin if pole[38,26] <> ' ' then skuskr:=true else begin {kr –} pole[40,26]:=' '; pole[36,26]:='c'; sachovnica[32,26]:=' '; sachovnica[36,26]:='Å'; {ve§a} pole[32,26]:=' '; pole[38,26]:='c'; sachovnica[32,26]:=' '; sachovnica[38,26]:='V'; gotoxy(32,26);write(' '); textcolor(cierny); gotoxy(38,26);write('V'); end; end else begin if pole[38,12] <> ' ' then skuskr:=true else begin {kr –} pole[40,12]:=' '; pole[36,12]:='b'; sachovnica[40,12]:=' '; sachovnica[36,12]:='Å'; {ve§a} pole[32,12]:=' '; pole[38,12]:='b'; sachovnica[32,12]:=' '; sachovnica[38,12]:='V'; gotoxy(32,12);write(' '); gotoxy(38,12);write('V'); end; end; end; end else begin if poradie = 1 then begin if (pole[x,y] = 'c') then begin skuskr:=true; y:=py; x:=px; textcolor(cierny); end else begin if (py = y-2) and (px = x) {zaciatok vodorovne a zvysle} or ((py = y+2) and (px = x)) or ((py = y) and (px = x+2)) or ((py = y) and (px = x-2)) {koniec vodorovne a zvysle} or ((py = y-2) and (px = x-2)) {zaciatok kr¡§} or ((py = y-2) and (px = x+2)) or ((py = y+2) and (px = x-2)) {koniec kr¡§ + to potom} or ((py = y+2) and (px = x+2)) then begin skuskr:=false; end else begin skuskr:=true; y:=py; x:=px; textcolor(cierny); end; end; end else begin if (pole[x,y] = 'b') then begin skuskr:=true; y:=py; x:=px; textcolor(biely); end else begin if (py = y-2) and (px = x) {zaciatok vodorovne a zvysle} or ((py = y+2) and (px = x)) or ((py = y) and (px = x+2)) or ((py = y) and (px = x-2)) {koniec vodorovne a zvysle} or ((py = y-2) and (px = x-2)) {zaciatok kr¡§} or ((py = y-2) and (px = x+2)) or ((py = y+2) and (px = x-2)) {koniec kr¡§ + to potom} or ((py = y+2) and (px = x+2)) then begin skuskr:=false; end else begin skuskr:=true; y:=py; x:=px; textcolor(biely); end; end; end; end; end; if (px = x) and (py = y) then skuskr:=true; end; {Usporiadanie figuriek} Procedure figurkyb; {IBA PRE ZA¬IATOK} var c,d:byte; begin d:=miny+4; c:=minx; e:=1; repeat inc(c,2); gotoxy(c,d); textcolor(biely); write('P'); sachovnica[c,d]:='P'; pole[c,d]:='b'; inc(e); prvytah[e,1]:=false; until c>=minx+16; d:=miny+2; c:=minx+2; gotoxy(c,d); write('V'); sachovnica[c,d]:='V'; pole[c,d]:='b'; gotoxy(c+2,d); write('K'); sachovnica[c+2,d]:='K'; pole[c+2,d]:='b'; gotoxy(c+4,d); write('S'); sachovnica[c+4,d]:='S'; pole[c+4,d]:='b'; gotoxy(c+6,d); write('Q'); sachovnica[c+6,d]:='Q'; pole[c+6,d]:='b'; gotoxy(c+8,d); write('Å'); sachovnica[c+8,d]:='Å'; pole[c+8,d]:='b'; gotoxy(c+10,d); write('S'); sachovnica[c+10,d]:='S'; pole[c+10,d]:='b'; gotoxy(c+12,d); write('K'); sachovnica[c+12,d]:='K'; pole[c+12,d]:='b'; gotoxy(c+14,d); write('V'); sachovnica[c+14,d]:='V'; pole[c+14,d]:='b'; end; Procedure figurkyc; var c,d:byte; begin d:=miny+14; c:=minx; e:=1; repeat inc(c,2); gotoxy(c,d); textcolor(cierny); write('P'); sachovnica[c,d]:='P'; pole[c,d]:='c'; inc(e); prvytah[e,2]:=false until c>=minx+16; d:=miny+16; c:=minx+2; gotoxy(c,d); write('V'); sachovnica[c,d]:='V'; pole[c,d]:='c'; gotoxy(c+2,d); write('K'); sachovnica[c+2,d]:='K'; pole[c+2,d]:='c'; gotoxy(c+4,d); write('S'); sachovnica[c+4,d]:='S'; pole[c+4,d]:='c'; gotoxy(c+6,d); write('Q'); sachovnica[c+6,d]:='Q'; pole[c+6,d]:='c'; gotoxy(c+8,d); write('Å'); sachovnica[c+8,d]:='Å'; pole[c+8,d]:='c'; gotoxy(c+10,d); write('S'); sachovnica[c+10,d]:='S'; pole[c+10,d]:='c'; gotoxy(c+12,d); write('K'); sachovnica[c+12,d]:='K'; pole[c+12,d]:='c'; gotoxy(c+14,d); write('V'); sachovnica[c+14,d]:='V'; pole[c+14,d]:='c'; end; Procedure mriezka; {Nakresl¡ hracie pole} var a,b:byte; begin a:=miny+1; b:=minx+1; gotoxy(b,a); writeln('ÚÄÂÄÂÄÂÄÂÄÂÄÂÄÂÄ¿'); gotoxy(b,a+1); writeln('³ ³ ³ ³ ³ ³ ³ ³ ³'); repeat inc(a,2); gotoxy(b,a); writeln('ÃÄÅÄÅÄÅÄÅÄÅÄÅÄÅÄ´'); gotoxy(b,a+1); writeln('³ ³ ³ ³ ³ ³ ³ ³ ³'); until a>=miny+15; gotoxy(b,a+2); writeln('ÀÄÁÄÁÄÁÄÁÄÁÄÁÄÁÄÙ'); end; Procedure napoveda; begin if p = 'h' then begin clrscr; textcolor(z); writeln('Je tu koneŸne çach pre dvoch (s¡ce s hroznou grafilkou, ale Ÿo u§)'); writeln('Ovl danie je ve–mi jednoduch‚ pohybuje sa pomocou: '); textcolor(vy); {tu zaŸ¡na n vod hry} write(chr(27)); textcolor(z); write(' Ÿo umo§n¡ pohyb smerom '); textcolor(ak); writeln('do –ava'); textcolor(vy); write(chr(25)); textcolor(z); write(' Ÿo umo§n¡ pohyb smerom '); textcolor(ak); writeln('dolu'); textcolor(vy); write(chr(26)); textcolor(z); write(' Ÿo umo§n¡ pohyb smerom '); textcolor(ak); writeln('do prava'); textcolor(vy); write(chr(24)); textcolor(z); write(' Ÿo umo§n¡ pohyb smerom '); textcolor(ak); writeln('nahor'); textcolor(vy); {n vod na znak a§ po n vod na ukonŸenie programu} write('medzern¡k'); textcolor(z); write(' Ÿo umo§n¡ '); textcolor(ak); write(' zobratie '); textcolor(z); writeln('fig£rky '); writeln; writeln('V - znamen  ve§a'); writeln('K - znamen  k“å'); writeln('S - znamen  strelec'); writeln('Q - znamen  kr –ovna'); writeln('Å - znamen  kr –, s ktorìm sa eçte nepohlo'); writeln('R - znamen  kr –, s ktorìm sa pohlo'); writeln('P - znamen  peçiak'); writeln; textcolor(z); write('Pre ukonŸenie n povedy stisnite'); textcolor(ine); write(' "ENTER" '); textcolor(z); {ukonŸenie hry} write('a pre ukonŸenie hry stisnite '); textcolor(ine); write('k '); textcolor(z); write('(ale a§ po tom,ako stlaŸ¡te '); textcolor(ine); write('"ENTER" '); textcolor(z); writeln(')'); writeln('Prajem pr¡jenu z bavu'); readln; {tu konŸ¡ n vod hry} end; end; Procedure vymaz; begin for j:=minx to minx+16 do for i:=miny to miny+16 do begin sachovnica[j,i]:=' '; pole[j,i]:=' '; end; end; begin textmode(CO80 + Font8x8); clrscr; vymaz; x:=minx+8; y:=miny+2; write('Pre n povedu stlaŸ "H" a pre zah jenie hry "ENTER" '); readln(p); if p = 'h' then napoveda; clrscr; mriezka; figurkyb; figurkyc; poradie:=0; kral1pohyb:=false; kral2pohyb:=false; koniechry :=false; repeat if poradie = 1 then begin gotoxy(30,1); textcolor(hlaska); write('na tahu je cierny '); end else begin gotoxy(30,1); textcolor(hlaska); write('na tahu je biely '); end; repeat pomocna:=' '; gotoxy(30,40); textcolor(hlaska); write('Vybrata figurka: '); textbackground(8); textcolor(z); write(pomocna); gotoxy(x,y); p:=readkey; pohyb; gotoxy(x,y); if poradie = 1 then begin if pole[x,y] = 'c' then ozaj:=false else ozaj:=true; end else begin if pole[x,y] = 'b' then ozaj:=false else ozaj:=true; end; if p = ' ' then begin if (sachovnica[x,y] = ' ') or (ozaj = true) then begin gotoxy(47,40); writeln(' '); end else begin pomocna:=sachovnica[x,y]; sachovnica[x,y]:=' '; pole[x,y]:=' '; gotoxy(x,y); write(' '); gotoxy(30,40); textcolor(hlaska); write('Vybrata figurka: '); textbackground(8); textcolor(z); write(pomocna); px:=x; py:=y; repeat gotoxy(x,y); p:=readkey; if p = ' ' then begin if (skusk = false) and (skusv = false) and (skuss = false) and (skusq = false) and (skuskr= false) and (skusp = false) then begin if (pomocna = 'Å') then {aby sa nedala robiœ roçada po pohnut¡ s kr –om} begin if poradie = 1 then kral2pohyb:=true else kral1pohyb:=true; end; if (pomocna = 'P') then {aby sa nepohìåal s 1 pesiakom o 2 policka} begin if poradie = 1 then prvytah[f,2]:=true else prvytah[f,1]:=true; end; gotoxy(x,y); if poradie = 0 then begin sachovnica[x,y]:=pomocna; textcolor(biely); {ak chces ist bez cierneho, len biely tak o riadok nizsie zmen na 0} poradie:=1; {zmen na 1, ale len toto a uz moze ist aj cierny} pole[x,y]:='b'; end else begin sachovnica[x,y]:=pomocna; textcolor(cierny); poradie:=0; pole[x,y]:='c'; end; writeln(sachovnica[x,y]); if zistenieciniektonevyhral = true then begin clrscr; koniechry:=true; textcolor(koniec); gotoxy(30,20); if poradie = 1 then write('VYHRAL BIELY') else write('VYHRAL CIERNY'); readln; end; end else begin x:=px; y:=py; gotoxy(x,y); write(pomocna); sachovnica[x,y]:=pomocna; if poradie = 1 then pole[x,y]:='c' else pole[x,y]:='b'; sound(2000); delay(100); nosound; end; end else pohyb; if koniechry = true then p:=' '; until p = ' '; end; end; until (p = ' ') or (p = 'k'); if koniechry = true then p:='k'; until p = 'k'; delay(100); end.