bkimminich icon

XXXX 2 - The ultimative DOOM 2-Clone

bkimminich | PRO | 01/27/19 09:45:38 AM UTC | 0 ⭐ | 9339 👁️ | Never ⏰ | []
Pascal |

43.5 KB

|

None

|

0 👍

/

0 👎

PROGRAM XXXX;
 
{********************************************
 * X X X X 2 - The ultimative DOOM 2-Clone  *
 *                                          *
 * Author: B.M”ller                         *
 * Publisher: B™MMSOFT  (Germany)           *
 *                                          *
 * Date of begin: 14.04.95                  *
 * Date of end  : __.__.__                  *
 ********************************************}
 
USES Crt;
VAR dead,enemy:STRING[10];
    x,y,m,a,w20,expX,expY,Moveit,maxF,udx,udy,feldx,feldy:INTEGER;
    armour,bullets,bombs,missles,pow,acc,lp,af,tp,sc,aliennr:LONGINT;
    score,scorealt,level:LONGINT;
    posx,posy,Hits,schaden,SP1x,sp2x,sp3x,sp4x,sp5x,sp1y,sp2y,sp3y,sp4y,sp5y:INTEGER;
    Ch:CHAR;
    vP1x,vp2x,vp3x,vp4x,vp5x,vp1y,vp2y,vp3y,vp4y,vp5y:INTEGER;
 
 {$I B”mmsoft.log}
PROCEDURE Explode; FORWARD;
PROCEDURE Blood;
BEGIN
textcolor(red);
for y:=1 to 22 do begin
   gotoxy(1,y);
   for a:=1 to 80 do write('Û');
 
   gotoxy(1,y+1);
   for a:=1 to 80 do begin
   m:=random(2)+1;
   if m=1 then write('Û');
   if m=2 then write(' ');
   end;
 
   gotoxy(1,y+2);
   for a:=1 to 80 do begin
   m:=random(2)+1;
   if m=1 then write('³');
   if m=2 then write(' ');
   end;
 
   gotoxy(1,y+3);
   for a:=1 to 80 do begin
   m:=random(2)+1;
   if m=1 then write('ß');
   if m=2 then write(' ');
   end;
 
delay(127);
if y=10 then nosound;
end;
 
gotoxy(1,22);
for a:=1 to 80 do write('Û');
delay(127);
gotoxy(1,23);
for a:=1 to 80 do write('Û');
delay(127);
gotoxy(1,24);
for a:=1 to 80 do write('Û');
delay(1000);
END;
 
PROCEDURE Intro;
BEGIN
clrscr;
Boemmsoft_Logo;
gotoxy(36,18);
textcolor(white);
write('presents');
delay(2000);
clrscr;
delay(1000);
textcolor(red);
write('                            ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±                      ');
write('                           ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±                     ');
write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°');
write('Û°                          ²²²²±                   ²²²²²²±                   Û°');
write('Û°ÛÛÛ°           ÛÛÛ°ÛÛÛ°           ÛÛÛ°ÛÛÛ°       ²²²±ÛÛÛ°ÛÛÛ°           ÛÛÛ°Û°');
write('Û° ÛÛÛ°         ÛÛÛ°  ÛÛÛ°         ÛÛÛ°  ÛÛÛ°    ²²²²±ÛÛÛ°  ÛÛÛ°         ÛÛÛ° Û°');
write('Û°  ÛÛÛ°       ÛÛÛ°    ÛÛÛ°       ÛÛÛ°    ÛÛÛ°  ²²²²±ÛÛÛ°    ÛÛÛ°       ÛÛÛ°  Û°');
write('Û°   ÛÛÛ°     ÛÛÛ°      ÛÛÛ°     ÛÛÛ°      ÛÛÛ°²²²²±ÛÛÛ°      ÛÛÛ°     ÛÛÛ°   Û°');
write('Û°    ÛÛÛ°   ÛÛÛ°        ÛÛÛ°   ÛÛÛ°        ÛÛÛ°²²±ÛÛÛ°        ÛÛÛ°   ÛÛÛ°    Û°');
write('Û°     ÛÛÛ° ÛÛÛ°          ÛÛÛ° ÛÛÛ°        ²²ÛÛÛ°±ÛÛÛ°          ÛÛÛ° ÛÛÛ°     Û°');
write('Û°       ÛÛÛÛ°              ÛÛÛÛ°         ²²²²±ÛÛÛÛ°              ÛÛÛÛ°       Û°');
write('Û°     ÛÛÛ° ÛÛÛ°          ÛÛÛ° ÛÛÛ°      ²²²±ÛÛÛ° ÛÛÛ°          ÛÛÛ° ÛÛÛ°     Û°');
write('Û°    ÛÛÛ°   ÛÛÛ°        ÛÛÛ°   ÛÛÛ°    ²²²±ÛÛÛ°   ÛÛÛ°        ÛÛÛ°   ÛÛÛ°    Û°');
write('Û°   ÛÛÛ°     ÛÛÛ°      ÛÛÛ°     ÛÛÛ° ²²²²±ÛÛÛ°     ÛÛÛ°      ÛÛÛ°     ÛÛÛ°   Û°');
write('Û°  ÛÛÛ°       ÛÛÛ°    ÛÛÛ°       ÛÛÛ°²²²±ÛÛÛ°       ÛÛÛ°    ÛÛÛ°       ÛÛÛ°  Û°');
write('Û° ÛÛÛ°         ÛÛÛ°  ÛÛÛ°        ²ÛÛÛ°²±ÛÛÛ°         ÛÛÛ°  ÛÛÛ°         ÛÛÛ° Û°');
write('Û°ÛÛÛ°           ÛÛÛ°ÛÛÛ°        ²²²ÛÛÛ°ÛÛÛ°           ÛÛÛ°ÛÛÛ°           ÛÛÛ°Û°');
write('Û°                             ²²²²²²²²²±                                     Û°');
write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ°');
write('                             ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±                     ');
write('                            ²²²²²²²²²²²²²²²²²²²²²²²²²²²²²±                      ');
writeln;
writeln('                  Û Û Ûß Û  Û   ÛßÛ Û  Û  Ûß ÛßÛ ÛßÛ ßÛß Û Û');
writeln('                   Û  ÛÛ Û  Û   Û Û ÛÛ Û  ÛÛ ÛßÛ ÛßÛ  Û  ÛÛÛ');
write('                  Û Û ÛÜ ÛÜ ÛÜ  ÛÜÛ Û ßÛ  ÛÜ Û Û Û  Û Û  Û Û');
gotoxy(39,20);
write('VERSION 1.2');
readln;
Blood;
clrscr;
delay(1000);
textcolor(7);
writeln;
writeln('To get known the controlling of "XXXX 2" type `HELP` in your Game-directory!');
writeln;
writeln('             I hope you enjoy blasting the demons back to hell...');
writeln;
writeln('                 If there`s any problem with this game call:');
writeln;
textcolor(red);
writeln('                            Germany, 04122-######');
textcolor(8);
writeln;
writeln('            Why are you waiting? Press <RETURN> to start demon-kicking...');
readln;
Blood;
clrscr;
delay(1000);
END;
 
 
PROCEDURE Init_Hero;
BEGIN
Scorealt:=0;
Score:=0;
Level:=1;
Armour:=5000;
Bullets:=1000;
Bombs:=10;
Missles:=3;
POW:=8;
ACC:=10;
END;
 
PROCEDURE Status;
BEGIN
textcolor(0);
textbackground(7);
window(1,23,80,25);
clrscr;
 
window(1,24,16,24);
write('SCORE: ',score);
 
window(1,25,16,25);
write('LEVEL: ',level);
 
window(18,24,32,24);
write('ARMOUR: ',armour);
 
window(18,25,32,25);
write('ACCURANCE: ',acc);
 
window(34,24,48,24);
write('GUNPOWER: ',pow);
 
window(34,25,48,25);
write('BULLETS: ',bullets);
 
window(50,24,67,24);
write('BOMBS: ',bombs);
 
window(50,25,67,25);
write('H-MISSLES: ',missles);
 
window(69,23,80,25);
gotoxy(2,1); write('XXXX 2');
gotoxy(2,2); write('¸ 1995');
gotoxy(1,3); write('B™MMSOFT');
 
textbackground(0);
textcolor(0);
window(1,1,80,22);
END;
 
PROCEDURE Init_Crosswire;
BEGIN
textcolor(white);
Posx:=40;
Posy:=11;
gotoxy(Posx-1,Posy);
write('ÄÅÄ');
END;
 
PROCEDURE Feind1;
   begin
expx:=37;
expy:=11;
Moveit:=10;
Maxf:=2;
lp:=10; af:=5; tp:=6; sc:=7;
   aliennr:=1;
   vp1x:=-1;
   vp1y:=0;
 
   vp2x:=0;
   vp2y:=0;
 
   vp3x:=1;
   vp3y:=0;
 
   vp4x:=0;
   vp4y:=1;
   vp5x:=10000;
vp5y:=10000;
 
   end;
 
PROCEDURE Feind2;
   begin
expx:=38;
expy:=17;
Moveit:=6;
MaxF:=1;
lp:=20; af:=7; tp:=5; sc:=11;
   aliennr:=2;
 
   vp1x:=-9;
   vp1y:=-3;
 
   vp2x:=-8;
   vp2y:=-3;
 
   vp3x:=-7;
   vp3y:=-3;
 
   vp4x:=-6;
   vp4y:=-3;
 
   vp5x:=-5;
   vp5y:=1-3;
   end;
 
PROCEDURE Feind4;
   begin
expx:=28;
expy:=17;
Moveit:=4;
MaxF:=1;
lp:=40; af:=9; tp:=12; sc:=20;
   aliennr:=4;
vp1x:=4;
vp1y:=3-4;
vp2x:=5;
vp2y:=4-4;
vp3x:=5;
vp3y:=5-4;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
end;
 
PROCEDURE Feind5;
   begin
expx:=39;
expy:=13;
Moveit:=1;
MaxF:=1;
lp:=50; af:=10; tp:=20; sc:=26;
   aliennr:=5;
    vp1x:=0;
   vp1y:=-1;
 
   vp2x:=-1;
   vp2y:=0;
 
   vp3x:=0;
   vp3y:=0;
 
   vp4x:=1;
   vp4y:=0;
 
   vp5x:=0;
   vp5y:=1;
 
   end;
 
PROCEDURE Feind7;
   begin
EXPX:=52;
EXPY:=11;
Moveit:=15;
MaxF:=4;
lp:=5;  af:=5; tp:=100; sc:=36;
   aliennr:=7;
     vp1x:=3;
   vp1y:=-4;
 
   vp2x:=1;
   vp2y:=-1;
 
   vp3x:=0;
   vp3y:=-1;
 
   vp4x:=-1;
   vp4y:=-1;
 
   vp5x:=2;
   vp5y:=-1;
 
   end;
 
PROCEDURE Feind8;
   begin
expx:=37; expy:=11;
Moveit:=8;
MaxF:=2;
lp:=75; af:=12; tp:=25; sc:=37;
   aliennr:=8;
   vp1x:=0;
   vp1y:=2;
   vp2x:=1;
   vp2y:=2;
vp3x:=10000;
vp3y:=10000;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
 
PROCEDURE Feind9;
   begin
expx:=13;
expy:=8;
Moveit:=3;
MaxF:=1;
lp:=100; af:=11; tp:=30; sc:=47;
   aliennr:=9;
   vp1x:=-2;
vp1y:=-2;
vp2x:=-1;
vp2y:=-2;
vp3x:=0;
vp3y:=-2;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
PROCEDURE Feind12;
   begin
expx:=15;
expy:=5;
Moveit:=16;
MaxF:=10;
lp:=200; af:=18; tp:=5; sc:=74;
   aliennr:=12;
   vp1x:=-2;
vp1y:=1;
vp2x:=-1;
vp2y:=1;
vp3x:=0;
vp3y:=1;
vp4x:=1;
vp4y:=1;
vp5x:=2;
vp5y:=1;
end;
 
PROCEDURE Feind14;
   begin
expx:=40;
expy:=11;
Moveit:=4;
MaxF:=1;
lp:=200; af:=13; tp:=40; sc:=84;
   aliennr:=14;
   vp1x:=-5;
vp1y:=0;
vp2x:=-5;
vp2y:=1;
vp3x:=5;
vp3y:=0;
vp4x:=5;
vp4y:=1;
vp5x:=0;
vp5y:=3;
 
   end;
 
PROCEDURE Feind17;
   begin
expx:=40;
expy:=17;
Moveit:=1;
MaxF:=1;
lp:=500; af:=15; tp:=100; sc:=205;
   aliennr:=17;
   vp1x:=0;
vp1y:=0;
vp2x:=10000;
vp2y:=10000;
vp3x:=10000;
vp3y:=10000;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
   PROCEDURE Feind3;
   begin
expx:=37;
expy:=11;
Moveit:=10;
Maxf:=2;
lp:=30; af:=10; tp:=12; sc:=17;
   aliennr:=3;
   vp1x:=-1;
   vp1y:=0;
 
   vp2x:=0;
   vp2y:=0;
 
   vp3x:=1;
   vp3y:=0;
 
   vp4x:=0;
   vp4y:=1;
   vp5x:=10000;
vp5y:=10000;
 
   end;
 
PROCEDURE Feind6;
   begin
expx:=38;
expy:=17;
Moveit:=6;
MaxF:=1;
lp:=60; af:=14; tp:=10; sc:=28;
   aliennr:=6;
 
   vp1x:=-9;
   vp1y:=-3;
 
   vp2x:=-8;
   vp2y:=-3;
 
   vp3x:=-7;
   vp3y:=-3;
 
   vp4x:=-6;
   vp4y:=-3;
 
   vp5x:=-5;
   vp5y:=1-3;
   end;
 
PROCEDURE Feind10;
   begin
expx:=28;
expy:=17;
Moveit:=4;
MaxF:=1;
lp:=120; af:=18; tp:=24; sc:=54;
   aliennr:=10;
vp1x:=4;
vp1y:=3-4;
vp2x:=5;
vp2y:=4-4;
vp3x:=5;
vp3y:=5-4;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
end;
 
PROCEDURE Feind11;
   begin
expx:=39;
expy:=13;
Moveit:=1;
MaxF:=1;
lp:=150; af:=20; tp:=40; sc:=70;
   aliennr:=11;
    vp1x:=0;
   vp1y:=-1;
 
   vp2x:=-1;
   vp2y:=0;
 
   vp3x:=0;
   vp3y:=0;
 
   vp4x:=1;
   vp4y:=0;
 
   vp5x:=0;
   vp5y:=1;
 
   end;
 
PROCEDURE Feind13;
   begin
EXPX:=52;
EXPY:=11;
Moveit:=15;
MaxF:=4;
lp:=15;  af:=10; tp:=200; sc:=75;
   aliennr:=13;
     vp1x:=3;
   vp1y:=-4;
 
   vp2x:=1;
   vp2y:=-1;
 
   vp3x:=0;
   vp3y:=-1;
 
   vp4x:=-1;
   vp4y:=-1;
 
   vp5x:=2;
   vp5y:=-1;
 
   end;
 
