Ver. 1.0 Beta, Nie masz kompilatora? Teraz mo¿esz pisaæ skrypty ONLINE! Wersja podstawowa -nie zawiera wszystkich poleceñ Pascala. S³u¿y do nauki podstaw

Pascal

Kod ¼ród³owy Snake'a -d¿d¿owniczka, w±¿, jakkolwiek


Jedna z pierwszych gier autora strony. Z muzyk±. Edytor plansz oraz gra multiplayer lub inaczej gra na dwóch





                               program dzdzownica;



               uses crt,graph,grafik,matma,rysunki,Drivers,dos,rawy;




Label Poczatek,Koniec,Gra,Autorzy,Ustawienia,Pet;


Const
    opcje:Array[1..5] of string=
    ('Game Start','Options','From author','Game over','Turbo Pascal 7.0');

    ust:Array[1..5] of string=
    ('Build level','Music & Sound','1 or 2 Players','Difficulty',
    'Back to menu');


    dzw:Array[1..3,1..5] of word=
    ((100,201,62,40,0),(200,240,250,220,300)
    ,(200,540,150,220,200));

    bud:Array[1..4] of byte=
    (2,3,7,11);

    nazwa:Array[1..4] of string=
    ('Wall','Ground','Protect','Corridor');

    szyb:word=200;trud:byte=2;

    poztr:Array[1..3] of string=
    ('(1) Easy','(2) Normal','(3) Hard');

    zkim:Array[1..2] of string=
    ('(1) 1 Player','(2) 2 Players');

    dwoch:boolean=false;







Var ch:char;
   czaskuli,dg,dg2,o,dl,ou,rys,key,lev,sz,sz2,
   wx,wy,bi,wc,zwyc,runda:byte;
   dx,dy,xm,dx2,dy2:ShortInt;
   ob:Array[1..17] of pointer;
   x,y,r,pkt,kul,sp,splev,kul2,pkt2,x2,y2:word;
   pl:Array[1..25,1..23] of byte;
   ga,ga2:Array[1..50,1..2] of ShortInt;
   plik,wtopa,wtopa2,dzwiek,wyjscie,czysc,speaker,
   soundblaster,raw,r1,r2,wyl:boolean;
   f:file of byte;
   s:string;
   kulki:Array[1..4,1..3] of byte;
   monit:Array[1..7] of string;
   pr,dr,m:integer;
   pliki:Array[1..500] of string[12];
   naz:SearchRec;



procedure Zapamietaj;
Var a:integer;
begin
ClearDevice;
Randomize;
r:=ImageSize(1,1,20,20);
for a:=1 to 17 do GetMem(ob[a],r);
{Tuˆ¢w}
SetFillStyle(1,12);
SetColor(4);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[1]^);
{Niebieska ˜ciana}
SetFillStyle(1,9);
Bar(21,1,40,20);
Przycisk(21,1,40,20,3,1);
GetImage(21,1,40,20,ob[2]^);
{Ziemia}
SetFillStyle(1,6);
Bar(41,1,60,20);
Narysuj('.GrafikaDzdz4');
GetImage(41,1,60,20,ob[3]^);
{Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[12]^);
{Kula na ziemi}
PutImage(61,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[4]^);
{Druga kula na zjedzonej ziemi}
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[13]^);
{Druga kula na ziemi}
PutImage(81,1,ob[3]^,0);
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[5]^);
{Trzecia Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[14]^);
{Trzecia Kula na ziemi}
PutImage(101,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[6]^);
{Zielona ˜ciana}
SetFillStyle(1,2);
Bar(121,1,140,20);
Przycisk(121,1,140,20,10,8);
GetImage(121,1,140,20,ob[7]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[8]^);
{Gˆowa w bok}
PutImage(161,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[9]^);
{Wyj˜cie}
SetFillStyle(5,14);
Bar(181,1,200,20);
GetImage(181,1,200,20,ob[10]^);
{Pusty kwadrat}
GetImage(201,1,220,20,ob[11]^);
{Tuˆ¢w 2}
SetFillStyle(1,10);
SetColor(2);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[15]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[16]^);
{Gˆowa w bok}
PutImage(161,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[17]^);

{czekaj;}
ClearDevice;

end;

procedure ZapamietajLat;
Var a:integer;
begin
ClearDevice;
Randomize;
r:=ImageSize(1,1,20,20);
for a:=1 to 17 do GetMem(ob[a],r);
{Tuˆ¢w}
SetFillStyle(1,12);
SetColor(4);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[1]^);
{Chmurka}
SetFillStyle(1,9);
Bar(21,25,40,44);
Narysuj('.Grafikadzdz6');
przycisk(21,25,40,44,3,8);
GetImage(21,25,40,44,ob[2]^);
{Ziemia}
SetFillStyle(1,6);
Bar(41,1,60,20);
Narysuj('.GrafikaDzdz4');
GetImage(41,1,60,20,ob[3]^);
{Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[12]^);
{Kula na ziemi}
PutImage(61,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[4]^);
{Druga kula na zjedzonej ziemi}
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[13]^);
{Druga kula na ziemi}
PutImage(81,1,ob[3]^,0);
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[5]^);
{Trzecia Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[14]^);
{Trzecia Kula na ziemi}
PutImage(101,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[6]^);
{Sˆoäce}
SetFillStyle(1,9);
Bar(121,1,140,20);
SetFillStyle(1,14);
SetColor(14);
FillEllipse(130,10,7,7);
linia(130,0,130,20,14);
line(121,10,140,10);
linia(122,2,138,18,14);
line(138,2,122,18);
linia(127,14,128,15,0);
linia(133,14,132,15,0);
linia(128,15,132,15,0);
SetFillStyle(1,0);
FillEllipse(126,10,1,1);
FillEllipse(134,10,1,1);
Przycisk(121,1,140,20,3,8);
GetImage(121,1,140,20,ob[7]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[8]^);
{Gˆowa w bok}
PutImage(161,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[9]^);
{Wyj˜cie}
SetFillStyle(5,14);
Bar(181,1,200,20);
GetImage(181,1,200,20,ob[10]^);
{Pusty kwadrat}
GetImage(201,1,220,20,ob[11]^);
{Tuˆ¢w 2}
SetFillStyle(1,10);
SetColor(2);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[15]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[16]^);
{Gˆowa w bok}
PutImage(161,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[17]^);

{czekaj;}
ClearDevice;
end;

