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.
Content
Image Gallery
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