PROCEDURE Feind15;
   begin
expx:=37; expy:=11;
Moveit:=8;
MaxF:=2;
lp:=225; af:=20; tp:=50; sc:=98;
   aliennr:=15;
   vp1x:=0;
   vp1y:=2;
   vp2x:=1;
   vp2y:=2;
vp3x:=10000;
vp3y:=10000;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
 
PROCEDURE Feind16;
   begin
expx:=13;
expy:=8;
Moveit:=3;
MaxF:=1;
lp:=300; af:=20; tp:=60; sc:=127;
   aliennr:=16;
   vp1x:=-2;
vp1y:=-2;
vp2x:=-1;
vp2y:=-2;
vp3x:=0;
vp3y:=-2;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
PROCEDURE Feind18;
   begin
expx:=15;
expy:=5;
Moveit:=16;
MaxF:=10;
lp:=600; af:=20; tp:=15; sc:=210;
   aliennr:=18;
   vp1x:=-2;
vp1y:=1;
vp2x:=-1;
vp2y:=1;
vp3x:=0;
vp3y:=1;
vp4x:=1;
vp4y:=1;
vp5x:=2;
vp5y:=1;
end;
 
PROCEDURE Feind19;
   begin
expx:=40;
expy:=11;
Moveit:=4;
MaxF:=1;
lp:=600; af:=20; tp:=80; sc:=233;
   aliennr:=19;
   vp1x:=-5;
vp1y:=0;
vp2x:=-5;
vp2y:=1;
vp3x:=5;
vp3y:=0;
vp4x:=5;
vp4y:=1;
vp5x:=0;
vp5y:=3;
 
   end;
 
PROCEDURE Feind20;
   begin
expx:=40;
expy:=17;
Moveit:=1;
MaxF:=1;
lp:=1500; af:=20; tp:=200; sc:=573;
   aliennr:=20;
   vp1x:=0;
vp1y:=0;
vp2x:=10000;
vp2y:=10000;
vp3x:=10000;
vp3y:=10000;
vp4x:=10000;
vp4y:=10000;
vp5x:=10000;
vp5y:=10000;
 
   end;
 
PROCEDURE Enemychoose;
BEGIN
sp1x:=0;
sp1y:=0;
sp2x:=0;
sp2y:=0;
sp3x:=0;
sp3y:=0;
sp4x:=0;
sp4y:=0;
sp5x:=0;
sp5y:=0;
 
w20:=random(20)+1;
IF Level>=20 then enemy:='13-19';
IF Level<19 then enemy:='10-17';
IF Level<17 then enemy:='8-17';
IF Level<13 then enemy:='5-17';
IF Level<11 then enemy:='5-14';
IF Level<8  then enemy:='4-11';
IF Level<6  then enemy:='3-8';
IF Level<4  then enemy:='2-5';
IF Level<3  then enemy:='1-4';
IF (Level>18) and (w20>16) then enemy:='20';
 
 
 
IF enemy='1-4' then begin
a:=random(4)+1;
if a=1 then Feind1;
if a=2 then Feind2;
if a=3 then Feind3;
if a=4 then Feind4;
end;
 
 
IF enemy='2-5' then begin
   a:=random(4)+1;
   if a=1 then Feind2;
   if a=2 then Feind3;
   if a=3 then Feind4;
if a=4 then Feind5;
 
end;
 
IF enemy='3-8' then begin
   a:=random(6)+1;
   if a=1 then Feind3;
   if a=2 then Feind4;
   if a=3 then Feind5;
   if a=4 then Feind6;
   if a=5 then Feind7;
  if a=6 then Feind8;
end;
 
IF enemy='4-11' then begin
   a:=random(8)+1;
   if a=1 then Feind4;
   if a=2 then Feind5;
   if a=3 then Feind6;
   if a=4 then Feind7;
   if a=5 then Feind8;
   if a=6 then Feind9;
   if a=7 then Feind10;
   if a=8 then Feind1;
 
end;
 
IF enemy='5-14' then begin
   a:=random(10)+1;
   if a=1 then Feind5;
   if a=2 then Feind6;
   if a=3 then Feind7;
if a=4 then Feind8;
   if a=5 then Feind9;
   if a=6 then Feind10;
   if a=7 then Feind11;
   if a=8 then Feind12;
  if a=9 then Feind13;
   if a=10 then Feind14;
 
end;
 
IF enemy='5-17' then begin
   a:=random(13)+1;
   if a=1 then Feind5;
   if a=2 then Feind6;
   if a=3 then Feind7;
if a=4 then Feind8;
   if a=5 then Feind9;
   if a=6 then Feind10;
   if a=7 then Feind11;
   if a=8 then Feind12;
 if a=9 then Feind13;
   if a=10then Feind14;
   if a=11then Feind15;
   if a=12then Feind16;
 if a=13then Feind17;
 
end;
 
IF enemy='8-17' then begin
   a:=random(10)+1;
   if a=1 then Feind8;
   if a=2 then Feind9;
   if a=3 then Feind10;
if a=4 then Feind11;
   if a=5 then Feind12;
   if a=6 then Feind13;
   if a=7 then Feind14;
   if a=8 then Feind15;
  if a=9 then Feind16;
   if a=10 then Feind17;
 end;
   IF enemy='10-17' then begin
   a:=random(8)+1;
   if a=1 then Feind10;
   if a=2 then Feind11;
   if a=3 then Feind12;
   if a=4 then Feind13;
   if a=5 then Feind14;
   if a=6 then Feind15;
   if a=7 then Feind16;
   if a=8 then Feind17;
 
end;
 IF enemy='13-19' then begin
   a:=random(7)+1;
   if a=1 then Feind13;
   if a=2 then Feind14;
   if a=3 then Feind15;
   if a=4 then Feind16;
   if a=5 then Feind17;
   if a=6 then Feind18;
   if a=7 then Feind19;
 
end;
 
 
 
IF enemy='20' then Feind20;
 
END;
 
PROCEDURE Draw_Alien;
BEGIN
if aliennr=1 then begin
textcolor(8);
gotoxy(expx-6,expy-2);
write('ÜÜ         ÜÜ');
gotoxy(expx-4,expy-1);
write('ßÜ     Üß');
gotoxy(expx-2,expy);
write('°±±±°');
gotoxy(expx-1,expy+1);
write('°±°');
gotoxy(expx-2,expy+2);
write('ß   ß');
textcolor(14);
gotoxy(expx-1,expy-1); write('Ü Ü');
END;
 
if aliennr=2 then begin
textcolor(6);
gotoxy(expx-4,expy+2-3);
write('ßßßßßßßßßßßß');
gotoxy(expx+6,expy+1-3); write('ÜÜÜ');
gotoxy(expx-10,expy-3);
write('²²²²±');
gotoxy(expx-5,expy+1-3); write('±');
gotoxy(expx-10,expy-1-3);
write('|  |');
textcolor(14);
gotoxy(expx-9,expy-1-3); write('ÜÜ');
textcolor(7);
gotoxy(expx-3,expy+1-3); write('±°°°°°±');
gotoxy(expx-2,expy-3); write('±°°°±');
gotoxy(expx-1,expy-1-3); write('±±±');
end;
 
