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 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 w2055 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.