2D maze in graphics in pascal
Delphi & Pascal (česká wiki)
Category: KMP (Club of young programmers)
Author: Gabriel Staroň
Program: Bludisko.pas
File exe: Bludisko.exe
need: Egavga.bgi
Author: Gabriel Staroň
Program: Bludisko.pas
File exe: Bludisko.exe
need: Egavga.bgi
The maze developed in the 2D graphics. You must find "hubka" then you finish level. In level you harvest life or bonus.
{ BLUDISKO.PAS } { } { Author: Gabriel Staron } { Date : 15.02.1997 http://www.trsek.com } program Bludisko_Gabo; uses crt,graph; var grDriver : Integer; grMode : Integer; ErrCode : Integer; x,y,xp,yp : Integer; ch : Char; hubka,level : Integer; zivot,body : Integer; ret_h,ret_l,s : String; ret_z,ret_b : String; procedure bludisko(x,y:integer); begin hubka:=0; level:=1; zivot:=3; body:=0; setcolor(green); outtextxy(100,368,' = "hubka" - potrebujes na prechod do druheho levelu'); outtextxy(100,378,'L2 = koniec 1.levelu a zaciatok 2.levelu'); outtextxy(100,388,'- = plus jeden zivot'); outtextxy(100,398,'+ = minus jeden zivot'); outtextxy(100,408,' = premia'); setcolor(cyan); str(hubka,ret_h); str(level,ret_l); str(zivot,ret_z); str(body,ret_b); outtextxy(328,38,'Pocet zivotov : '+ret_z); outtextxy(328,70,'Pocet bodov : '+ret_b); outtextxy(328,102,'Hubka : '+ret_h); outtextxy(328,134,'Level : '+ret_l); setcolor(white); setlinestyle(0,0,3); line(x+10,y+10,x+10,y+310); line(x+10,y+310,x+310,y+310); line(x+310,y+310,x+310,y+10); line(x+310,y+10,x+40,y+10); line(x+40,y+10,x+40,y+250); line(x+40,y+250,x+280,y+250); line(x+280,y+250,x+280,y+40); line(x+280,y+40,x+220,y+40); line(x+220,y+40,x+220,y+70); line(x+220,y+70,x+250,y+70); line(x+250,y+70,x+250,y+220); line(x+250,y+220,x+70,y+220); line(x+70,y+220,x+70,y+160); line(x+70,y+160,x+100,y+160); line(x+100,y+160,x+100,y+190); line(x+100,y+190,x+130,y+190); line(x+130,y+190,x+130,y+220); line(x+190,y+40,x+190,y+160); line(x+191,y+100,x+220,y+100); line(x+190,y+40,x+70,y+40); line(x+70,y+40,x+70,y+130); line(x+70,y+130,x+100,y+130); line(x+100,y+130,x+100,y+70); line(x+100,y+70,x+160,y+70); line(x+160,y+70,x+160,y+100); line(x+160,y+100,x+130,y+100); line(x+130,y+100,x+130,y+130); line(x+130,y+130,x+160,y+130); line(x+160,y+130,x+160,y+190); line(x+160,y+190,x+220,y+190); line(x+220,y+190,x+220,y+160); line(x+220,y+160,x+250,y+160); end; procedure Level_2; begin sound(620); delay(500); nosound; setcolor(black); outtextxy(328,134,'Level : 1'); setcolor(cyan); outtextxy(328,134,'Level : 2'); setcolor(black); outtextxy(80,115,'L2'); end; function pohyb(x,y,kam:integer):boolean; var i:integer; begin pohyb:=true; if (kam=0) then for i:=x to x+20 do if (getpixel(i,y)=15) then pohyb:=false; if (kam=1) then for i:=y to y+20 do if (getpixel(x,i)=15) then pohyb:=false; if (kam=2) then for i:=x downto x-10 do if (getpixel(i,y)=15) then pohyb:=false; if (kam=3) then for i:=y downto y-10 do if (getpixel(x,i)=15) then pohyb:=false; end; begin grDriver := Detect; InitGraph(grDriver,grMode,''); x:=2;xp:=20; y:=2;yp:=20; bludisko(x,y); setlinestyle(1,0,3); setcolor(red); outtextxy(146,83,''); outtextxy(80,115,'L2'); outtextxy(228,168,'-'); outtextxy(138,113,'+'); outtextxy(230,55,''); repeat ch:=readkey; if (ch=#0) then begin setcolor(black); outtextxy(xp,yp,''); ch:=readkey; if (ch='K') then if pohyb(xp,yp,2) then xp:=xp-10; if (ch='M') then if pohyb(xp,yp,0) then xp:=xp+10; if (ch='H') then if pohyb(xp,yp,3) then yp:=yp-10; if (ch='P') then if pohyb(xp,yp,1) then yp:=yp+10; if (xp=140) and (yp=110) then begin sound(220); { ubera pocet zivotov } delay(500); nosound; str(zivot,ret_z); setcolor(black); outtextxy(328,38,'Pocet zivotov : '+ret_z); zivot:=zivot-1; str(zivot,ret_z); setcolor(cyan); outtextxy(328,38,'Pocet zivotov : '+ret_z); setcolor(black); outtextxy(138,113,'+'); end; if (xp=150) and (yp=80) then begin sound(320); { pridava pocet hubiek } delay(500); nosound; str(hubka,ret_h); setcolor(black); outtextxy(328,102,'Hubka : '+ret_h); hubka:=hubka+1; str(hubka,ret_h); setcolor(cyan); outtextxy(328,102,'Hubka : '+ret_h); setcolor(black); outtextxy(146,83,''); end; if (xp=230) and (yp=170) then begin sound(420); { pridava pocet zivotov } delay(500); nosound; str(zivot,ret_z); setcolor(black); outtextxy(328,38,'Pocet zivotov : '+ret_z); zivot:=zivot+1; str(zivot,ret_z); setcolor(cyan); outtextxy(328,38,'Pocet zivotov : '+ret_z); setcolor(black); outtextxy(228,168,'-'); end; if (xp=230) and (yp=50) then begin sound(520); { pridava pocet bodov } delay(500); nosound; str(body,ret_b); setcolor(black); outtextxy(328,70,'Pocet bodov : '+ret_b); body:=body+100; str(body,ret_b); setcolor(cyan); outtextxy(328,70,'Pocet bodov : '+ret_b); setcolor(black); outtextxy(230,55,''); end; if (xp=80) and (yp=120) then Level_2; setcolor(blue); outtextxy(10,440,'ŰŰŰŰŰ'); outtextxy(10,470,'ŰŰŰŰŰ'); setcolor(white); str(xp,ret_h);outtextxy(10,440,ret_h); str(yp,ret_h);outtextxy(10,470,ret_h); if (body=200) or (body=400) or (body=800) then begin sound(420); { pridava pocet zivotov, ked je pocet bodov 10 000 } delay(500); nosound; str(zivot,ret_z); setcolor(black); outtextxy(328,38,'Pocet zivotov : '+ret_z); zivot:=zivot+1; str(zivot,ret_z); setcolor(cyan); outtextxy(328,38,'Pocet zivotov : '+ret_z); end; setcolor(white); outtextxy(xp,yp,''); end; until (ch=#27) or (zivot=0) or (body=900) or (zivot=5); closegraph; end.