if aliennr=4 then begin
textcolor(6);
gotoxy(expx-3+6,expy-1-4);
write('Ü  Ü');
gotoxy(expx+2,expy-4);
write('³ ÜÜ ³');
gotoxy(expx-5,expy+1-4);
write('ÛÛ     ³ ÛÛ ³');
gotoxy(expx-7,expy+2-4);
write('ÛÛ      ÛÛÛÛÛÛÛ');
gotoxy(expx-8,expy+3-4);
write('ÛÛ    ÜÛÛÛÛ');
gotoxy(expx-7,expy+4-4);
write('ÛÛÛÛÛÛÛÛÛ');
gotoxy(expx-5,expy+5-4);
write('ßßÛÛÛÛ');
textcolor(blue);
gotoxy(expx+3,expy+1-4); write('°');
gotoxy(expx+6,expy+1-4); write('°');
textcolor(15);
gotoxy(expx+3,expy+3-4); write('²  ²');
textcolor(magenta);
gotoxy(expx+4,expy+3-4); write('±');
gotoxy(expx+5,expy+4-4); write('±');
gotoxy(expx+5,expy+5-4); write('ß');
END;
 
if aliennr=5 then begin
textcolor(lightgreen);
gotoxy(expx-5,expy-3); write('±         ±');
gotoxy(expx-4,expy-2); write('±ÜÜÜÜÜÜ ±');
gotoxy(expx-6,expy-1); write('ÜÛÛÛÛ   ÛÛÛÛÜ');
gotoxy(expx-7,expy); write('ÛÛÛÛÛ     ÛÛÛÛÛ');
gotoxy(expx-8,expy+1); write('ÛÛÛÛÛÛÛ   ÛÛÛÛÛÛÛ');
gotoxy(expx-9,expy+2); write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ');
gotoxy(expx-9,expy+3); write('ÛÛÛÛÛÛ        ÛÛÛÛÛ');
gotoxy(expx-8,expy+4); write('ßßßßßßßßßßßßßßßß');
textcolor(15);
gotoxy(expx-1,expy-1);  write('ܰÜ');
gotoxy(expx-2,expy); write('°° °°');
gotoxy(expx-1,expy+1);  write('ß°ß');
textcolor(lightred);
gotoxy(expx-3,expy+3); write('³³³³³³³³');
gotoxy(expx,expy); write('±');
end;
 
if aliennr=7 then begin
textcolor(red);
gotoxy(expx-6,expy+2); write('ß ß  ß ß   ß  ß');
gotoxy(expx-6,expy+1); write('±  ± ±  ± ±  ±');
gotoxy(expx-5,expy); write('ÜÛÛÛÛÛÛÛÛÛÛÜ');
gotoxy(expx-2,expy-1); write('Û °° ÛÞ²');
gotoxy(expx-1,expy-2); write('ÜÜÜÜ   ²');
gotoxy(expx+7,expy-3); write('²');
gotoxy(expx+4,expy-4); write('ßßÜ');
textcolor(white); gotoxy(expx+3,expy-4); write('Ü');
textcolor(lightmagenta);
gotoxy(expx-1,expy-1); write('þ');
gotoxy(expx+2,expy-1); write('þ');
end;
 
if aliennr=8 then begin
textcolor(8);
gotoxy(expx-10,expy-3); write('°°°°              °°°±');
gotoxy(expx-7,expy-2); write('°°±          °±±');
gotoxy(expx-5,expy-1); write('°±±      ±±±');
gotoxy(expx-3,expy); write('°±±±±±±±');
gotoxy(expx-2,expy+1); write('°°°°°±');
gotoxy(expx-3,expy+2); write('° Û  Û ±');
gotoxy(expx-4,expy+3); write('°        ±');
textcolor(yellow); gotoxy(expx-1,expy-1); write('Ü  Ü');
end;
 
if aliennr=9 then begin
textcolor(6);
gotoxy(expx+3-6,expy-5); write('Ü    Ü  Ü');
gotoxy(expx-7,expy-4); write('Ü  Û  Û Û  Û');
gotoxy(expx-6,expy-3); write('Û          Ü');
gotoxy(expx+6,expy-2); write('Û');
textcolor(magenta);
gotoxy(expx-4,expy-3); write('±±²±²±²');
gotoxy(expx-5,expy-2); write('±±²   ±±±²');
gotoxy(expx-6,expy-1); write('±²²²±±²±²±±²²');
gotoxy(expx-7,expy); write('±±ÜßÜßÜßÜßÜßܲ±');
gotoxy(expx-7,expy+1); write('±²²²±²±±²²²²²±±');
gotoxy(expx-6,expy+2); write('±±±±²±±±±±±±');
gotoxy(expx-5,expy+3); write('±²²±±²²²±²±');
gotoxy(expx-5,expy+4); write('ßß ß ß ß  ß');
textcolor(green);
gotoxy(expx-2,expy-2); write('Û Û');
end;
 
if aliennr=12then begin
 
textcolor(lightblue);
gotoxy(expx-3,expy+4); write('°°ß°°°ß°');
gotoxy(expx-4,expy+3); write('°°°°°°°°°°');
gotoxy(expx-5,expy+2); write('°°°°°°°°°°°');
gotoxy(expx-5,expy+1); write('ܰ°     °°');
gotoxy(expx-4,expy); write('°°°°°°°°°°');
gotoxy(expx-4,expy-1); write('ܰ° °° °°°');
gotoxy(expx-2,expy-2); write('°°°°°°°Ü');
gotoxy(expx-3,expy-3); write('ܰ°°°°');
gotoxy(expx-1,expy-4); write('ÜÜ');
textcolor(lightred); gotoxy(expx-1,expy-1); write('þ');
gotoxy(expx+2,expy-1); write('þ');
textcolor(yellow);
gotoxy(expx-2,expy+1); write('³³³³³');
end;
 
if aliennr=14then begin
textcolor(lightgray);
gotoxy(expx-3,expy-4); write('Ü     Ü');
gotoxy(expx-3,expy-3); write('³     ³');
gotoxy(expx-22,expy-2); write('ÜÜÜܰ°°°Ü          ³ÜÜÜÜܳ          Ü°°°°ÜÜÜÜ');
gotoxy(expx-24,expy-1); write('ܱ±±°°°°°°°°°ÜÜ     ±  ±±±  ±     Üܰ°°°±±±±±±±±Ü');
gotoxy(expx-24,expy); write('ß±±±±±±°°°°°°°°°°°°Ü± ±±±±± ±Ü°°°°°°±±±±±±±±±±±±ß');
gotoxy(expx-22,expy+1); write('ßßß±±±±°°±±±±±±±±ß±±±±±±±±±ß°°°°°±±±±±°°±°ßßß');
gotoxy(expx-12,expy+2); write('ßßßßßß   ß²²²²²ß   ßßßßßßß');
gotoxy(expx-1,expy+3); write('ß²ß');
gotoxy(expx,expy+4); write('²');
gotoxy(expx,expy+5); write('²');
gotoxy(expx-1,expy+6); write('ßßß');
 
end;
 
if aliennr=17 then begin
textcolor(lightgray);
gotoxy(expx-2,expy-7); write('ÜÜÜÜÜ');
gotoxy(expx-8,expy-6); write('ÜÜܰ°°°°°°°±±ÜÜÜ');
gotoxy(expx-15,expy-5); write('±±±±±±±°°   °°°°°°    ±Ü');
gotoxy(expx-16,expy-4); write('±±   ±±°      °°±°°      °±±±±±');
gotoxy(expx-18,expy-3); write('±±   ±±±±°    °±°°°°°°°    ±±±±±±');
gotoxy(expx-19,expy-2);  write('±±   ±± ±± ±±°°°°°°±°°±°°°±±±±±  ±±±±');
gotoxy(expx-19,expy-1);  write('±   ±±  ±  ±±°°°°°°±±°±±±°±±  ±±  ±±±±');
gotoxy(expx-20,expy); write('ß ß  ±  ±± ±± ²²  ²² ²²  ²² ±±  ±± ±±  ±');
gotoxy(expx-16,expy+1);write('±± ±±  ±±  ²²  ² ²  ²²  ±±  ±±  ±±ß ß');
gotoxy(expx-17,expy+2); write('±±  ±  ±±    ²²     ²²   ±± ±± ±±');
gotoxy(expx-18,expy+3); write('ß ß ±± ±±±     ²     ²    ±± ±± ±±');
gotoxy(expx-15,expy+4); write('±    ±±               ±±  ±  ±');
gotoxy(expx-16,expy+5); write('ß ß  ß ß              ß ß ß ßß ß');
end;
 