procedure ZapamietajTrud;
Var a:integer;
begin
ClearDevice;
Randomize;
r:=ImageSize(1,1,20,20);
for a:=1 to 17 do GetMem(ob[a],r);
{Tuˆ¢w}
SetFillStyle(1,12);
SetColor(4);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[1]^);
{Niebieska ˜ciana}
SetFillStyle(1,7);
Bar(21,1,40,20);
Przycisk(21,1,40,20,15,8);
GetImage(21,1,40,20,ob[2]^);
{Ziemia}
SetFillStyle(1,5);
Bar(41,1,60,20);
Narysuj('.GrafikaDzdz4');
GetImage(41,1,60,20,ob[3]^);
{Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[12]^);
{Kula na ziemi}
PutImage(61,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(12);
FillEllipse(70,10,4,4);
GetImage(61,1,80,20,ob[4]^);
{Druga kula na zjedzonej ziemi}
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[13]^);
{Druga kula na ziemi}
PutImage(81,1,ob[3]^,0);
SetFillStyle(1,15);
SetColor(12);
FillEllipse(90,10,6,6);
GetImage(81,1,100,20,ob[5]^);
{Trzecia Kula na zjedzonej ziemi}
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[14]^);
{Trzecia Kula na ziemi}
PutImage(101,1,ob[3]^,0);
SetFillStyle(1,14);
SetColor(15);
FillEllipse(110,10,8,8);
FillEllipse(110,10,4,4);
GetImage(101,1,120,20,ob[6]^);
{Zielona ˜ciana}
SetFillStyle(1,2);
Bar(121,1,140,20);
SetFillStyle(1,10);
SetColor(8);
Circle(131,11,5);
SetColor(2);
FillEllipse(130,10,5,5);

