Umiestnenie súboru www.TrSek.com/cover/gabcik/minefield.pas{ 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;
{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;
{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.