if aliennr=3 then begin
textcolor(lightred);
gotoxy(expx-6,expy-2);
write('ÜÜ         ÜÜ');
gotoxy(expx-4,expy-1);
write('ßÜ     Üß');
gotoxy(expx-2,expy);
write('°±±±°');
gotoxy(expx-1,expy+1);
write('°±°');
gotoxy(expx-2,expy+2);
write('ß   ß');
textcolor(green);
gotoxy(expx-1,expy-1); write('Ü Ü');
END;
 
if aliennr=6 then begin
textcolor(lightgreen);
gotoxy(expx-4,expy+2-3);
write('ßßßßßßßßßßßß');
gotoxy(expx+6,expy+1-3); write('ÜÜÜ');
gotoxy(expx-10,expy-3);
write('²²²²±');
gotoxy(expx-5,expy+1-3); write('±');
gotoxy(expx-10,expy-1-3);
write('Þ  Ý');
textcolor(blue);
gotoxy(expx-9,expy-1-3); write('ÜÜ');
textcolor(7);
gotoxy(expx-3,expy+1-3); write('±°°°°°±');
gotoxy(expx-2,expy-3); write('±°°°±');
gotoxy(expx-1,expy-1-3); write('±±±');
end;
 
if aliennr=10then begin
textcolor(lightmagenta);
gotoxy(expx-3+6,expy-1-4);
write('Ü  Ü');
gotoxy(expx+2,expy-4);
write('Þ ÜÜ Ý');
gotoxy(expx-5,expy+1-4);
write('ÛÛ     Þ ÛÛ Ý');
gotoxy(expx-7,expy+2-4);
write('ÛÛ      ÛÛÛÛÛÛÛ');
gotoxy(expx-8,expy+3-4);
write('ÛÛ    ÜÛÛÛÛ');
gotoxy(expx-7,expy+4-4);
write('ÛÛÛÛÛÛÛÛÛ');
gotoxy(expx-5,expy+5-4);
write('ßßÛÛÛÛ');
textcolor(green);
gotoxy(expx+3,expy+1-4); write('°');
gotoxy(expx+6,expy+1-4); write('°');
textcolor(15);
gotoxy(expx+3,expy+3-4); write('²  ²');
textcolor(red);
gotoxy(expx+4,expy+3-4); write('±');
gotoxy(expx+5,expy+4-4); write('±');
gotoxy(expx+5,expy+5-4); write('ß');
END;
 
if aliennr=11then begin
textcolor(lightblue);
gotoxy(expx-5,expy-3); write('±         ±');
gotoxy(expx-4,expy-2); write('±ÜÜÜÜÜÜ ±');
gotoxy(expx-6,expy-1); write('ÜÛÛÛÛ   ÛÛÛÛÜ');
gotoxy(expx-7,expy); write('ÛÛÛÛÛ     ÛÛÛÛÛ');
gotoxy(expx-8,expy+1); write('ÛÛÛÛÛÛÛ   ÛÛÛÛÛÛÛ');
gotoxy(expx-9,expy+2); write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ');
gotoxy(expx-9,expy+3); write('ÛÛÛÛÛÛ        ÛÛÛÛÛ');
gotoxy(expx-8,expy+4); write('ßßßßßßßßßßßßßßßß');
textcolor(15);
gotoxy(expx-1,expy-1);  write('ܰÜ');
gotoxy(expx-2,expy); write('°° °°');
gotoxy(expx-1,expy+1);  write('ß°ß');
textcolor(red);
gotoxy(expx-3,expy+3); write('³³³³³³³³');
gotoxy(expx,expy); write('±');
end;
 
if aliennr=13then begin
textcolor(yellow);
gotoxy(expx-6,expy+2); write('ß ß  ß ß   ß  ß');
gotoxy(expx-6,expy+1); write('±  ± ±  ± ±  ±');
gotoxy(expx-5,expy); write('ÜÛÛÛÛÛÛÛÛÛÛÜ');
gotoxy(expx-2,expy-1); write('Û °° ÛÞ²');
gotoxy(expx-1,expy-2); write('ÜÜÜÜ   ²');
gotoxy(expx+7,expy-3); write('²');
gotoxy(expx+4,expy-4); write('ßßÜ');
textcolor(red); gotoxy(expx+3,expy-4); write('Ü');
textcolor(magenta);
gotoxy(expx-1,expy-1); write('þ');
gotoxy(expx+2,expy-1); write('þ');
end;
 
if aliennr=15then begin
textcolor(lightblue);
gotoxy(expx-10,expy-3); write('°°°°              °°°±');
gotoxy(expx-7,expy-2); write('°°±          °±±');
gotoxy(expx-5,expy-1); write('°±±      ±±±');
gotoxy(expx-3,expy); write('°±±±±±±±');
gotoxy(expx-2,expy+1); write('°°°°°±');
gotoxy(expx-3,expy+2); write('° Û  Û ±');
gotoxy(expx-4,expy+3); write('°        ±');
textcolor(red); gotoxy(expx-1,expy-1); write('Ü  Ü');
end;
 
if aliennr=16then begin
textcolor(6);
gotoxy(expx+3-6,expy-5); write('Ü    Ü  Ü');
gotoxy(expx-7,expy-4); write('Ü  Û  Û Û  Û');
gotoxy(expx-6,expy-3); write('Û          Ü');
gotoxy(expx+6,expy-2); write('Û');
textcolor(lightmagenta);
gotoxy(expx-4,expy-3); write('±±²±²±²');
gotoxy(expx-5,expy-2); write('±±²   ±±±²');
gotoxy(expx-6,expy-1); write('±²²²±±²±²±±²²');
gotoxy(expx-7,expy); write('±±ÜßÜßÜßÜßÜßܲ±');
gotoxy(expx-7,expy+1); write('±²²²±²±±²²²²²±±');
gotoxy(expx-6,expy+2); write('±±±±²±±±±±±±');
gotoxy(expx-5,expy+3); write('±²²±±²²²±²±');
gotoxy(expx-5,expy+4); write('ßß ß ß ß  ß');
textcolor(lightgreen);
gotoxy(expx-2,expy-2); write('Û Û');
end;
 
if aliennr=18then begin
 
textcolor(lightblue);
gotoxy(expx-3,expy+4); write('°°ß°°°ß°');
gotoxy(expx-4,expy+3); write('°°°°°°°°°°');
gotoxy(expx-5,expy+2); write('°°°°°°°°°°°');
gotoxy(expx-5,expy+1); write('ܰ°     °°');
gotoxy(expx-4,expy); write('°°°°°°°°°°');
gotoxy(expx-4,expy-1); write('ܰ° °° °°°');
gotoxy(expx-2,expy-2); write('°°°°°°°Ü');
gotoxy(expx-3,expy-3); write('ܰ°°°°');
gotoxy(expx-1,expy-4); write('ÜÜ');
textcolor(yellow); gotoxy(expx-1,expy-1); write('þ');
gotoxy(expx+2,expy-1); write('þ');
textcolor(red);
gotoxy(expx-2,expy+1); write('³³³³³');
end;
 