Przycisk(121,1,140,20,15,8);
GetImage(121,1,140,20,ob[7]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[8]^);
{Gˆowa w bok}
PutImage(161,1,ob[1]^,0);
SetFillStyle(1,0);
SetColor(12);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[9]^);
{Wyj˜cie}
SetFillStyle(5,14);
Bar(181,1,200,20);
GetImage(181,1,200,20,ob[10]^);
{Pusty kwadrat}
GetImage(201,1,220,20,ob[11]^);
{Tuˆ¢w 2}
SetFillStyle(1,10);
SetColor(2);
FillEllipse(10,10,9,9);
GetImage(1,1,20,20,ob[15]^);
{Gˆowa w g¢r©}
PutImage(141,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(144,10,3,3);
FillEllipse(156,10,3,3);
GetImage(141,1,160,20,ob[16]^);
{Gˆowa w bok}
PutImage(161,1,ob[15]^,0);
SetFillStyle(1,0);
SetColor(10);
FillEllipse(170,4,3,3);
FillEllipse(170,16,3,3);
GetImage(161,1,180,20,ob[17]^);

{czekaj;}
ClearDevice;
end;




procedure GrajDzwiek(a:byte);
Var b:byte;
begin
if dl>0 then begin
if dl<5 then
begin
if dzw[a,dl]>60 then
if speaker then Sound(dzw[a,dl]) else if speaker then NoSound;
dl:=dl+1;
end else
begin
dl:=0;
if speaker then NoSound;
end;
end;
end;

procedure odczytaj_opcje;
Var b:byte;
begin
Assign(F,'.Daneconfig.muz');
Reset(F);
Read(F,b);
Close(F);
if b>=4 then begin raw:=true;b:=b-4;end;
if b>=2 then begin soundblaster:=true;b:=b-2;end;
if b>=1 then begin speaker:=true;b:=b-1;end;

end;


procedure blackamper;
begin
narysuj('.Grafikatecza');
SetTextStyle(2,0,7);
SetColor(15);
CenterText(320,350,'English version');
CenterText(321,350,'English version');
b:=0;
gw_init;
repeat
b:=b+1;
delay(10);
gwi;
until (keypressed or (b>500));
zapomnij;
ClearDevice;
narysuj('.Grafikablacka');
gw_init;
b:=0;
repeat
b:=b+1;
delay(10);
gwi;
until (keypressed or (b>300));
if speaker then NoSound;
ClearDevice;
zapomnij;
end;

procedure pascal;
begin
ClearDevice;
if soundblaster then Graj_Muzyke('.MusicMUSIC3.HSC');
okno(160,20,480,50);
okno(60,80,580,380);
SetTextStyle(0,0,1);
SetColor(15);
st(30,'TURBO PASCAL 7.0');
st(90,'Down is descripton - How make a few effect :');
SetColor(14);
st(110,'- How make animate picture, which not twinkle ?');
SetColor(15);
st(130,'The best is use procedure GETIMAGE and PUTIMAGE. First procedure');
st(150,'memorize any picture from screen and second show this.');
SetColor(14);
st(170,'- How make stars ?');
SetColor(15);
st(190,'You must make table variable (the best is WORD or INTEGER),');
st(210,'which is save position X and Y, and speed star and you must');
st(230,'subtract X of 1, next if on star is nothing then you draw pixel');
st(250,'in position x & y');
SetColor(14);
st(270,'How make good picture (in pascal) ?');
SetColor(15);
st(290,'If you want make good picture you can make a program, which');
st(310,'can help you. I have one (this is my own). My PAINT is good');
st(330,'to draw small picture (small size). I make format PKS.');
st(350,'Pks is cool if you draw little.');

gw_init;
zapomnij;
repeat
gwi;
Delay(10);
until keypressed;
if soundblaster then Wylacz_muzyke;
ClearDevice;
end;



procedure pocz;
Var a,b:integer;

begin
for a:=1 to 32 do
   for b:=1 to 24 do PutImage((a-1)*20,(b-1)*20,ob[2+Random(2)]^,0);
okno(40,50,599,230);
SetTextStyle(4,0,14);
SetColor(2);
Centertext(318,30,'Rainworm');
SetColor(10);
Centertext(319,31,'Rainworm');
SetColor(14);
Centertext(320,32,'Rainworm');

SetTextStyle(0,0,1);
SetColor(15);
RightText(500,170,'Kamil Skoczylas');
okno(200,290,440,320);
SetFillStyle(1,15);
Bar(250,295,390,315);
Przycisk(250,295,390,315,0,7);
Przycisk(249,294,391,316,8,15);

end;

procedure rysujopcje;

begin

      SetFillStyle(1,15);
      Bar(251,296,389,314);
      SetColor(0);
      st(300,opcje[o]);

end;


procedure wybor;

begin
o:=1;
rysujopcje;
repeat
if keypressed then
  begin
  ch:=ReadKey;
  case ch of
       #72:begin
       o:=o-1;
       if o<1 then o:=5;
       if raw then begin GrajRaw('.Sound000.Raw',6);Delay(500);Wylacz;end;
       end;
       #80:begin
       o:=o+1;
       if o>5 then o:=1;
       if raw then begin GrajRaw('.Sound000.Raw',6);Delay(500);Wylacz;end;
       end;
  end;
  rysujopcje;
  if ((ch=#80) or (ch=#72)) then
     begin
     dl:=1;
     zapomnij;
     end else if ch<>#0 then zapomnij;
  end;
if dl>0 then GrajDzwiek(1);

delay(20);
until ((ch=#13) or (ch=#27));
if speaker then NoSound;
if raw then begin GrajRaw('.Sound002.Raw',1);Delay(1000);Wylacz;end;
end;

procedure aut;
Var a,b:integer;

begin
ClearDevice;
if soundblaster then Graj_Muzyke('.MusicMUSIC4.HSC');
for a:=1 to 32 do
   for b:=1 to 24 do PutImage((a-1)*20,(b-1)*20,ob[2+Random(2)]^,0);
SetFillStyle(1,2);
Bar(140,30,500,475);
przycisk(140,30,500,475,10,8);
SetTextStyle(2,0,8);
st(40,'FROM AUTHOR :');
SetColor(14);
SetTextStyle(2,0,5);
st(70,'This program was write in language :');
st(90,'Turbo Pascal 7.0. Program was make in Swi-');
st(110,'dnica by Kamil Skoczylas. I do not know');
st(130,'why - maybe because I am feel bored and I');
st(150,'long ago not make programs in pascal.');
st(170,'Any consideration you can send brought');
st(190,'internet on adress :');
SetColor(15);
st(220,'BlackAmper@poczta.onet.pl');
SetColor(14);
st(250,'This game is for me - the best game of');
st(270,'any rainworm. In my game are sometimes');
st(290,'balls, which add a life, slowly down a game,');
st(310,'fastes up a game, reveal map, show where is');
st(330,'exit and add a balls, which are needed');
st(350,'to go to next level.');
st(430,'Sorry for any errors in English language');
zapomnij;
czekaj;
if soundblaster then Wylacz_Muzyke;
if raw then begin GrajRaw('.Sound001.Raw',1);Delay(500);Wylacz;end;
end;

procedure uop;
begin
SetFillStyle(1,9);
Bar(210,60,230,350);
Bar(410,60,430,350);

PutImage(210,25+ou*50,ob[7]^,0);
PutImage(410,25+ou*50,ob[7]^,0);

end;


procedure odswiez;
begin
PutImage(530,220,ob[bud[ry'>]^,0);
SetFillStyle(1,7);
Bar(560,225,630,235);
SetColor(0);
tekst(560,225,nazwa[ry'>);
przycisk(10+(x-1)*20,10+(y-1)*20,30+(x-1)*20,30+(y-1)*20,15,12);
end;

procedure wykasuj;
begin
SetColor(0);
RecTangle(10+(x-1)*20,10+(y-1)*20,30+(x-1)*20,30+(y-1)*20);
end;

procedure kursor;
begin
przycisk(10+(x-1)*20,10+(y-1)*20,30+(x-1)*20,30+(y-1)*20,15,12);
end;


procedure ustaw;
Var a,b,d:integer;
begin
if soundblaster then Graj_Muzyke('.MusicMUSIC3.HSC');
repeat
for a:=1 to 32 do
   for b:=1 to 24 do if Random(10)>5 then
       PutImage((a-1)*20,(b-1)*20,ob[2]^,0) else
       PutImage((a-1)*20,(b-1)*20,ob[7]^,0);

okno(200,40,440,360);
for a:=1 to 5 do
   begin
   okno(250,20+a*50,390,50+a*50);
   przycisk(260,25+a*50,382,45+a*50,0,15);
   przycisk(261,26+a*50,381,44+a*50,8,7);
   SetFillStyle(1,15);
   Bar(262,27+a*50,380,43+a*50);
   SetColor(0);
   st(32+a*50,ust[a]);
   end;

zapomnij;
ou:=1;
uop;
dl:=0;
ch:=#0;
repeat

if keypressed then
begin
ch:=ReadKey;

case ch of
    #72:begin
    ou:=ou-1;
    if ou<1 then ou:=5;
    uop;
    dl:=1;
    zapomnij;
    if raw then begin GrajRaw('.Sound000.Raw',1);Delay(300);Wylacz;end;
    end;
    #80:begin
    ou:=ou+1;
    if ou>5 then ou:=1;
    uop;
    dl:=1;
    zapomnij;
    if raw then begin GrajRaw('.Sound000.Raw',1);Delay(300);Wylacz;end;
    end;
    end;
    if ((ch<>#0) and (ch<>#72) and (ch<>#80)) then zapomnij;
end;
if dl>0 then GrajDzwiek(2);
Delay(30);
until ((ch=#27) or (ch=#13));
if raw then begin GrajRaw('.Sound002.Raw',1);Delay(1000);Wylacz;end;
if speaker then NoSound;
if ch=#27 then ou:=5;
ch:=#0;
zapomnij;
if not ((ou=5) or (ch=#27)) then
  begin
  if ou=1 then
     begin
     for a:=1 to 25 do
   for b:=1 to 23 do
       begin
       pl[a,b]:=3;
       end;


     ClearDevice;
     Drzwi(3,3,637,477);
     Przycisk(9,9,511,471,8,15);
     for a:=1 to 25 do
   for b:=1 to 23 do
       begin
       PutImage(10+(a-1)*20,10+(b-1)*20,ob[pl[a,b]]^,0);
       end;
     for a:=1 to 25 do
       linia(10+(a-1)*20,10,10+(a-1)*20,469,0);
     for b:=1 to 23 do
       linia(10,10+(b-1)*20,509,10+(b-1)*20,0);
     SetTextStyle(0,0,2);
     SetColor(2);
     tekst(520,20,'What is :');
     SetColor(10);
     tekst(522,22,'What is :');
     SetTextStyle(0,0,1);
     SetColor(0);
     for a:=1 to 4 do
     begin
     PutImage(530,50+a*30,ob[bud[a]]^,0);
     tekst(555,55+a*30,'- '+sr(a));
     end;
     tekst(520,200,'REALLY');
     tekst(520,300,'Drawing :');
     tekst(520,320,'L. Shift');
     x:=1;
     y:=1;
     rys:=1;
     odswiez;
     zapomnij;
     ch:=#0;


     repeat
     if (GetShiftState and 2)=2 then
        begin
        if pl[x,y]<>bud[ry'> then
        begin

        PutImage(10+(x-1)*20,10+(y-1)*20,ob[bud[ry'>]^,0);
        pl[x,y]:=bud[ry'>;
        kursor;
        if raw then begin GrajRaw('.Sound001.Raw',1);Delay(20);Zapomnij;Wylacz;end;

        end;
        end;

     if keypressed then
        begin
        ch:=ReadKey;
        case ch of
        #49:begin
        rys:=1;
        odswiez;
        end;
        #50:begin
        rys:=2;
        odswiez;
        end;
        #51:begin
        rys:=3;
        odswiez;
        end;
        #52:begin
        rys:=4;
        odswiez;
        end;
        #72:begin
        wykasuj;
        y:=y-1;
        if y<1 then y:=23;
        kursor;
        end;
        #80:begin
        wykasuj;
        y:=y+1;
        if y>23 then y:=1;
        kursor;
        end;
        #75:begin
        wykasuj;
        x:=x-1;
        if x<1 then x:=25;
        kursor;
        end;
        #77:begin
        wykasuj;
        x:=x+1;
        if x>25 then x:=1;
        kursor;
        end;
        end;
        end;

     until ((ch=#13) or (ch=#27));



     Okno(150,100,490,190);
     SetColor(15);
     Centertext(320,110,'How do you want to called this level ?');
     CenterText(320,130,'(For calcel, hit escape)');
     przycisk(240,150,400,170,0,15);
     przycisk(241,151,399,169,8,7);
     SetFillStyle(1,15);
     Bar(242,152,398,168);
     zapomnij;
     ch:=#0;
     a:=0;
     s:='';
     repeat
     if keypressed then
        begin
        ch:=ReadKey;

        if ((((ord(ch)>=65) and (ord(ch)<=90)) or ((ord(ch)>=97) and (ord(ch)<=122))) and (a<8))
        then begin if speaker then sound(100);Delay(10);if speaker then NoSound;s:=s+ch;a:=length(s);Zapomnij;
        if raw then begin GrajRaw('.Sound003.Raw',1);Delay(40);zapomnij;Wylacz;end;
        end;
        if ch=#8 then begin delete(s,length(s),1);a:=length(s);
        if speaker then sound(300);Delay(10);if speaker then NoSound;
        if raw then begin GrajRaw('.Sound003.Raw',1);Delay(20);zapomnij;Wylacz;
        end;
        end;
        SetFillStyle(1,15);
        Bar(242,152,398,168);
        SetColor(0);
        st(155,s);
        end;
     until ((ch=#13) or (ch=#27));
     if ch=#13 then
     begin
     Assign(F,'.Level'+sr(trud)+''+s+'.lev');
     Rewrite(F);
     for a:=1 to 25 do
         for b:=1 to 23 do Write(F,pl[a,b]);

     Close(f);
     end;
     end;
  if ou=2 then
     begin
     okno(50,100,590,300);
     SetTextStyle(0,0,1);
     SetColor(14);
     St(110,'OPTIONS MUSIC AND SOUND');
     SetColor(15);
     SetTextStyle(2,0,4);
     tekst(80,215,'(1) No Sound');
     tekst(183,215,'(2) PC Speaker');
     tekst(280,215,'(3) MIDI');
     tekst(380,215,'(4) Spk. + MIDI');
     tekst(480,215,'(5) Sound');
     Przycisk(75,122,175,230,10,8);
     Przycisk(180,122,265,230,10,8);
     Przycisk(270,122,365,230,10,8);
     Przycisk(370,122,465,230,10,8);
     Przycisk(470,122,580,230,10,8);
     SetTextStyle(0,0,1);
     SetColor(15);
     st(250,'Press key for 1 to 5 to change option of sound');
     narysuj('.Grafikadzdz5');
     zapomnij;
     repeat
     ch:=ReadKey;
     until ((ch=#27) or (ch='1') or (ch='2') or (ch='3') or (ch='4') or (ch='5'));
     if ch<>#27 then
        begin
        if ch='1' then bi:=0;
        if ch='2' then bi:=1;
        if ch='3' then bi:=2;
        if ch='4' then bi:=3;
        if ch='5' then bi:=4;
        Assign(F,'.daneconfig.muz');
        Rewrite(f);
        Write(f,bi);
        Close(f);
        if ((bi<>2) and (bi<>3) and SoundBlaster) then Wylacz_muzyke;
        raw:=false;
        speaker:=false;
        SoundBlaster:=false;

        if bi=1 then
        begin
        Speaker:=true;

        end;
        if bi=3 then
        begin
        SoundBlaster:=true;
        Speaker:=True;
        Graj_Muzyke('.MusicMUSIC3.HSC');
        end;
        if bi=2 then
        begin
        SoundBlaster:=true;
        Graj_Muzyke('.MusicMUSIC3.HSC');
        end;
        if bi=4 then
        begin
        Raw:=true;
        end;

        end;


     end;
  if ou=3 then
     begin
     okno(150,100,490,300);
     SetTextStyle(0,0,1);
     SetColor(15);
     st(110,'How many players ?');
     for a:=0 to 1 do
         tekst(210+a*130,250,zkim[a+1]);
     narysuj('.Grafikadzdz8');
     ch:=#0;
     repeat
     ch:=ReadKey;
     until ((ch='1') or (ch='2') or (ch=#27));
     if ch='1' then dwoch:=false;
     if ch='2' then dwoch:=true;

     end;
  if ou=4 then
     begin
     SetTextStyle(0,0,1);
     okno(150,100,490,250);
     SetColor(15);
     st(110,'GAME SPEED');
     st(140,'To change speed game press left or right');
     tekst(200,180,'Slow');
     tekst(400,180,'Fast');

     st(190,'LEVEL DIFFICULTY');
     for a:=1 to 3 do
     begin
     if trud=a then SetColor(14) else SetColor(15);
     tekst(170+(a-1)*100,220,poztr[a]);
     end;
     przycisk(220,160,420,175,8,15);
     d:=szyb;
     SetFillStyle(1,9);
     Bar(221,161,419,174);
     SetFillStyle(1,12);
     Bar(221,161,221+(195-(d div 4)),174);
     repeat
     ch:=ReadKey;
     if ch=#0 then
     begin
     ch:=ReadKey;
     if ch=#77 then
        begin
        if d>5 then d:=d-5;
        SetFillStyle(1,9);
     Bar(221+(195-(d div 4)),161,419,174);
     SetFillStyle(1,12);
     Bar(221,161,221+(195-(d div 4)),174);
        if speaker then begin sound(d+100);Delay(5);NoSound;end;
        end;
     if ch=#75 then
        begin
        if d<775 then d:=d+5;
        SetFillStyle(1,9);
     Bar(221+(195-(d div 4)),161,419,174);
     SetFillStyle(1,12);
     Bar(221,161,221+(195-(d div 4)),174);
        if speaker then begin sound(d+100);Delay(5);NoSound;end;
        end;
        end else
        begin
        if ((ord(ch)>48) and (ord(ch)<52)) then
           begin
           if trud<>va(ch) then
           begin
           trud:=va(ch);
           if speaker then begin Sound(100);delay(50);NoSound; end;
           for a:=1 to 3 do
            begin
            if trud=a then SetColor(14) else SetColor(15);
            tekst(170+(a-1)*100,220,poztr[a]);
            end;
            end;
           end;
        end;

        zapomnij;
     until ((ch=#27) or (ch=#13));
     szyb:=d;
     for a:=1 to 15 do FreeMem(ob[a],r);
     if trud=1 then ZapamietajLat;
     if trud=2 then Zapamietaj;
     if trud=3 then Zapamietajtrud;
     end;
  end;
until ou=5;
if soundblaster then Wylacz_Muzyke;
end;
procedure losuj;
Var a,b,c,d,ile:byte;
   czy:boolean;
begin
Randomize;
if speaker then Sound(400);
if not dwoch then begin
czy:=true;
if kul<=12 then ile:=3;
if kul=13 then ile:=2;
if kul=14 then ile:=1;
if ile<3 then for a:=1 to 3 do kulki[a,3]:=0;
end else ile:=3;

if (dwoch or (not dwoch and (kul<15))) then
begin
for d:=1 to ile do
begin
While (((pl[a,b]<>3) and (pl[a,b]<>11)) or czy) do
begin
a:=Random(25)+1;
b:=Random(23)+1;
czy:=false;
for c:=1 to dg do if ((ga[c,1]=a) or (ga[c,2]=b)) then czy:=true;
if dwoch then for c:=1 to dg do if ((ga2[c,1]=a) or (ga2[c,2]=b)) then czy:=true;
end;
if pl[a,b]=3 then
  begin
  kulki[d,3]:=1;
  pl[a,b]:=4;
  PutImage(10+(a-1)*20,10+(b-1)*20,ob[4]^,0);
  end else
  begin
  kulki[d,3]:=3;
  pl[a,b]:=12;
  PutImage(10+(a-1)*20,10+(b-1)*20,ob[12]^,0);
  end;
kulki[d,1]:=a;
kulki[d,2]:=b;
end;
end;
{Dodatek}
if Random(4)=2 then
begin
if kulki[4,3]>0 then
  begin
  if kulki[4,3]<3 then
  begin
  pl[kulki[4,1],kulki[4,2]]:=3;
  PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[3]^,0) end else
     begin
     pl[kulki[4,1],kulki[4,2]]:=11;
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[11]^,0);
     end;
  end;

czy:=true;
While (((pl[a,b]<>3) and (pl[a,b]<>11)) or czy) do
begin
czaskuli:=40;
a:=Random(25)+1;
b:=Random(23)+1;
czy:=false;

for c:=1 to dg do if ((ga[c,1]=a) or (ga[c,2]=b)) then czy:=true;
if dwoch then for c:=1 to dg do if ((ga2[c,1]=a) or (ga2[c,2]=b)) then czy:=true;
end;
if pl[a,b]=3 then
  begin
  kulki[4,3]:=1;
  pl[a,b]:=6;
  PutImage(10+(a-1)*20,10+(b-1)*20,ob[6]^,0);
  end else
  begin
  kulki[4,3]:=3;
  pl[a,b]:=14;
  PutImage(10+(a-1)*20,10+(b-1)*20,ob[14]^,0);
  end;
  kulki[4,1]:=a;
  kulki[4,2]:=b;
  end;
if speaker then NoSound;
end;

procedure punkty;
begin
SetFillStyle(1,0);
Bar(522,432,629,459);
SetColor(15);
SetTextStyle(0,0,2);
tekst(530,440,sr(pkt));
SetTextStyle(0,0,1);
end;

procedure szans;
begin
SetTextStyle(0,0,2);
SetColor(2);
tekst(520,70,'Lifes:');
SetColor(10);
tekst(522,72,'Lifes:');
Przycisk(520,95,630,125,8,15);
SetFillStyle(1,0);
Bar(522,97,629,124);
SetColor(15);
tekst(530,100,'x '+sr(sz));
end;

procedure kule;
begin
SetFillStyle(1,0);
Bar(522,232,629,259);
SetColor(15);
SetTextStyle(0,0,2);
tekst(530,235,'x '+sr(kul));
end;

function ktora:byte;
Var a:integer;
begin
for a:=1 to 3 do
   if ((kulki[a,1]=x) and (kulki[a,2]=y)) then ktora:=a;
end;

function ktora2:byte;
Var a:integer;
begin
for a:=1 to 3 do
   if ((kulki[a,1]=x2) and (kulki[a,2]=y2)) then ktora2:=a;
end;

procedure monitor(s:string);
Var a:integer;
begin
if speaker then Sound(100);
SetTextStyle(2,0,4);
xm:=xm+1;
SetFillStyle(1,0);
Bar(522,312,629,389);
if xm>7 then
begin
for a:=2 to xm do monit[a-1]:=monit[a];
xm:=7;
end;
monit[xm]:=s;
for a:=1 to 7 do
tekst(525,305+10*a,monit[a]);
if speaker then NoSound;
end;
procedure punkty2;
begin
SetFillStyle(1,0);
SetTextStyle(0,0,2);
Bar(522,170,629,200);
przycisk(520,168,630,201,8,15);
SetColor(15);
tekst(530,177,sr(pkt2));
end;


procedure graj;
Var a,b,c,d,klk:integer;
   level:boolean;
begin
if not dwoch then begin
sz:=6-trud;
lev:=1;
pkt:=0;
ch:=#0;
wtopa:=false;
sp:=szyb;

repeat
ClearDevice;
SetColor(15);
SetTextStyle(2,0,5);
st(200,'Level '+sr(lev));
if lev=13 then st(150,'LAST LEVEL !');
a:=200;
zapomnij;
level:=false;
if not wtopa then kul:=0;
if raw then GrajRaw('.Sound003.Raw',1);

repeat
a:=a+1;
Delay(10);
SetFillStyle(1,0);
d:=sz;
if d>7 then d:=7;
for c:=1 to d do
begin
Bar(a-60-c*10,220+c*30,a-61-c*10,240+c*30);
for b:=4 downto 2 do
   begin
   PutImage(a-(b-1)*20-c*10,220+c*30,ob[1]^,0);
   end;
PutImage(a-c*10,220+c*30,ob[9]^,0);
end;
until (keypressed or (a>440));
if raw then Wylacz;
zapomnij;
ClearDevice;

ch:=#0;
Drzwi(3,3,637,477);
Przycisk(9,9,511,470,8,15);
Przycisk(520,430,630,460,8,15);
SetFillStyle(1,0);
Bar(522,432,629,459);
SetTextStyle(0,0,2);
SetColor(2);
Tekst(522,410,'Points:');
SetColor(10);
Tekst(524,412,'Points:');
Przycisk(520,230,630,260,8,15);
SetFillStyle(1,0);
Bar(522,232,629,259);
SetTextStyle(0,0,2);
SetColor(2);
Tekst(522,210,'Balls:');
SetColor(10);
Tekst(524,212,'Balls:');

Przycisk(520,310,630,390,8,15);
SetFillStyle(1,0);
Bar(522,312,629,389);
SetColor(2);
Tekst(522,280,'Monitor');
Tekst(522,143,'Level:');
SetColor(10);
Tekst(524,282,'Monitor');
Tekst(524,145,'Level:');
SetFillStyle(1,0);
Bar(522,170,629,200);
przycisk(520,168,630,201,8,15);
SetColor(15);
tekst(530,177,sr(lev));

if not wtopa then
begin
Assign(F,'.level'+sr(trud)+'lev'+sr(lev)+'.lev');
Reset(f);
for a:=1 to 25 do
         for b:=1 to 23 do Read(F,pl[a,b]);

Close(F);

a:=Random(25)+1;
b:=Random(23)+1;
While ((pl[a,b]<>3) and (pl[a,b]<>11)) do
begin
a:=Random(25)+1;
b:=Random(23)+1;
end;
wc:=pl[a,b];
pl[a,b]:=10;
wx:=a;
wy:=b;

end;

for a:=1 to 25 do
   for b:=1 to 23 do
       if (((pl[a,b]=4) or (pl[a,b]=6)) and wtopa) then
       pl[a,b]:=3 else if (((pl[a,b]=12) or (pl[a,b]=14)) and wtopa) then
       pl[a,b]:=11;


if not wtopa then wyjscie:=false;
for a:=1 to 25 do
   for b:=1 to 23 do
       if (pl[a,b]<>10) then
       PutImage(10+(a-1)*20,10+(b-1)*20,ob[pl[a,b]]^,0) else
       if not wyjscie then
       begin if wc=3 then PutImage(10+(a-1)*20,10+(b-1)*20,ob[3]^,0) else
       PutImage(10+(a-1)*20,10+(b-1)*20,ob[10]^,0)
       end else
       PutImage(10+(a-1)*20,10+(b-1)*20,ob[10]^,0);

ch:=#0;
dx:=0;
dy:=1;
x:=1;
y:=1;
ga[1,1]:=1;
ga[1,2]:=1;
ga[2,1]:=1;
ga[2,2]:=0;
ga[3,2]:=-1;
ga[3,1]:=1;
ga[4,2]:=-2;
ga[4,1]:=1;

SetFillStyle(1,9);
SetColor(9);
FillEllipse(575,40,50,15);
narysuj('.Grafikadzdz3');
SetTextStyle(0,0,1);
SetColor(0);
centertext(575,35,'Black Amper');
if not wtopa then
begin
czaskuli:=0;
kulki[4,3]:=0;
end;

if not wtopa then czysc:=false;
dg:=4;
splev:=0;
wtopa:=false;
a:=Random(25);
b:=Random(23);
if kul<15 then begin losuj;klk:=3;end;

punkty;
szans;
kule;
xm:=0;
for a:=1 to 7 do monit[a]:='';
if kul<15 then
begin
Monitor('Find '+sr(15-kul));
Monitor('balls and');
end;
if not wyjscie then Monitor('find exit') else monitor('go to exit');

SetFillStyle(5,14);
bar(9,0,29,10);

repeat
wyl:=false;
{Ruch g¥sienic¥}
if keypressed then
  begin
     ch:=ReadKey;
     key:=Port[$60];
     if key>128 then key:=key-128;
     case ch of
     #151:begin
        if sz<30 then sz:=sz+1;
        szans;
        monitor('O no, you know');
        monitor('pass for a life');
        end;
        #152:begin
        if sz<30 then sz:=sz+1;
        szans;
        monitor('O no, you know');
        monitor('pass for a life');
        end;
        #205:begin
        if not wyjscie then
        begin
        wyjscie:=true;
        pkt:=pkt+500;
        punkty;
        PutImage(10+(wx-1)*20,10+(wy-1)*20,ob[10]^,0);
        monitor('You thief !');
        end;
        end;
        #206:begin
        kul:=15-klk;
        kule;
        Monitor('This pass is only');
        Monitor('for me...');
        end;
        '†':begin
        lev:=lev+1;
        level:=true;
        monitor('Do you want format');
        monitor('hard drive ?');
        end;
        '¥':begin
        if splev<300 then
        begin
        splev:=splev+20;
        monitor('What ? To fast');
        end;
        end;
        '©':begin
        if splev>-100 then
        begin
        splev:=splev-20;
        monitor('What ? To Slow');
        end;
        end;
        'p':begin
        Monitor('PAUSE. FOR BACK');
        Monitor('TO GAME PRESS ANY');
        Monitor('KEY');
        czekaj;
        end;
        end;
     if ch=#0 then
     begin
     ch:=ReadKey;

     case ch of
        #72:begin
        if dy<>1 then
        begin
        dy:=-1;
        dx:=0;
        end;
        end;
        #80:begin
        if dy<>-1 then
        begin
        dy:=1;
        dx:=0;
        end;
        end;
        #75:begin
        if dx<>1 then
        begin
        dx:=-1;
        dy:=0;
        end;
        end;
        #77:begin
        if dx<>-1 then
        begin
        dx:=1;
        dy:=0;
        end;
        end;


  end;
  end;
if ((ch<>#72) and (ch<>#0) and (ch<>#80) and (ch<>#77) and (ch<>#75) and (ch<>#27)) then zapomnij;
end;

SetFillStyle(1,0);
if pl[x,y]=3 then pl[x,y]:=11;
if ((pl[x+dx,y+dy]=2) or (pl[x+dx,y+dy]=7) or (x+dx>25) or (y+dy>23) or (x+dx<1) or (y+dy<1)) then wtopa:=true;

if not wtopa then
  begin
if ((ga[dg,1]>0) and (ga[dg,2]>0)) then
PutImage(10+(ga[dg,1]-1)*20,10+(ga[dg,2]-1)*20,ob[pl[ga[dg,1],ga[dg,2]]]^,0);
x:=x+dx;
y:=y+dy;

for a:=dg downto 2 do
   begin
   ga[a,1]:=ga[a-1,1];
   ga[a,2]:=ga[a-1,2];
   if ((ga[a,1]>0) and (ga[a,2]>0)) then PutImage(10+(ga[a,1]-1)*20,10+(ga[a,2]-1)*20,ob[1]^,0);
   end;
ga[1,1]:=x;
ga[1,2]:=y;

if ((ga[1,1]>0) and (ga[1,2]>0)) then if dx=0 then PutImage(10+(x-1)*20,10+(y-1)*20,ob[8]^,0) else
             PutImage(10+(x-1)*20,10+(y-1)*20,ob[9]^,0);

for a:=1 to dg do
   for b:=1 to dg do
   begin
   if ((ga[a,1]=ga[b,1]) and (ga[a,2]=ga[b,2]) and (b<>a)) then wtopa:=true;
   end;
end;

if ((pl[x,y]=6) or (pl[x,y]=14)) then
begin
if speaker then sound(600);
if (raw and (not wyl)) then begin wyl:=true;GrajRaw('.Sound003.Raw',8);end;
pkt:=pkt+300;
punkty;
kulki[4,3]:=0;
pl[x,y]:=11;
Monitor('BONUS :');
if Random(10)>5 then
    begin
    splev:=splev-30;
    Monitor('Fastest game');
    end else
If ((Random(5)<=2) and (dg>4)) then
begin
for a:=dg downto 4 do
if ((ga[a,1]>0) and (ga[a,2]>0)) then
PutImage(10+(ga[a,1]-1)*20,10+(ga[a,2]-1)*20,ob[pl[ga[a,1],ga[a,2]]]^,0);
dg:=4;
Monitor('Cut tail');
end else
    if ((Random(10)>5) and (kul<=10)) then
    begin
    kul:=15-klk;
    kule;
    Monitor('All balls');
    Monitor('find,');
    if ((wyjscie) and (kul=15)) then Monitor('go to exit') else
    if kul=15 then Monitor('Find exit');
    end else
    if ((Random(10)>5) and not wyjscie) then
    begin
    PutImage(10+(wx-1)*20,10+(wy-1)*20,ob[10]^,0);
    pkt:=pkt+500;
    wyjscie:=true;
    punkty;
    Monitor('Exit is found');
     Monitor('All is good.');
    end else
    if ((Random(5)>=3) and not czysc) then
    begin
    for a:=1 to 25 do
   for b:=1 to 23 do
       begin
       if pl[a,b]=3 then pl[a,b]:=11;
       if pl[a,b]=4 then begin pl[a,b]:=12;end;
       if pl[a,b]=6 then begin pl[a,b]:=14;end;
       PutImage(10+(a-1)*20,10+(b-1)*20,ob[pl[a,b]]^,0);
       end;
   for a:=1 to 4 do
       if ((kulki[a,3]=1) or (kulki[a,3]=2)) then kulki[a,3]:=3;
   czysc:=true;
   wyjscie:=true;
   Monitor('Reveal map');
    end else
    if Random(10)>5 then
    begin
    splev:=splev+50;
    Monitor('Slowly down');
    Monitor('game');
    end else
    begin
    sz:=sz+1;
    Monitor('You have new');
    Monitor('life !!!');
    szans;
    end;


if speaker then NoSound;
end;


if ((pl[x,y]=4) or (pl[x,y]=12)) then
begin
if speaker then sound(600);
if (raw and (not wyl)) then begin wyl:=true;GrajRaw('.Sound002.Raw',8);end;
pkt:=pkt+100;
punkty;
kulki[ktora,3]:=0;
pl[x,y]:=11;
kul:=kul+1;
Monitor('You found ball');
if ((kul<15) and (Random(100)<95)) then Monitor('Yet '+sr(15-kul)+' balls') else
   begin
   if kul<14 then
   begin
   Monitor('Yet '+sr(15-kul)+' wines...');
   Monitor('O, Sorry - Balls');
   end;
   end;

if kul>=15 then
   begin
   if wyjscie then
   Monitor('Go to exit') else
   Monitor('Search for exit');
   if (raw and (not wyl)) then begin wyl:=true;GrajRaw('.Sound001.Raw',8);end;
   end;

klk:=klk-1;
dg:=dg+1;
ga[dg,1]:=ga[dg-1,1];
ga[dg,2]:=ga[dg-1,2];
kule;

if ((kul<=14) and (klk<1)) then begin losuj;klk:=3;end;
if speaker then NoSound;
end;

if ((pl[x,y]=10) and (kul>=15)) then
begin
monitor('NEXT LEVEL...');
pkt:=pkt+1000;
punkty;
lev:=lev+1;
level:=true;
if (raw and (not wyl)) then begin wyl:=true;GrajRaw('.Sound000.Raw',8);end;
end;

if ((pl[x,y]=10) and (not wyjscie)) then
  begin
  Monitor('You found exit');
  pkt:=pkt+500;
  punkty;
  dzwiek:=true;
  wyjscie:=true;
  if (raw and (not wyl)) then begin wyl:=true;GrajRaw('.Sound005.Raw',8);end;
  end;


if not dzwiek then
begin
pr:=(splev+sp-(lev*5));
if pr<30 then pr:=30;
if pr>500 then pr:=500;
delay(pr)
end
else
begin
dl:=1;
for a:=1 to 5 do
begin
GrajDzwiek(3);
pr:=(splev+sp-(lev*5)) div 5;
if pr<5 then pr:=5;
if pr>100 then pr:=100;
delay(pr);
end;
dzwiek:=false;
end;
if wyl then wylacz;
for b:=1 to 3 do
   begin
   if kulki[b,3]=1 then
      begin
      kulki[b,3]:=2;
      PutImage(10+(kulki[b,1]-1)*20,10+(kulki[b,2]-1)*20,ob[5]^,0);
      end else
   if kulki[b,3]=2 then
   begin
      kulki[b,3]:=1;
      PutImage(10+(kulki[b,1]-1)*20,10+(kulki[b,2]-1)*20,ob[4]^,0)
      end;
   if kulki[b,3]=3 then
      begin
      kulki[b,3]:=4;
      PutImage(10+(kulki[b,1]-1)*20,10+(kulki[b,2]-1)*20,ob[13]^,0);
      end else
   if kulki[b,3]=4 then
   begin
      kulki[b,3]:=3;
      PutImage(10+(kulki[b,1]-1)*20,10+(kulki[b,2]-1)*20,ob[12]^,0)
      end;
   end;

if kulki[4,3]>0 then
  begin
  if kulki[4,3]=1 then
     begin
     kulki[4,3]:=2;
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[6]^,0);
     czaskuli:=czaskuli-1;
     end else if kulki[4,3]=2 then
     begin
     kulki[4,3]:=1;
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[5]^,0);
     czaskuli:=czaskuli-1;
     end;
  if kulki[4,3]=3 then
     begin
     kulki[4,3]:=4;
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[14]^,0);
     czaskuli:=czaskuli-1;
     end else if kulki[4,3]=4 then
     begin
     kulki[4,3]:=3;
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[13]^,0);
     czaskuli:=czaskuli-1;
     end;
  if (czaskuli mod 5=0) then Monitor('Time :'+sr(czaskuli div 5));
  if czaskuli<1 then begin
  if kulki[4,3]<3 then
  begin
  PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[3]^,0);
  pl[kulki[4,1],kulki[4,2]]:=3;
  end
  else
     begin
     PutImage(10+(kulki[4,1]-1)*20,10+(kulki[4,2]-1)*20,ob[11]^,0);
     pl[kulki[4,1],kulki[4,2]]:=11;
     end;
  kulki[4,3]:=0;
  Monitor('BONUS OVER');
  end;

  end;

NoSound;
if Random(400)=10 then monitor('Pascal is good');
if Random(400)=10 then begin monitor('Processor is');monitor('to hot !!!');end;
if Random(300)=10 then Monitor('Testing monitor');
if Random(400)=10 then begin monitor('Hard drive');monitor('infected');end;
if Random(400)=10 then monitor('Deleting Windows...');
if Random(500)=10 then monitor('!#@%$#$@%^@%^!*');

if wtopa then monitor('You lost life');

until ((ch=#27) or wtopa or level);
for a:=1 to 320 do
   begin
   linia(0,a*2,640,a*2,0);
   end;
if wtopa then
  begin
  sz:=sz-1;
  drzwi(200,100,440,140);
  SetTextStyle(0,0,1);
  SetColor(15);
  st(115,'You lost life');
  if raw then begin GrajRaw('.Sound006.Raw',1);Delay(100);Wylacz;end;
  end;
if level then
  begin

c:=dg;
for b:=1 to dg-1 do
begin
for a:=dg downto 1 do

   begin
   PutImage(10+(ga[dg,1]-1)*20,10+(ga[dg,2]-1)*20,ob[pl[ga[dg,1],ga[dg,2]]]^,0);
   ga[a,1]:=ga[a-1,1];
   ga[a,2]:=ga[a-1,2];
   PutImage(10+(ga[a,1]-1)*20,10+(ga[a,2]-1)*20,ob[1]^,0);
   PutImage(10+(x-1)*20,10+(y-1)*20,ob[10]^,0);
   end;

for d:=1 to 50
do begin
if speaker then Sound(d+100+51*c);
pr:=(splev+sp-(lev*5)) div 50;
if pr<0 then pr:=1;
delay(pr);
end;
c:=c-1;
end;

if speaker then NoSound;
  drzwi(200,100,440,140);
  SetTextStyle(0,0,1);
  SetColor(15);
  st(115,'YOU PASS '+sr(lev-1)+' LEVEL !!!');
  if raw then begin GrajRaw('.Sound002.Raw',8);Delay(500);Wylacz;end;
  end;

if (wtopa or level) then czekaj;


until ((ch=#27) or (sz<1) or (lev>13));
if lev>13 then
  begin
  ClearDevice;
  if soundblaster then Wylacz_muzyke;
  if soundblaster then Graj_muzyke('.MusicMUSIC5.HSC');
  narysuj('.Grafikadzdz2');
  czekaj;
  ClearDevice;
  for a:=1 to 32 do
   for b:=1 to 24 do if Random(10)>5 then
       PutImage((a-1)*20,(b-1)*20,ob[2]^,0) else
       PutImage((a-1)*20,(b-1)*20,ob[7]^,0);
  okno(100,40,540,450);
  SetTextStyle(0,0,2);
  SetColor(14);
  st(50,'HOW DO YOU DO THIS ?!');
  SetTextStyle(0,0,1);
  SetColor(15);
  st(90,'You are so good, that you pass last level.');
  st(110,'That was amazing. My game is to hard for');
  st(130,'normal people. Are you from other planet ?');
  st(150,'(Just kidding). If you want more info then');
  st(170,'you can tell me what are you want to know');
  st(190,'brought net (my adress in menu : FROM AUTHOR)');
  st(210,'but I write this here :');
  st(230,'BlackAmper@poczta.onet.pl');
  st(250,'If you make any programs in Turbo Pascal 7.0');
  st(270,'then you can contact with me (I am from Poland)');
  st(290,'And we can make games together. I search from');
  st(310,'good graphic, music, programists (maybe be in');
  st(330,'Turbo Pascal and Delphi). Anybody which help');
  st(350,'me is in list of authors. Special thanks for :');
  st(370,'Christian Wonschak from Riedligen.');
  st(410,'Press any key');
  czekaj;
  if soundblaster then Wylacz_muzyke;
  pascal;
  end;
if sz<1 then
  begin
  ClearDevice;
  narysuj('.Grafikadzdz1');
  czekaj;
  end;
end else
begin
                               {Gra na dw¢ch graczy}
ClearDevice;
narysuj('.Grafikadzdz9');
SetTextStyle(2,0,8);
SetColor(0);
tekst(330,100,'I am going to win.');
tekst(120,350,'Ha ha ha ha ha');
czekaj;
ClearDevice;
okno(200,50,440,450);
SetTextStyle(0,0,1);
SetColor(15);

for a:=1 to 500 do pliki[a]:='- EMPTY -';
FindFirst('.level'+sr(trud)+'*.lev',Archive,naz);
pliki[1]:=naz.Name;

d:=1;
While DosError=0 do
begin
FindNext(naz);
if doserror=0 then d:=d+1;
if doserror=0 then pliki[d]:=naz.name;

end;
c:=0;


st(60,'CHOSE LEVEL FOR GAME');
wokno(244,100,395,261);
wokno(244,275,395,437);
ch:=#60;
zapomnij;
SetFillStyle(1,15);
Bar(245,101,394,260);
gw_init;
plik:=true;
repeat
gwi;
delay(10);

if plik then
begin
Bar(260,101,380,260);
for a:=1 to 10 do
   begin
   if a<>1 then SetColor(8) else SetColor(10);
   st(100+a*13,pliki[a+c]);
   SetColor(8);
   end;
Assign(F,'.level'+sr(trud)+''+pliki[c+1]);
Reset(F);

for a:=1 to 25 do
   for b:=1 to 23 do
       begin
       Read(F,pl[a,b]);
       if pl[a,b]=2 then
          begin
          SetFillStyle(1,9);
          Bar(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7);
          przycisk(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7,3,8);
          end;
       if pl[a,b]=7 then
          begin
          SetFillStyle(1,2);
          Bar(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7);
          przycisk(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7,10,8);
          end;
       if pl[a,b]=3 then
          begin
          SetFillStyle(1,6);
          Bar(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7);
          PutPixel(245+(a-1)*6+Random(6),276+(b-1)*7+Random(7),14);
          end;
       if pl[a,b]=11 then
          begin
          SetFillStyle(1,8);
          Bar(245+(a-1)*6,276+(b-1)*7,250+(a-1)*6,282+(b-1)*7);
          end;

       end;
Close(F);
plik:=false;
x:=0;
y:=0;
end;


if

 

Strona korzysta z plików cookie w celu ¶wiadczenia us³ug Google (reklamy, statytyki) oraz Facebook. Je¶li chcesz zablokowaæ pliki cookies wy³acz je w swojej przegl±darce. Potrzebujesz pomocy? kliknij