{ MINEFIELD.PAS Copyright (c) Juraj Gabcik } { } { Máte za úlohu hľadať míny v mínovom poli. } { Pajácom pohybujete šípkami. } { } { Author: Juraj Gabcik } { Date : 04.12.2006 http://www.trsek.com } program minefield; uses grafika; var znak:char; var x,y,dx,dy,i,a,b,c,m,n:integer; {miny} procedure mina; begin setcolor(2); filledellipse(300,350,5,3); setcolor(4); filledellipse(300,350,4,2); end; procedure mina2; begin setcolor(2); filledellipse(200,280,5,3); setcolor(4); filledellipse(200,280,4,2); end; procedure mina3; begin setcolor(2); filledellipse(500,220,5,3); setcolor(4); filledellipse(500,220,4,2); end; procedure mina4; begin setcolor(2); filledellipse(220,130,5,3); setcolor(4); filledellipse(220,130,4,2); end; procedure mina5; begin setcolor(2); filledellipse(350,200,5,3); setcolor(4); filledellipse(350,200,4,2); end; procedure bum; begin for i:=1 to 9 do begin b:=b+6; setcolor(14); filledcircle(300,350,b); delay(150); end; if b>53 then begin delay(200); setcolor(0); filledcircle(300,350,70); b:=0; x:=x+60; y:=y-60; setcolor(15); filledcircle(x+dx,y+dy,8); mina; end; setcolor(0); if (x<350) or (x>370) or (y<280) or (y>300) then filledellipse(300,350,5,3); end; procedure bum2; begin for i:=1 to 9 do begin b:=b+6; setcolor(14); filledcircle(200,280,b); delay(150); end; if b>53 then begin delay(200); setcolor(0); filledcircle(200,280,70); b:=0; x:=x+65; y:=y-70; setcolor(15); filledcircle(x+dx,y+dy,8); mina2; end; end; procedure bum3; begin for i:=1 to 9 do begin b:=b+6; setcolor(14); filledcircle(500,220,b); delay(150); end; if b>53 then begin delay(200); setcolor(0); filledcircle(500,220,70); b:=0; x:=x-85; y:=y-10; setcolor(15); filledcircle(x+dx,y+dy,8); mina3; end; end; procedure bum4; begin for i:=1 to 9 do begin b:=b+6; setcolor(14); filledcircle(220,130,b); delay(150); end; if b>53 then begin delay(200); setcolor(0); filledcircle(220,140,70); b:=0; x:=x+85; y:=y+70; setcolor(15); filledcircle(x+dx,y+dy,8); mina4; end; end; procedure bum5; begin for i:=1 to 9 do begin b:=b+6; setcolor(14); filledcircle(350,200,b); delay(150); end; if b>53 then begin delay(200); setcolor(0); filledcircle(350,200,70); b:=0; x:=x+85; y:=y+70; setcolor(15); filledcircle(x+dx,y+dy,8); mina5; end; end; procedure zvuk; begin sound(311); delay(150); nosound; delay(50); sound(311); delay(150); nosound; delay(50); sound(311); delay(150); nosound; delay(50); sound(311); delay(150); nosound; delay(50); sound(311); delay(150); nosound; delay(50); end; {tank} procedure tank; begin setcolor(15); filledcircle(x+dx,y+dy,8); line(x+dx,y+dy,x+dx,y+dy); setcolor(14); rectangle(306,10,332,35); setcolor(2); rectangle(96,96,124,124); rectangle(505,96,533,124); x:=x+dx; y:=y+dy; setcolor(1); {podmienky} if y>49 then line(302,48,336,48); setcolor(0); if (y>56) and (y<80) and (x>300) and (x<340) then line(302,48,336,48); if (y<56) and (x>300) and (x<340) then line(302,48,336,48); if (x>285) and (x<315) and (y>335) and (y<365) then begin mina; zvuk; bum; end; if (x>185) and (x<215) and (y>265) and (y<295) then begin mina2; zvuk; bum2; end; if (x>485) and (x<515) and (y>205) and (y<235) then begin mina3; zvuk; bum3; end; if (x>205) and (x<235) and (y>115) and (y<145) then begin mina4; zvuk; bum4; end; if (x>335) and (x<365) and (y>185) and (y<215) then begin mina5; zvuk; bum5; end; setcolor(0); if (x<340) or (x>380) or (y<270) or (y>310) then filledellipse(300,350,5,3); if (x<245) or (x>285) or (y<190) or (y>230) then filledellipse(200,280,5,3); if (x<395) or (x>435) or (y<190) or (y>230) then filledellipse(500,220,5,3); if (x<285) or (x>325) or (y<190) or (y>230) then filledellipse(220,130,5,3); if (x<415) or (x>455) or (y<250) or (y>290) then filledellipse(350,200,5,3); if (x>120) and (x<150) and (y>150) and (y<180) then begin mina; mina2; mina3; mina4; mina5; end; end; {okolie} procedure okolie; begin setcolor(4); filledrectangle(0,10,640,480); filledrectangle(0,10,302,49); filledrectangle(336,10,640,49); setcolor(0); filledrectangle(302,10,336,49); filledrectangle(50,50,590,430); setcolor(14); rectangle(306,10,332,35); setcolor(2); rectangle(96,96,124,124); rectangle(505,96,533,124); setcolor(1); line(302,48,336,48); setcolor(14); writeln(' EXIT'); setcolor(4); filledrectangle(0,0,301,49); filledrectangle(337,0,640,49); setcolor(15); end; procedure okolie2; begin setcolor(4); filledrectangle(0,10,640,480); filledrectangle(0,10,302,49); filledrectangle(336,10,640,49); setcolor(0); filledrectangle(302,10,336,49); filledrectangle(50,50,590,430); setcolor(14); rectangle(306,10,332,35); setcolor(2); rectangle(96,96,124,124); rectangle(505,96,533,124); setcolor(1); line(302,48,336,48); setcolor(15); end; {zmaz} procedure zmaz(x,y:integer); begin setcolor(0); filledcircle(x+dx,y+dy,13); line(x+dx,y+dy,x+dx,y+dy); setcolor(15); end; procedure zmaz2(x,y:integer); begin delay(50); setcolor(0); filledcircle(x,y,2); setcolor(15); end; {koniec} procedure koniec; begin setcolor(0); filledrectangle(225,194,403,220); setcolor(15); printat(230,204,' Press ENTER to exit ',15,0); setcolor(4); filledrectangle(0,180,49,480); setcolor(1); filledrectangle(225,214,403,220); filledrectangle(225,194,235,220); filledrectangle(225,200,403,194); filledrectangle(392,194,403,220); end; {strela} procedure strela(m,n:integer); begin filledcircle(x+dx,y+dy,8); line(x+dx,y+dy,x+dx+12,y+dy); m:=m+10; for i:=1 to 10 do begin zmaz2(m,n); m:=m+7; filledcircle(m,n,2); setcolor(0); filledcircle(x+80,y,2); setcolor(15); line(x+dx,y+dy,x+dx+12,y+dy); end; end; {----------------------çtart------------------------} begin okolie; x:=320; y:=240; znak:=#0; setcolor(15); filledcircle(x+dx,y+dy,8); line(x+dx,y+dy,x+dx,y+dy); repeat znak:=readkey; dx:=0; dy:=0; zmaz(x,y); case znak of #77 : dx:=5; #75 : dx:=-5; #80 : dy:=5; #72 : dy:=-5; #52 : dx:=-8; #54 : dx:=8; #56 : dy:=-8; #50 : dy:=8; #13 : okolie2; #48 : strela(x,y); end; {podmienky} if (znak=#72) or (znak=#56) then line(x+dx,y+dy-12,x+dx,y+dy); if (znak=#80) or (znak=#50) then line(x+dx,y+dy+12,x+dx,y+dy); if (znak=#77) or (znak=#54) then line(x+dx,y+dy,x+dx+12,y+dy); if (znak=#75) or (znak=#52) then line(x+dx,y+dy,x+dx-12,y+dy); if (znak=#56) or (znak=#50) or (znak=#54) or (znak=#52) then sound(262); delay(2); nosound; {tank} tank; {podmienky} setcolor(0); if x>575 then x:=576; if x>575 then filledrectangle(560,50,590,430); setcolor(4); if x>575 then filledrectangle(591,0,640,480); setcolor(15); if x>575 then filledcircle(x+dx,y+dy,8); setcolor(0); if x<64 then x:=64; if x<66 then filledrectangle(50,50,80,430); setcolor(4); if x<66 then filledrectangle(0,0,49,480); setcolor(15); if x<66 then filledcircle(x+dx,y+dy,8); setcolor(0); if (y<64) and (x<314) then y:=64; if (y<64) and (x>325) then y:=64; if y<65 then begin filledrectangle(302,36,336,47); filledrectangle(307,11,331,34); setcolor(4); filledrectangle(0,10,301,49); filledrectangle(337,10,640,49); setcolor(0); filledrectangle(50,50,590,80); line(302,49,336,49); setcolor(4); filledrectangle(0,10,300,49); filledrectangle(338,10,640,49); setcolor(15); filledcircle(x+dx,y+dy,8); end; setcolor(0); if y<30 then filledrectangle(302,8,336,49); setcolor(14); if y<65 then rectangle(306,10,332,35); if y<30 then begin sound(262); delay(100); nosound; koniec; exit; end; setcolor(0); if y>416 then y:=416; if y>415 then begin filledrectangle(50,400,590,430); setcolor(4); filledrectangle(0,431,640,480); setcolor(15); filledcircle(x+dx,y+dy,8); end; setcolor(0); if (x>100) and (x<120) and (y>100) and (y<120) then begin filledrectangle(97,97,123,123); filledrectangle(125,97,129,123); filledrectangle(96,125,124,129); filledrectangle(96,95,124,91); filledrectangle(95,96,91,124); x:=505; tank; setcolor(2); rectangle(96,96,124,124); rectangle(505,96,533,124); end; setcolor(0); if (x>510) and (x<530) and (y>100) and (y<120) then begin filledrectangle(506,97,532,123); filledrectangle(505,95,533,91); filledrectangle(505,125,533,129); filledrectangle(504,97,500,123); filledrectangle(534,97,538,123); x:=125; tank; setcolor(2); rectangle(96,96,124,124); rectangle(505,96,533,124); end; until znak=#27; koniec; end.