if aliennr=19then begin
textcolor(lightmagenta);
gotoxy(expx-3,expy-4); write('Ü     Ü');
gotoxy(expx-3,expy-3); write('³     ³');
gotoxy(expx-22,expy-2); write('ÜÜÜܰ°°°Ü          ³ÜÜÜÜܳ          Ü°°°°ÜÜÜÜ');
gotoxy(expx-24,expy-1); write('ܱ±±°°°°°°°°°ÜÜ     ±  ±±±  ±     Üܰ°°°±±±±±±±±Ü');
gotoxy(expx-24,expy); write('ß±±±±±±°°°°°°°°°°°°Ü± ±±±±± ±Ü°°°°°°±±±±±±±±±±±±ß');
gotoxy(expx-22,expy+1); write('ßßß±±±±°°±±±±±±±±ß±±±±±±±±±ß°°°°°±±±±±°°±°ßßß');
gotoxy(expx-12,expy+2); write('ßßßßßß   ß²²²²²ß   ßßßßßßß');
gotoxy(expx-1,expy+3); write('ß²ß');
gotoxy(expx,expy+4); write('²');
gotoxy(expx,expy+5); write('²');
gotoxy(expx-1,expy+6); write('ßßß');
 
end;
 
if aliennr=20 then begin
textcolor(lightmagenta);
gotoxy(expx-2,expy-7); write('ÜÜÜÜÜ');
gotoxy(expx-8,expy-6); write('ÜÜܰ°°°°°°°±±ÜÜÜ');
gotoxy(expx-15,expy-5); write('±±±±±±±°°   °°°°°°    ±Ü');
gotoxy(expx-16,expy-4); write('±±   ±±°      °°±°°      °±±±±±');
gotoxy(expx-18,expy-3); write('±±   ±±±±°    °±°°°°°°°    ±±±±±±');
gotoxy(expx-19,expy-2);  write('±±   ±± ±± ±±°°°°°°±°°±°°°±±±±±  ±±±±');
gotoxy(expx-19,expy-1);  write('±   ±±  ±  ±±°°°°°°±±°±±±°±±  ±±  ±±±±');
gotoxy(expx-20,expy); write('ß ß  ±  ±± ±± ²²  ²² ²²  ²² ±±  ±± ±±  ±');
gotoxy(expx-16,expy+1);write('±± ±±  ±±  ²²  ² ²  ²²  ±±  ±±  ±±ß ß');
gotoxy(expx-17,expy+2); write('±±  ±  ±±    ²²     ²²   ±± ±± ±±');
gotoxy(expx-18,expy+3); write('ß ß ±± ±±±     ²     ²    ±± ±± ±±');
gotoxy(expx-15,expy+4); write('±    ±±               ±±  ±  ±');
gotoxy(expx-16,expy+5); write('ß ß  ß ß              ß ß ß ßß ß');
end;
 
END;
 
 
PROCEDURE Draw_Cross;
BEGIN
textcolor(white);
gotoxy(Posx-1,posy); write('ÄÅÄ');
END;
 
PROCEDURE Move_Cross;
BEGIN
gotoxy(posx-1,posy);
write('   ');
if (ch='1') and ((posx<>1) and (posy<>22)) then begin
   posx:=posx-1;
   posy:=posy+1;
   end;
 
if (ch='2') and (posy<>22) then begin
   posx:=posx;
   posy:=posy+1;
   end;
if (ch='3') and (posx<>79) and (posy<>22) then begin
   posx:=posx+1;
   posy:=posy+1;
   end;
if (ch='4') and (posx<>1) then begin
   posx:=posx-1;
   posy:=posy;
   end;
if (ch='6') and (posx<>79) then begin
   posx:=posx+1;
   posy:=posy;
   end;
if (ch='7') and (posx<>1) and (posy<>1) then begin
   posx:=posx-1;
   posy:=posy-1;
   end;
if (ch='8') and (posy<>1) then begin
   posx:=posx;
   posy:=posy-1;
   end;
if (ch='9') and (posx<>79) and (posy<>1) then begin
   posx:=posx+1;
   posy:=posy-1;
   end;
Draw_Cross;
END;
 
PROCEDURE Daneben;
BEGIN
gotoxy(posx,posy);
textcolor(7);
write('ú');
sound(65);
delay(50);
nosound;
draw_alien;
draw_cross;
END;
 
PROCEDURE Gun;
BEGIN
Bullets:=Bullets-1;
Status;
if ((posx<>sp1x) and (posy<>sp1y)) or
   ((posx<>sp2x) and (posy<>sp2y)) or
   ((posx<>sp3x) and (posy<>sp3y)) or
   ((posx<>sp4x) and (posy<>sp4y)) or
   ((posx<>sp5x) and (posy<>sp5y)) then Daneben;
 
   if ((posx=sp1x) and (posy=sp1y)) or
   ((posx=sp2x) and (posy=sp2y)) or
   ((posx=sp3x) and (posy=sp3y)) or
   ((posx=sp4x) and (posy=sp4y)) or
   ((posx=sp5x) and (posy=sp5y)) then begin
   w20:=random(20)+1;
   if w20>ACC then Daneben;
   if w20<=ACC then BEGIN
      Schaden:=random(POW)+1;
      gotoxy(posx,posy); textcolor(7);
      write('ù'); sound(65); delay(50); nosound;
      gotoxy(posx,posy); textcolor(lightred);
      write('þ');
      sound(260); delay(50); nosound;
      draw_alien;
      LP:=LP-Schaden;
      draw_cross;
      end;
END;
END;
 
 
PROCEDURE Faust;
BEGIN
  if ((posx=sp1x) and (posy=sp1y)) or
   ((posx=sp2x) and (posy=sp2y)) or
   ((posx=sp3x) and (posy=sp3y)) or
   ((posx=sp4x) and (posy=sp4y)) or
   ((posx=sp5x) and (posy=sp5y)) then begin
w20:=random(20)+1;
if w20<=ACC then begin
   textcolor(red); gotoxy(posx,posy); write('²');
  sound(70); delay(50); nosound;
 Schaden:=random(6);
  armour:=armour-random(2);
  LP:=LP-Schaden;
  Status;
  Draw_Alien;
  Draw_Cross;
  END;
  END;
  END;
   PROCEDURE Ton;
   BEGIN
   for m:=30 to 100 do begin
  sound(m); delay(20);
  end;
  nosound;
  END;
 
  PROCEDURE Rakete;
  BEGIN
  Missles:=Missles-1;
  Status;
  Ton;
  Explode;
  Draw_Alien;
  Draw_Cross;
  Schaden:=random(300)+1;
  LP:=LP-Schaden;
  END;
 
PROCEDURE Bomb;
BEGIN
Bombs:=Bombs-1;
Status;
Draw_Alien;
Draw_Cross;
for a:=100 downto 30 do begin
sound(a);
delay(20);
end;
nosound;
textcolor(14);
for a:=1 to 22 do begin
  gotoxy(1,a);
  for m:=1 to 80 do write('Û');
  end;
clrscr;
draw_alien;
draw_cross;
Schaden:=random(50)+1;
Lp:=LP-Schaden;
END;
 
 
 
PROCEDURE Alien_Attacks;
BEGIN
   w20:=random(20)+1; if w20<AF then BEGIN
      Hits:=random(TP)+1;
      sound(30); delay(65); sound(60); delay(32); nosound;
      Armour:=Armour-Hits;
      Status;
      end;
draw_alien;
draw_cross;
END;
 
PROCEDURE MonsterMove;
BEGIN
FeldX:=random(maxf)+1;
Feldy:=random(maxf)+1;
udx:=random(2)+1;     {1 = +; 2 = -}
udy:=random(2)+1;
if udx=2 then udx:=-1;
if udy=2 then udy:=-1;
 
ExpX:=ExpX+(Feldx*udx);
ExpY:=Expy+(Feldy*udy);
 
