Program nakreslí šachovnicu pre hranie dámy
Delphi & Pascal (česká wiki)
Kategorija: Programy zos Pascalu
Program: Sachovn.pas
Subor exe: Sachovn.exe
Program: Sachovn.pas
Subor exe: Sachovn.exe
Program nakreslí šachovnicu pre hranie dámy. Pre kreslenie štvorčekov používa kombináciu SetFillStyle a FloofFill. Na kreslenie kameňov Ellipse. Pre výpis textu je použitý príkaz OutTextXY. Program však neobsahuje modul pre skutočnú hru.
{ SACHOVN.PAS Copyright (c) TrSek alias Zdeno Sekerak } { Program nakresli sachovnicu pre hranie damy. } { Neobsahuje vsak modul pre jej skutocnu hru. } { } { Datum:06.01.1996 http://www.trsek.com } program dama_sachovnica; uses crt,dos,graph; var pole:array[1..8,1..8] of byte; x,y,hrac:integer; xh,yh:array[1..2] of byte; Gd,Gm:integer; ErrorCode:integer; xd,yd:integer; ch:char; procedure wait(rezim:char); var y:integer; begin if (UpCase(rezim)='T') then begin writeln; writeln('Stlac nejaky klaves ...'); end else begin if gety>440 then y:=440 else y:=gety; outtextxy(10,y+20,'Stlac neaky klaves ...'); end; repeat until keypressed; end; procedure pol_sach(x,y,fig:integer); var farba:integer; begin { zmensi o jeden, aby nebol narocny prepocet pre bar } dec(x);dec(y); SetFillStyle(1,LightGray); { Ak nieje nahodou cervena potom urcite cierna } if (round(x/2)=(x/2)) then begin if (round(y/2)<>(y/2)) then SetFillStyle(1,Red); end else begin if (round(y/2)=(y/2)) then SetFillStyle(1,Red); end; bar(10+xd*x,10+yd*y,10+xd*(x+1),10+yd*(y+1)); if (fig<>0) then begin if (fig=1) then begin setcolor(Yellow); setfillstyle(1,DarkGray); end else begin setcolor(DarkGray); setfillstyle(1,Yellow); end; ellipse(10+round(xd*(x+0.5)),10+round(yd*(y+0.5)),0,360,round(xd/3),round(yd/3)); floodfill(10+round(xd*(x+0.5)),10+round(yd*(y+0.5)),getcolor); pole[x+1,y+1]:=fig; end; end; begin Gd:=Detect; Initgraph(Gd,Gm,''); ErrorCode := GraphResult; { vznikla chyba pri inicializacii } if ErrorCode <> grOk then begin Writeln('Chyba grafiky: ', GraphErrorMsg(ErrorCode)); wait('t'); Halt(1); end; { Zisti sirku,vysku podla gr.karty } xd:=round((GetMaxx-20)/8); yd:=round((GetMaxy-20)/8); SetBkColor(Green); ClearDevice; Setcolor(White); for x:=1 to 8 do outtextxy(round((x-0.5)*xd)+10,Getmaxy-10,chr(x+48)); for y:=1 to 8 do outtextxy(1,round((y-0.5)*yd)+10,chr(73-y)); for x:=1 to 8 do for y:=1 to 8 do begin pol_sach(x,y,0); pole[x,y]:=0; end; for x:=1 to 8 do if (round(x/2)=(x/2)) then pol_sach(x,7,2) else pol_sach(x,8,2); for x:=1 to 8 do if (round(x/2)=(x/2)) then pol_sach(x,1,1) else pol_sach(x,2,1); xh[1]:=1;yh[1]:=1; xh[2]:=8;yh[2]:=2; hrac:=1; while(readkey<>#27) do; closegraph; end.