Created
February 17, 2014 06:54
-
-
Save bkimminich/9045923 to your computer and use it in GitHub Desktop.
XXXX 2 - The ultimative DOOM 2-Clone
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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