if expx>55 then expx:=60;
if expx<25 then expx:=20;
if expy>17 then expy:=17;
if expy<6  then expy:=6;
 
 
if (sp1x<>10000) and (sp1y<>10000) then begin
sp1x:=expx+vp1x;
sp1y:=expy+vp1y;
end;
 
if (sp2x<>10000) and (sp2y<>10000) then begin
sp2x:=expx+vp2x;
sp2y:=expy+vp2y;
end;
if (sp3x<>10000) and (sp3y<>10000) then begin
sp3x:=expx+vp3x;
sp3y:=expy+vp3y;
end;
if (sp4x<>10000) and (sp4y<>10000) then begin
sp4x:=expx+vp4x;
sp4y:=expy+vp4y;
end;
if (sp5x<>10000) and (sp5y<>10000) then begin
sp5x:=expx+vp5x;
sp5y:=expy+vp5y;
end;
clrscr;
Draw_alien;
Draw_Cross;
END;
 
 
PROCEDURE Aliens_turn;
BEGIN
if (sp1x<>10000) and (sp1y<>10000) then begin
sp1x:=expx+vp1x;
sp1y:=expy+vp1y;
end;
 
if (sp2x<>10000) and (sp2y<>10000) then begin
sp2x:=expx+vp2x;
sp2y:=expy+vp2y;
end;
if (sp3x<>10000) and (sp3y<>10000) then begin
sp3x:=expx+vp3x;
sp3y:=expy+vp3y;
end;
if (sp4x<>10000) and (sp4y<>10000) then begin
sp4x:=expx+vp4x;
sp4y:=expy+vp4y;
end;
if (sp5x<>10000) and (sp5y<>10000) then begin
sp5x:=expx+vp5x;
sp5y:=expy+vp5y;
end;
 
m:=random(3)+1;
if random<>1 then begin
 
w20:=random(20)+1;
if w20<=Moveit then MonsterMove else Alien_attacks;
end;
END;
 
 
PROCEDURE Explode;
BEGIN
for m:=1 to 7 do BEGIN
sound(20+m*10);
 
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(yellow);
 
gotoxy(expX,expY); write('Û');
delay(5);
gotoxy(expX+m,expY); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(yellow);
 
gotoxy(expX+m,expY+m); write('Û');
delay(5);
gotoxy(expX,expY+m); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(yellow);
 
gotoxy(expX-m,expY); write('Û');
delay(5);
gotoxy(expX,expY-m); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(yellow);
 
gotoxy(expX+m,expY-m); write('Û');
delay(5);
gotoxy(expX-m,expY+m); write('Û');
 
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(yellow);
 
gotoxy(expX-m,expY-m); write('Û');
delay(5);
 
end;
nosound;
sound(30); delay(100); nosounD;
for m:=1 to 7 do begin
textcolor(darkgray);
gotoxy(expX,expY); write('Û');
delay(5);
gotoxy(expX+m,expY); write('Û');
 
gotoxy(expX+m,expY+m); write('Û');
delay(5);
gotoxy(expX,expY+m); write('Û');
 
gotoxy(expX-m,expY); write('Û');
delay(5);
gotoxy(expX,expY-m); write('Û');
 
gotoxy(expX+m,expY-m); write('Û');
delay(5);
gotoxy(expX-m,expY+m); write('Û');
 
gotoxy(expX-m,expY-m); write('Û');
delay(5);
end;
END;
 
 
PROCEDURE Explode1;
BEGIN
for m:=1 to 7 do BEGIN
sound(20+m*10);
 
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(magenta);
 
gotoxy(expX,expY); write('Û');
delay(5);
gotoxy(expX+m,expY); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(magenta);
 
gotoxy(expX+m,expY+m); write('Û');
delay(5);
gotoxy(expX,expY+m); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(magenta);
 
gotoxy(expX-m,expY); write('Û');
delay(5);
gotoxy(expX,expY-m); write('Û');
a:=random(3)+1;
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(magenta);
 
gotoxy(expX+m,expY-m); write('Û');
delay(5);
gotoxy(expX-m,expY+m); write('Û');
 
if a=1 then textcolor(red);
if a=2 then textcolor(lightred);
if a=3 then textcolor(magenta);
 
gotoxy(expX-m,expY-m); write('Û');
delay(5);
 
end;
nosound;
sound(30); delay(100); nosounD;
for m:=1 to 7 do begin
textcolor(darkgray);
gotoxy(expX,expY); write('Û');
delay(5);
gotoxy(expX+m,expY); write('Û');
 
gotoxy(expX+m,expY+m); write('Û');
delay(5);
gotoxy(expX,expY+m); write('Û');
 
gotoxy(expX-m,expY); write('Û');
delay(5);
gotoxy(expX,expY-m); write('Û');
 
gotoxy(expX+m,expY-m); write('Û');
delay(5);
gotoxy(expX-m,expY+m); write('Û');
 
gotoxy(expX-m,expY-m); write('Û');
delay(5);
end;
END;
 
PROCEDURE Outro; FORWARD;
PROCEDURE Killed;
BEGIN
Score:=Score+sc;
if Score>=Scorealt+(Level*100) then BEGIN
Armour:=Armour+random(5001);
Bullets:=Bullets+random(1001);
Bombs:=Bombs+random(6);
Missles:=Missles+random(3);
POW:=POW+random(4);
ACC:=ACC+random(3); if ACC>20 then ACC:=20;
Scorealt:=Score;
Level:=Level+1;
END;
Status;
Explode1;
delay(100);
clrscr;
delay(500);
If aliennr=20 then Outro;
draw_cross;
expx:=0;
expy:=0;
lp:=0;
moveit:=0;
maxf:=0;
feldx:=0;
feldy:=0;
udx:=0;
udy:=0;
dead:='';
aliennr:=0;
enemy:='';
END;
 
PROCEDURE GAMEOVER;
BEGIN
dead:='';
window(1,1,80,25);
sound(1000);
delay(50);
sound(40);
delay(500);
Blood;
textcolor(lightred+128);
gotoxy(33,10);
write('* GAME OVER *');
delay(5000);
textcolor(lightred);
gotoxy(33,12);
write('* Try again *');
delay(5000);
halt;
END;
 
PROCEDURE Fire;
BEGIN
FOR posx:=1 to 30 do BEGIN
 
  gotoxy(37,13);
   for m:=1 to 7 do begin
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('Ü');
   end;
 
   gotoxy(44,13);
   for m:=1 to 3 do begin
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('Û');
   end;
 
   gotoxy(47,13);
   a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('Ü');
 
   gotoxy(34,14);
   for m:=1 to 14 do begin
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('Û');
   end;
 
    gotoxy(37,15);
   for m:=1 to 7 do begin
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('ß');
   end;
 
   gotoxy(44,15);
   for m:=1 to 3 do begin
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('Û');
   end;
 
   gotoxy(47,15);
   a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
   write('ß');
 
FOR posy:=1 to 10 do begin
 
   x:=random(8)+1;
   if x=1 then x:=45;
   if x=2 then x:=43;
if x=3 then x:=40;
if x=4 then x:=37;
if x=5 then x:=35;
if x=6 then x:=32;
if x=7 then x:=30;
if x=8 then x:=28;
 
   y:=random(5)+1;
   if y=1 then y:=14;
   if y=2 then y:=15;
