Skip to content

Instantly share code, notes, and snippets.

@bkimminich
Created February 17, 2014 06:54
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bkimminich/9045923 to your computer and use it in GitHub Desktop.
Save bkimminich/9045923 to your computer and use it in GitHub Desktop.
XXXX 2 - The ultimative DOOM 2-Clone
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment