by Akram Malik from ZX Computing Dec ’83/Jan ’84.
Can you save the Earth from impending doom in this program?
In this program, it is your unenviable task to once again defend the Earth from the alien hordes – this time in the shape of angels from Hell and then by a number of demons. The first wave of aliens are called Hell’s Angels and are capable of great destruction should they be allowed to pass through your defences. Indeed, should you let more than five of the angels past, you will find that your mission has failed and Earth will be destroyed. You must shoot 20 of these angelic upstarts before you get through to the next stage of the game where you will meet the fully fledged demons.
Demonic danger
The demons are, of course, much more powerful than the Hell’s angels and your task is once again to stop them piercing your defenses. However, this time, if you only let two through then Earth will be considered destroyed. Still, if you’ve managed to get through to this stage of the game you will no doubt have your alien-shooting eye targeted in on the aliens. If you manage to shoot 20 of the demons out of the sky, you can congratulate yourself on having saved the Earth. Care must be taken to make sure your aim is true before you shoot at the aliens as you have 100 laser points to destroy the invasion force. Obviously, if the Earth is destroyed the game ends with a message informing you of the sad fate of human-kind.
The controls used in the game are keys, ‘1’ to ‘5’ to move left, keys ‘6’ to ‘0’ to move right and any key on the bottom row to fire your laser.
This version uses the joystick and fire button.
Appears on
Source Code
1 GO SUB 8000: GO SUB 4000 2 POKE 65000,0: LET hi=0 5 LET sc=0 6 LET an=20: GO SUB 1000 10 BORDER 1: PAPER 5: INK 2: CLS 20 FOR g=1 TO 21: PRINT AT g,0;"\a";AT g,31;"\a": NEXT g 30 FOR h=0 TO 7: PLOT 0,h: DRAW INK 3;255,0: NEXT h 40 PLOT 0,167: DRAW 255,0 50 PRINT AT 0,0; INK 3;"SC ";sc;TAB 10; INK 2;"HELLS ANGELS";TAB 24; INK 0;"HI ";(PEEK 65000)*100 60 LET lp=100: LET at=5: LET c=16: LET a$="\b\c" 70 LET i=2: LET q=INT (RND*17)+5 75 IF an=0 THEN GO TO 1310 80 PRINT INK 0;AT i,q;a$ 90 PRINT AT 20,c;" " 95 IF i=20 THEN GO TO 270 100 LET c=c+(STICK(1,1)=8 AND c<30)-(STICK(1,1)=4 AND c>1) 110 PRINT AT 20,c; INK 2;"\d" 120 PRINT OVER 1; INK 0;AT i,q;a$ 125 LET i=i+1 130 LET q=q+INT (RND*3)-1+(3 AND q<-30)-(3 AND q>30) 140 PRINT OVER 1; INK 0;AT i,q;a$: BEEP .01,12 155 IF i=20 AND (q=c OR q+1=c) THEN PRINT AT i,c-1;"\e\e\e": PRINT INK 2;AT 10,3;"You "; INK 3;"have "; INK 0;"been "; INK 2; FLASH 1;"DESTROYED!": BEEP 2,5: BEEP 1,10: PAUSE 150: GO TO 300 160 IF STICK(2,1)=1 THEN GO SUB 200: LET lp=lp-1 165 IF lp=0 THEN GO TO 6000 170 GO TO 80 200 PLOT INVERSE 1;c*8+4,17: DRAW INK INT (RND*3);0,148: BEEP .06,16: PLOT INVERSE 1;c*8+4,17: DRAW OVER 1;0,148 220 IF (i>2 AND i<20) AND (q=c OR q+1=c) THEN LET sc=sc+500: PRINT AT 0,3; INK 3;sc: BEEP .08,5: PRINT INK INT (RND*3);AT i,c-1;"\e\e\e": BEEP .02,15: PRINT AT i,c-1;" ": LET an=an-1: GO TO 70 250 RETURN 270 PRINT AT 20,q;" ": LET sc=sc-200: IF sc<0 THEN PRINT INK 3;AT 0,2;sc 275 IF sc>0 THEN PRINT INK 3;AT 0,0;"SC ";sc: PRINT AT 0,2;" " 277 IF sc<1000 THEN PRINT AT 0,6;" " 280 LET at=at-1: IF at>0 THEN GO TO 70 285 PRINT INK 2; FLASH 1;AT 10,2;"FOOL!"; INK 1; FLASH 0;"You let "; INK 3;"5 thru!" 290 BEEP .5,10: BEEP 1,-30: BEEP 2,20: BEEP 3,0 305 LET hi=(PEEK 65000)*100 310 IF sc>hi THEN LET hi=sc 315 POKE 65000,hi/100 320 BORDER 3: PAPER 7: INK 3: CLS 330 FOR h=0 TO 40 STEP 8: FOR t=40 TO 0 STEP -10: BEEP .07,h: BEEP .04,t: NEXT t: NEXT h 340 PRINT AT 1,10; FLASH 1;"GAME OVER";AT 3,1; FLASH 0;"Earth will now be destroyed.";AT 10,5;"Your score was ";sc;AT 12,5;"High score is ";hi 350 PAUSE 300: CLEAR : GO TO 5 1000 BORDER 1: PAPER 1: INK 7: CLS 1010 PRINT AT 5,10;"HELLS ANGELS"; OVER 1;AT 5,10;" ";AT 14,2;"Press any key to start" 1100 PAUSE 500: RETURN 1310 FOR y=0 TO 20 STEP 2: BEEP .08,y: BEEP .2,5: NEXT y 1315 BORDER 2: PAPER 1: INK 7: CLS 1317 PRINT AT 11,12;"STAGE 2": PAUSE 50: CLS 1319 FOR r=1 TO 21: PRINT AT r,0;"\f";AT r,31;"\f": NEXT r 1320 FOR w=0 TO 7: PLOT 0,w: DRAW INK 4;255,0: NEXT w 1324 PLOT 0,167: DRAW 255,0 1329 PRINT AT 0,0; INK 6;"SC ";sc;TAB 10; INK 5;"HELLS ANGELS";TAB 24; INK 4;"HI ";(PEEK 65000)*100 1330 LET at=2: LET c=16: LET al=20 1335 LET i=2: LET q=INT (RND*17)+5 1340 IF al=0 THEN GO TO 2000 1380 PRINT INK 6;AT i,q;"\g" 1390 PRINT AT 20,c;" " 1395 IF i=20 THEN GO TO 1570 1400 LET c=c+(STICK(1,1)=8 AND c<30)-(STICK(1,1)=4 AND c>1) 1410 PRINT AT 20,c; INK 5; BRIGHT 1;"\h" 1420 PRINT OVER 1; INK 6;AT i,q;"\g" 1425 LET i=i+1 1430 LET q=q+INT (RND*3)-1+(3 AND q<-30)-(3 AND q>30) 1440 PRINT OVER 1; INK 6;AT i,q;"\g": BEEP .01,15 1450 IF i=20 AND q=c THEN PRINT AT i,c; INK (RND*3)+4;"\e": PRINT INK 2;AT 10,2;"Oh dear!"; INK 3;"what a "; INK 2; FLASH 1;"MESS!": BEEP 3,5: BEEP 3,15: PAUSE 50: GO TO 1600 1460 IF STICK(2,1)=1 THEN GO SUB 1500: LET lp=lp-1 1465 IF lp=0 THEN GO TO 6000 1470 GO TO 1380 1500 PLOT INVERSE 1;c*8+4,17: DRAW OVER 1;0,148: BEEP .06,12: PLOT INVERSE 1;c*8+4,17: DRAW OVER 1;0,148 1520 IF (i>2 AND i<20) AND q=c THEN LET sc=sc+500: PRINT AT 0,3; INK 6;sc: BEEP .04,10: PRINT INK 6;AT i,c;"\e": BEEP .08,2: PRINT AT i,c;" ": LET al=al-1: GO TO 1335 1550 RETURN 1570 PRINT AT 20,q;" ": LET sc=sc-200: IF sc<0 THEN PRINT AT 0,2; INK 6;sc 1575 IF sc>0 THEN PRINT AT 0,2;" ": LET at=at-1: IF at>0 THEN GO TO 1335 1585 PRINT INK 4; FLASH 1;AT 10,3;"IDIOT!"; INK 5; FLASH 0;"You let "; INK 6;"2 thru!" 1595 BEEP .8,10: BEEP 1,4: BEEP 2,-10: BEEP 1,18: BEEP 1,-20 1600 GO TO 300 2000 BEEP .08,19: BEEP .2,10: BEEP .15,15: BEEP .4,25: FOR w=0 TO 20 STEP 2: BEEP .1,w: BEEP .05,4: NEXT w: BEEP .4,25: BEEP .15,15: BEEP .2,10: BEEP .8,15: BEEP .1,8: BEEP 2,3 2010 BORDER 6: PAPER 6: INK 0: CLS 2020 PRINT AT 10,4; FLASH 1;"You have saved Earth!";AT 14,6;"CONGRATULATIONS!" 2030 PRINT AT 18,4; FLASH 0;"Press a key to play again" 2040 PAUSE 500: IF INKEY$="" THEN STOP 2050 GO TO 2 4000 FOR n=0 TO 7 4100 READ A: POKE USR "A"+n,A: NEXT n 4110 DATA 255,255,192,192,255,255,3,3 4200 FOR n=0 TO 7: READ B: POKE USR "B"+n,B: NEXT n 4210 DATA 68,99,50,59,31,31,13,4 4300 FOR n=0 TO 7: READ C: POKE USR "C"+n,C: NEXT n 4310 DATA 145,227,166,238,252,120,88,144 4400 FOR n=0 TO 7: READ D: POKE USR "D"+n,D: NEXT n 4410 DATA 36,60,24,60,36,102,255,153 4500 FOR n=0 TO 7: READ E: POKE USR "E"+n,E: NEXT n 4510 DATA 153,0,36,0,219,0,92,129 4600 FOR n=0 TO 7: READ F: POKE USR "F"+n,F: NEXT n 4610 DATA 219,102,219,102,219,102,219,102 4700 FOR n=0 TO 7: READ G: POKE USR "G"+n,G: NEXT n 4710 DATA 153,126,90,126,60,36,24,24 4800 FOR n=0 TO 7: READ H: POKE USR "H"+n,H: NEXT n 4810 DATA 102,36,36,60,102,231,189,231 5000 RETURN 6000 PRINT INK 2;AT 10,0;"You ran out of laser power!": BEEP 5,-30: GO TO 300 8000 PRINT "This is a space invaders-type game. Use your joystick to control the laser base and the ""fire"" button to shoot." 8001 PRINT : PRINT : PRINT "Press any key to begin....." 8002 IF INKEY$="" THEN GO TO 8002 8003 CLS 8004 RETURN 9000 CLEAR 9005 SAVE "angels" LINE 1