if y=3 then y:=13;
if y=4 then y:=16;
if y=5 then y:=12;
 
    a:=random(3)+1;
    if a=1 then textcolor(red);
    if a=2 then textcolor(lightred);
    if a=3 then textcolor(yellow);
 
     vp1x:=random(3)+1;
    if vp1x=1 then begin
    gotoxy(x,y); write('Ü');
    sound(60);
    delay(8);
    nosound;
    gotoxy(x,y); write(' ');
     end;
     if vp1x=2 then begin
    gotoxy(x,y); write('ß');
    sound(65);
    delay(8);
    nosound;
    gotoxy(x,y); write(' ');
    end;
     if vp1x=3 then begin
    gotoxy(x,y); write('Û');
    sound(70);
    delay(8);
    nosound;
    gotoxy(x,y); write(' ');
    end;
 
END;
 delay(10);
      END;
gotoxy(01,12); write('                                               ');
gotoxy(01,13); write('                                               ');
gotoxy(01,14); write('                                               ');
gotoxy(01,15); write('                                               ');
gotoxy(01,16); write('                                               ');
 
 
   END;
 
PROCEDURE OUTRO;
BEGIN
delay(1000);
textbackground(0);
window(1,1,80,25);
clrscr;
delay(1000);
textcolor(lightred+128);
gotoxy(30,1); write('--CONGRATIULATIONS--');
textcolor(red);
gotoxy(13,3); write('You are the one who stroke the demon-invasion once more!');
delay(2500);
 
textcolor(7);
gotoxy(60,7); write('ÜÜÛÛÜÜ');
gotoxy(59,8); write('Û      Û');
gotoxy(59,9); write('ÛÛÛÜÜÛÛÛ');
gotoxy(60,10); write('ß    ß');
 
gotoxy(48,13); write('ÜÜ     Ü_Ü');
gotoxy(48,14); write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛ');
gotoxy(48,15); write('ßß      ÛÛ');
gotoxy(56,16); write('ÛÛ');
gotoxy(57,17); write('ÛÛ');
textcolor(lightblue); gotoxy(61,8); write('þ  þ');
textcolor(brown);
gotoxy(61,13); write('ÜÜÜ');
gotoxy(62,15); write('ÛÛ');
 
gotoxy(57,21); write('±±±      ±±±');
gotoxy(57,22); write('±±±      ±±±');
gotoxy(57,23); write('±±±      ±±±');
gotoxy(54,24); write('±±±±±±      ±±±±±±');
textcolor(white);
gotoxy(55,16); write('ß');
gotoxy(62,14); write('Û');
textcolor(magenta);
gotoxy(1,25); for m:=1 to 79 do write('Û');
gotoxy(61,10); write('ÛÛÛÛ');
gotoxy(55,11); write('ÜÜÜÛÛÛÛÛÛÛÛÛÛÜÜÜ');
gotoxy(55,12); write('ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ');
gotoxy(54,13); write('Û');
gotoxy(58,13); write('ÛÛÛ');
gotoxy(64,13); write('ÛÛÛÛÛÛ');
gotoxy(63,14); write('ÛÛÛÛÛÛ');
gotoxy(54,15); write('ÛÛ');
gotoxy(58,15); write('ÛÛÛÛ');
gotoxy(64,15); write('ÛÛÛÛ');
textcolor(lightblue);
gotoxy(58,16); write('°°°°°°°°°°');
gotoxy(59,17); write('°°°°°°°°°');
gotoxy(58,18); write('°°°    °°°');
gotoxy(57,19); write('°°°      °°°');
gotoxy(57,20); write('°°°      °°°');
delay(5000);
Fire;
delay(100);
textcolor(white);
gotoxy(29,14);
write('IDea by B. M”ller');
delay(5000);
gotoxy(29,14);
write('                 ');
 
Fire;
delay(100);
textcolor(white);
gotoxy(26,14);
write('Graph-X by B. M”ller');
delay(5000);
gotoxy(26,14);
write('                    ');
 
Fire;
delay(100);
textcolor(white);
gotoxy(29,14);
write('Sounds by DJ B™MM');
delay(5000);
gotoxy(29,14);
write('                 ');
 
Fire;
delay(100);
textcolor(white);
gotoxy(24,14);
write('Programed by B. M”ller');
delay(5000);
gotoxy(24,14);
write('                      ');
Fire;
delay(2000);
 
textcolor(white);
gotoxy(30,10);
write('Special Thanks to');
delay(1000);
gotoxy(30,12); write('id SOFTWARE');
delay(5000);
 
gotoxy(30,10);
write('                 ');
gotoxy(30,12); write('           ');
delay(1000);
 
Fire;
delay(100);
textcolor(white);
gotoxy(18,14);
write('Presented by B™MMSOFT (1995)');
delay(5000);
gotoxy(18,14);
write('                            ');
Fire;
delay(2000);
 
textcolor(13);
gotoxy(1,7);
write('ÜÜÜÜÜ Ü   Ü ÜÜÜÜ  ÜÜÜÜ Ü   Ü ÜÜÜ');
gotoxy(1,8);
write('  Û   Û   Û Û     Û    Û   Û Û  Û');
gotoxy(1,9);
 
write('  Û   Û   Û Û     Û    ÛÛ  Û Û  Û');
gotoxy(1,10);
 
write('  Û   ÛÛÛÛÛ ÛÛÛ   ÛÛÛ  Û Û Û Û  Û');
gotoxy(1,11);
 
write('  Û   Û   Û Û     Û    Û Û Û Û  Û');
gotoxy(1,12);
 
write('  Û   Û   Û Û     Û    Û  ÛÛ Û  Û');
gotoxy(1,13);
 
write('  ß   ß   ß ßßßß  ßßßß ß   ß ßßß');
 
delay(2500);
 
gotoxy(3,16);
textcolor(14);
write('Maybe the aliens will strike back again...');
delay(10000);
clrscr;
textbackground(red);
textcolor(0);
gotoxy(9,11);
write('You must wait for "XXXXX " until id SOFTWARE publishes QUAKE!');
delay(1000);
textcolor(0);
gotoxy(28,15);
write('Until then, play XXXX2!');
delay(5000);
halt;
END;
 
 
 
PROCEDURE Alien_Dead;
BEGIN
if lp<=0 then dead:='alien';
END;
 
PROCEDURE Hero_Dead;
BEGIN
if armour<0 then dead:='hero';
END;
 
 
PROCEDURE Start_Game;
BEGIN
repeat
Enemychoose;
 repeat
   repeat
     Draw_Alien;
     Draw_Cross;
     Aliens_turn;
     ch:=readkey;
   until ch in ['1','2','3','4','6','7','8','9','x','y','c','v','!','?'];
   if (ch='x') and (bombs<>0) then bomb;
   if (ch='y') and (bullets<>0) then gun;
   if (ch='c') and (missles<>0) then Rakete;
   if ch='v' then Faust;
   if ch='!' then begin
 
   armour:=armour+100;
   bullets:=bullets+100;
   bombs:=bombs+10;
   missles:=missles+5;
   acc:=acc+1; if acc>20 then acc:=20;
   pow:=pow+1;
   Status;
   end;
 
   if ch='?' then begin
   score:=scorealt+(level*100);
   scorealt:=score;
   level:=level+1;
   Status;
   end;
 
   if (ch='1') OR (ch='2') OR (ch='3') OR (ch='4') OR (ch='6')
               OR (ch='7') OR (ch='8') OR (ch='9') then Move_Cross;
  Alien_Dead;
  Hero_Dead;
  until (Dead='hero') or (Dead='alien');
  If Dead='hero' then GAMEOVER;
  If Dead='alien' then Killed;
until 1=0;
END;
 
 
 
PROCEDURE Spiel;
BEGIN
randomize;
textbackground(0);
window(1,1,80,25);
clrscr;
delay(1000);
Intro;
Init_Hero;
Status;
Init_Crosswire;
Start_Game;
END;
 
BEGIN
Spiel;
END.

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎

    
        
  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