Hra - nieŔo ako krÝżenec DOOMa a Diggera

Delphi & Pascal (Ŕeskß wiki)
P°ejÝt na: navigace, hledßnÝ
Kategˇria: KMP (Klub mladřch programßtorov)
x-files.pngAutor: Alexej Ostrouchov
Program: X-file_r.pas
S˙bor exe: X-file_r.exe
PotrebnÚ: X-files.pas

Hra - nieŔo ako krÝżenec DOOMa a Diggera. Celß urobenß v textovom reżime s dobrřmi a vtipnřmi nßpadmi.
{ X-FILE_R.PAS                                                      }
{ Author: Alexej Ostrouchov                                         }
{ Date  : 15.02.1997                           http://www.trsek.com }
 
uses crt,dos,trsek;
var  x,y,score,energy,i,xstrasidlo,strasidlo,kopia:integer;
     ch:char;
     f:text;
     s:string;
     Label 1;
     Label 2;
 
Procedure GameOver;
 Begin
  Clrscr;
  TextColor(4);
  Gotoxy(1,10);Write('  ██▄▄██                                   ▄▀▀██▀▄                           ');
  Gotoxy(1,11);Write(' █▀  █▀ █                                 ██  ▀  ██                          ');
  Gotoxy(1,12);Write('██▄  ▀  ▀    ▄██▄█      ██   ██  █▀▀▀█   █ ▀     ▀ █ █      █  █▀▀▀█  █▀▀██  ');
  Gotoxy(1,13);Write(' ██▀  ▄▄▄   █▀ █▀ █    ██ █▄█ █ █▀       ▀█       █▀ ▀█    █▀ █▀      █    █ ');
  Gotoxy(1,14);Write('▄ ██    █  ▀ █     █    █  █  █  █▀▀      ██     ██  ▀ █  █    █▀▀    █▀███  ');
  Gotoxy(1,15);Write(' ▀ █▄▄█▀█ ▀ ▀  ▀██▀ ▀▀            ██▀▀      ██▀▀█ █     ██      ██▀▀  █ ▀  █ ');
 Repeat Until KeyPressed;
End;
 
 
Procedure Blood;
 Begin
  TextColor(1);
  Gotoxy(38,21);Write('█');
  Gotoxy(42,21);Write('█');
End;
 
Procedure EnergyDPic1;
 Begin
  TextColor(2);
  Gotoxy(35,20);Write('  ▄▄▄▄▄▄▄');
  Gotoxy(35,21);Write(' █████████');
  Gotoxy(35,22);Write(' ████ ████');
  Gotoxy(35,23);Write(' █████████');
  Gotoxy(35,24);Write(' ██     ██');
  Gotoxy(35,25);Write('  ▀▀▀▀▀▀▀');
  Blood;
End;
 
Procedure EnergyDPic2;
 Begin
  EnergyDPic1;
  TextColor(4);
  Gotoxy(40,25);Write('▀█▀');
End;
 
Procedure EnergyDPic3;
 Begin
  EnergyDPic2;
  TextColor(4);
  Gotoxy(40,22);Write('▄█');
  Gotoxy(40,23);Write('█');
End;
 
Procedure EnergyDPic4;
 Begin
  EnergyDPic3;
  TextColor(4);
  Gotoxy(39,23);Write('█');
  Gotoxy(39,24);Write('▀');
  Gotoxy(38,25);Write('██');
End;
 
Procedure EnergyDPic5;
 Begin
  EnergyDPic4;
  TextColor(4);
  Gotoxy(37,24);Write('█');
  Gotoxy(37,22);Write('██');
  Gotoxy(37,23);Write('█');
  Gotoxy(42,23);Write('██');
  Gotoxy(43,24);Write('█');
End;
 
Procedure Pich;
 Begin
  Write(chr(30));Write(chr(30));
 End;
 
Procedure PDPic1;
 Begin
  TextColor(2);
  Gotoxy(10,10);Write('▄▄▄██▀█');
  Gotoxy(10,11);Write('     ████');
  Gotoxy(10,12);Write('    ██████');
  Gotoxy(10,13);Write('     █████');
  Gotoxy(10,14);Write('▀▀▀▀▀▀██████');
  TextColor(7);
  Gotoxy(10,11);Write('');
  Gotoxy(10,13);Pich;Pich;Write(chr(30));
End;
 
Procedure Ns;
 Begin
  Nosound;
 End;
 
Procedure PDPic2;
 Begin
  TextColor(2);
  Gotoxy(10,10);Write('▄▄▄██▀█');
  Gotoxy(10,11);Write('     ████');
  Gotoxy(10,12);Write('     ██████');
  Gotoxy(10,13);Write('▀▀▀▀▀█████');
  Gotoxy(10,14);Write('      █████');
  TextColor(4);
  Gotoxy(10,11);Write('');
  Gotoxy(10,12);Write('');
 End;
 
Procedure PriseraDeath;
 Begin
  Clrscr;
  PDPic1;Delay(600);
  Sound(30);Delay(100);Ns;
  PDPic2;Delay(500);
  PDPic1;
  TextColor(4);
  Gotoxy(10,11);Write('');
  Gotoxy(10,13);Write('');
  Gotoxy(12,12);Write(' ');
  Delay(1000);
  PDPic1;
  TextColor(4);
  Gotoxy(10,11);Write('');
  Gotoxy(10,12);Write('     ');
  Gotoxy(10,13);Write('');
  Gotoxy(12,12);Write(' ');
  Delay(400);
  Delay(3000);
  GameOver;
End;
 
 
Procedure Liv;
 Begin
  Write(chr(4));
  Sound(90);Delay(200);Nosound;
End;
 
Procedure En;
 Begin
  TextColor(4);
  Write(chr(4));
 End;
 
Procedure Zac;
 Begin
  TextColor(1);
  Gotoxy(25,10);Write(chr(65));Write(' ');Write(chr(71));Write(chr(65));Write(chr(77));
  Gotoxy(30,10);Write(chr(69));Write(' ');Write(chr(66));Write(chr(89));
  Gotoxy(17,12);Write(chr(65));Write(chr(76));Write(chr(69));Write(chr(88));Write(chr(69));Write(chr(74));
  Gotoxy(29,12);Write(chr(79));Write(chr(83));Write(chr(84));Write(chr(82));Write(chr(79));Write(chr(85));
  Gotoxy(35,12);Write(chr(67));Write(chr(72));Write(chr(79));Write(chr(86));
End;
 
Procedure Demo;
 Begin
   TextColor(4);
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('');
   Writeln('                    █▀▄▄█▀██       ▄ ▄██▀▄▄      ▀██▄▀    ');
   Writeln('                    █▀  ▀ ▀         █▀ ▀        ▀█  █ █   ');
   Writeln('                    █▀██▀           ██▀▄█▀      ▄██    ▀   ');
   Writeln('                    ██            █     █▄      ▀ █       ');
   Writeln('                    ██▀▀▄█▀█▄     ▄▀▀█▀█ ▀       █▀▀▄█▀   ');
   Writeln('                     ▀    ▀                          █    ');
   TextColor(1);
   Writeln('                             Software present');
End;
 
Procedure Demo2;
 Begin
  TextColor(4);
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('');
  Writeln('                                                            ');
  Writeln('        █▄       ▄█                                           ');
  Writeln('        ▀ █     ▀█          █▀▄▄█▀█    █                      ');
  Writeln('         █▀▄   █▀█          █▄  ▀      █    █▀▄▄█      ██▄▄   ');
  Writeln('          ▀██▄▀ ▄    ▀▀▀   ▀ ██▄▄   █  █     █▀  ▀    █    ▀  ');
  Writeln('          █▀  █▄             █   ▀  █  █      █▀     ▄ ▀▀█▄   ');
  Writeln('         █▀    ▀█            █▀     █  ▀▀▀▀  ▀ █▄█▄  ▀█▄▄█    ');
  Writeln('        █                                                     ');
End;
 
Procedure DeathTeh;
 Begin
  Clrscr;
  TextColor(2);
  Gotoxy(10,10);Write(chr(2));
  TextColor(15);
  Gotoxy(10,7);Write('█');
  Sound(900);
  Delay(500);
  Gotoxy(10,7);Write(' ');
  Gotoxy(10,8);Write('█');
  Delay(200);
  Gotoxy(10,8);Write(' ');
  Gotoxy(10,9);Write('█');
  Delay(200);
  TextColor(4);
  Gotoxy(10,9);Write(' ');
  Gotoxy(10,10);Write('█');
  Sound(20);Delay(300);Nosound;
  Delay(300);
  Gotoxy(9,10);Write('\');
  Gotoxy(11,10);Write('/');
  Delay(300);
  Gotoxy(8,10);Write('──');
  Gotoxy(11,10);Write('──');
  Delay(300);
  Gotoxy(7,10);Write('__/');
  Gotoxy(11,10);Write('\__');
  Delay(1000);
  GameOver;
End;
 
Procedure PichD;
 Begin
  TextColor (4);
  y:=y+1;
  Sound(20);Delay(200);Nosound;
  Repeat
    Gotoxy(x,y);Write(chr(2));
  Until KeyPressed;
End;
 
Procedure SoundD;
 Begin
  Sound(20);  Delay(500);Ns;Delay(100);
  Sound(200); Delay(500);Ns;Delay(100);
  Sound(300); Delay(500);Ns;Delay(100);
  Sound(20);  Delay(500);Ns;Delay(100);
  Sound(300); Delay(500);Ns;Delay(100);
  Sound(300); Delay(500);Ns;Delay(100);
  Sound(20);  Delay(500);Ns;Delay(100);
  Sound(300); Delay(500);Ns;Delay(100);
End;
 
 
Procedure Her;
 Begin
  TextColor(14);
  Write(chr(3));
End;
 
Procedure El;
 Begin
  TextColor(14+Blink);
  Write('█');
End;
 
Procedure Elev;
 Begin
  TextColor(6);
  Write(chr(18));
End;
 
Procedure Med;
 Begin
  Write('  ');
End;
 
Procedure Prep;
 Begin
  Clrscr;
  For i:=1 to 20 do Writeln(chr(2));
End;
 
Procedure C;
 Begin
  TextColor(1);
  Write('█');
End;
 
BEGIN  { Zaciatok Programu }
 
 TextColor(14);
 TextBackGround(0);
 Clrscr;
 Writeln('1. Starts sound on');
 Writeln('2. Starts sound off');
 Writeln('3. Nostart');
 readln(s);
 
{ Nemusi byt  tato podmienka }
{ If (s='3') Then Goto 1;}
 If (s='1') Then Begin
     Clrscr;
     Demo;
     SoundD;
     Clrscr;
     Demo2;
     SoundD;
     Clrscr;
     Zac;
     SoundD;
    End;
 
 If (s='2') Then Begin
    Clrscr;
    Demo;
    Delay(2000);
    Clrscr;
    Demo2;
    Delay(2000);
   End;
 
1: ClrScr;
 
   EnergyDPic1;
   TextBackGround(0);
   TextColor(2);
   Gotoxy(65,5);Write('   Heards ');
                                         { Hearts print }
   Gotoxy(18,3);Her;Her;
   Gotoxy(30,5);Her;Her;                 { Heards print end }
 
                                         { Cesty Print }
   TextColor(1);
   Gotoxy(1,4);Write('███████████████████████████ ████████');
   Gotoxy(27,6);C;C;C;C;C;
   Gotoxy(40,7);C;C;C;C;C;C;C;
   Gotoxy(40,6);C;
   Gotoxy(44,8);C;
   Gotoxy(30,9);C;C;C;C;C;C;C;C;C;C;C;C;C;C;C;
                                         { Cesty Print End }
 
  TextColor(7);                          { Pichlace Print }
  Gotoxy(4,4);Write(chr(30));Write(chr(30));
  Gotoxy(37,4);Pich;Pich;
                                         { Pichlace Print end }
  strasidlo:=1;
  score:=0;
  energy:=100;
  x:=2; y:=3;
  gotoxy(1,23);write('Pohyb sipkami, PgUp,PgDown ....');
 
  REPEAT
   if keypressed then ch:=Readkey
                 else ch:=#10;
   TextColor(14);
   Gotoxy(69,16);
   Write(energy,'% ');                   { Srasidlo  Function }
 
    {1}
    If strasidlo = 1 Then Begin
        TextColor(2);
        Xstrasidlo:=Random(8);
        Gotoxy(32,8);Write('           ');
        Gotoxy(xstrasidlo+32,8);Write(chr(12));
       End;
 
    If strasidlo = 0 Then Begin
        TextColor(2);
        Xstrasidlo:=Random(8);
        Gotoxy(32,8);Write('           ');
        Gotoxy(xstrasidlo+32,8);Write(' ');
       End;
 
    If (strasidlo = 1) and (y=8) and (x>=32) and (x<=37) Then Begin
        PriseraDeath;
        Goto 1;
       End;
 
    If (strasidlo = 0) and ((y=8) and (x=32)) or ((y=8) and (x=38)) Then x:=x+1;
                                      { Strasidlo  Function end }
 
                                      { Strasidlo Death }
    If (energy > 80) and (energy < 101) Then EnergyDPic1;
    If (energy > 60) and (energy < 80)  Then EnergyDPic2;
    If (energy > 40) and (energy < 60)  Then EnergyDPic3;
    If (energy > 20) and (energy < 40)  Then EnergyDPic4;
    If (energy > 1 ) and (energy < 20)  Then EnergyDPic5;
 
                                       { Tlacitko }
    TextColor(1);
    Gotoxy(25,3);Write('_');
    If (y=3) and (x=25) Then Begin
        DeathTeh;
        Goto 1;
       End;
 
    TextColor(1);
    Gotoxy(36,3);Write('_');
    If (y=3) and (x=36) Then strasidlo:= 0;
                                         { Strasidlo }
 
                                         { Strasidlo end }
                                         { Tlacitko End }
 
    TextColor(1);
    Gotoxy(25,3);Write('_');
    If (y=3) and (x=25) Then Begin
        DeathTeh;
        Goto 1;
       End;
 
    TextColor(1);
    Gotoxy(36,3);Write('_');
    If (y=3) and (x=36) Then strasidlo:= 0;
                                         { Strasidlo }
 
                                         { Strasidlo end }
                                         { Tlacitko End }
   If energy < 0 Then Begin
       ClrScr;
       TextColor(2);
       Gotoxy(23,10);Write(' ▄▄▄▄▄▄▄');
       Gotoxy(23,11);Write('█████████');
       Gotoxy(23,12);Write('████ ████');
       Gotoxy(23,13);Write('█████████');
       Gotoxy(23,14);Write('██     ██');
       Gotoxy(23,15);Write(' ▀▀▀▀▀▀▀');
       TextColor(1);
       Gotoxy(25,11);Write('█');
       Gotoxy(29,11);Write('█');
       Delay(800);
       Clrscr;
       TextColor(4);
       Gotoxy(20,10);Write('█  /────────\');
       Gotoxy(20,11);Write('▄ █│       ██');
       Gotoxy(20,12);Write('  ▄█▄█    █ │▄▀');
       Gotoxy(20,13);Write('  █│█       █');
       Gotoxy(20,14);Write('  ▄│▀      ▀│█  █');
       Gotoxy(20,15);Write('█  \─█▀█▄───/ ▀');
       TextColor(7);
       Gotoxy(25,11);Write('▄    ▄');
       Gotoxy(27,13);Write('▀▀');
       Gotoxy(25,14);Write('||||||');
       Sound(40);Delay(200);Ns;Delay(100);
       Clrscr;
       TextColor(4);
       Gotoxy(20,10);Write('   /────────\');
       Gotoxy(20,11);Write('   │        █');
       Gotoxy(20,12);Write('█  ▄      █ │▄');
       Gotoxy(20,13);Write('▀ █│█ █    █ █ ▀');
       Gotoxy(20,14);Write(' ▀ │▀       ▀│  ');
       Gotoxy(20,15);Write(' █ \───█▄───/ █  █');
       TextColor(7);
       Gotoxy(25,11);Write('▄    ▄');
       Gotoxy(27,13);Write('▀▀');
       Gotoxy(25,14);Write('||||||');
       Delay(300);
       Clrscr;
       TextColor(4);
       Gotoxy(18,10);Write('     /────────\');
       Gotoxy(18,11);Write('     │        │');
       Gotoxy(18,12);Write('     │        │▄');
       Gotoxy(18,13);Write('    █│█      ███  ');
       Gotoxy(18,14);Write('     │▀       ▀│  ▀');
       Gotoxy(18,15);Write('█▄▄▄ \───██▄───/ ▄▄▄▄█');
       TextColor(7);
       Gotoxy(25,11);Write('▄    ▄');
       Gotoxy(27,13);Write('▀▀');
       Gotoxy(25,14);Write('||||||');
       Delay(300);
       Clrscr;
       TextColor(4);
       Gotoxy(18,10);Write('     /────────\');
       Gotoxy(18,11);Write('     │        │');
       Gotoxy(18,12);Write('     │        │ ');
       Gotoxy(18,13);Write('     │        │  ');
       Gotoxy(18,14);Write('     │        │  ▄');
       Gotoxy(18,15);Write('██▄▄ \█▄██▄───/█▄▄▄▄█');
       TextColor(7);
       Gotoxy(25,11);Write('▄    ▄');
       Gotoxy(27,13);Write('▀▀');
       Gotoxy(25,14);Write('||||||');
       Delay(300);
       Clrscr;
       TextColor(4);
       Gotoxy(18,10);Write('              ');
       Gotoxy(18,11);Write('  │ /│ │ │─\    │');
       Gotoxy(18,12);Write('     │       ││ ');
       Gotoxy(18,13);Write('   ─ │    │   │  ');
       Gotoxy(18,14);Write('     │        ─  ▄');
       Gotoxy(18,15);Write('██▄▄ \█▄██▄───/█▄▄▄▄█');
       TextColor(7);
       Gotoxy(25,12);Write('▄    ▀');
       Gotoxy(27,14);Write('▀█');
       Gotoxy(25,14);Write('||||  ');
       Gotoxy(29,15);Write('-|');
       Delay(300);
       Clrscr;
       TextColor(4);
       Gotoxy(18,10);Write('               ');
       Gotoxy(18,11);Write('        │      ');
       Gotoxy(18,12);Write('  │ -  │   - │\   ');
       Gotoxy(18,13);Write(' /  ─ ││    │  ││-  ');
       Gotoxy(18,14);Write('     │        ─  ▄');
       Gotoxy(18,15);Write('██▄▄ \█▄██▄───/█▄▄▄▄█');
       TextColor(7);
       Gotoxy(25,13);Write('▄    ▀');
       Gotoxy(27,15);Write('▀█');
       Gotoxy(25,15);Write('----  ');
       Gotoxy(29,15);Write('--');
       Delay(300);
       Clrscr;
       TextColor(4);
       Gotoxy(18,14);Write(' - │ - │ --   ě  -▄');
       Gotoxy(18,15);Write('██▄▄ \█▄██▄─││/█▄▄▄▄█');
       TextColor(7);
       Gotoxy(25,15);Write('▄    ▀');
       Gotoxy(27,15);Write('▀█');
       Gotoxy(25,15);Write('----  ');
       Gotoxy(29,15);Write('--');
       Delay(1000);
       GameOver;
       Goto 1;
      End;
 
    TextColor(2);
    Gotoxy(x,y);Write(' ');
    If (ch='K') Then begin x:=x-1;Sound(60);Delay(10);Nosound;end;
    If (ch='M') Then begin x:=x+1;Sound(60);Delay(10);Nosound;end;
    If (ch='I') Then Begin
      y:=y-1;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      x:=x+3;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      y:=y+1;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      Sound(400);Delay(10);Nosound;
     End;
    If (ch='G') Then Begin
      y:=y-1;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      x:=x-3;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      y:=y+1;Gotoxy(x,y);Write('');Delay(200);Gotoxy(x,y);Write(' ');
      Sound(400);Delay(10);Nosound;
     End;
 
    TextColor(14);
    If (ch=' ') Then Begin
        For i:= x to x+3 do Write('─');
        Sound(200);Delay(100);Ns;
        Gotoxy(x,y);
        For i:= x to x+4 do Write(' ');
       End;
 
     TextColor(2);
     Gotoxy(x,y);Write(chr(2));
                                                { Prepadliska }
 
     If (y=3) and (x=28) Then Begin
         y:=y+2;
         Gotoxy(28,3);Med;
         Sound(300);Delay(250);Ns;
        End;
 
     If (y=5) and ((x=33) or (x=37)) Then Begin
          y:=y+3;
          Gotoxy(33,5);Write('   ');
         End;
                                                { Prepadliska end }
 
                                                { Elektrina Print }
     TextColor(14);
     Gotoxy(12,3);El;El;
                                                { Elektrina Print end }
 
                                                { Elektrina Function }
     If (y=3) and ((x=12) or (x=13)) Then Begin
         energy:=energy-11;
        End;                                    { Elektrina Function end }
 
                                                { Elevator print }
     Gotoxy(35,3);Elev;
     Gotoxy(46,6);Elev;
     Gotoxy(41,6);En;
     If (y=6) and (x=41) Then Energy:=100;
 
                                                { Pichlace Function }
    If ((y=3) and (x=4)) or ((y=3) and (x=5)) Then Begin
        TextColor(4);
        Gotoxy(4,3);Write('  ');
        Gotoxy(4,4);Pich;
        PichD;
        Goto 1;
       End;
 
    If (y=3) and ((x=37) or (x=38)) Then Begin
        TextColor(4);
        Gotoxy(37,4);Med;
        Gotoxy(38,4);Write(chr(30));
        PichD;
        Goto 1;
       End;
 
    If (y=3) and ((x=39) or (x=40)) Then Begin
        TextColor(4);
        Gotoxy(39,4);Med;
        Gotoxy(38,4);Pich;
        PichD;
        Goto 1;
       End;                               { Pichlace Function end }
 
                                          { Heards Finction }
    If (y=3) and (x=18) Then Begin Gotoxy(65,6);Her; End;
    If (y=3) and (x=19) Then Begin Gotoxy(66,6);Her; End;
    If (y=5) and (x=30) Then Begin Gotoxy(67,6);Her; End;
    If (y=5) and (x=31) Then Begin Gotoxy(68,6);Her; End;
                                           { Hearts Function End }
 
                                           { El. Function }
    If (y=3) and (x=35) Then Begin
        x:=x+9;
        y:=y+3;
        Sound(100);Delay(100);
        Sound(200);Delay(100);
        Sound(300);Delay(150);
        Sound(100);Delay(100);
        Sound(200);Delay(100);
        Sound(300);Delay(150);
        Ns;
       End;
 
    If (y=6) and (x=46) Then Begin
        y:=y-3;
        x:=x-12;
        Sound(100);Delay(100);
        Sound(200);Delay(100);
        Sound(300);Delay(150);
        Sound(100);Delay(100);
        Sound(200);Delay(100);
        Sound(300);Delay(150);
        Ns;
       End;
                                                { El.Function end }
 
                                                { Steny }
    If (y=6) and (x=41) Then x:=x+1;
    If (y=8) and (x=43) Then x:=x-1;
    KurzorZap(false);
    delay(30);
                                                { Steny end }
 UNTIL (ch=#27);
 
END.