ZX81 - The program code
2 GOTO 9000
3 PRINT AT 10,0;"MAXIMUM >";AT 10,21;"<
MAXIMUM";AT 11,1;"FIRING";AT 11,23;"FIRING";AT
12,2;"RANGE";AT 12,23;"RANGE"
4 FOR A=0 TO 21
5 PRINT AT
A,9;"(
)"
6 NEXT A
7 LET S=0
8 LET BU=50
9 LET B1=10
10 DIM A(10)
20 FOR B=1 TO 10
30 LET A(B)=21
40 PRINT AT A(B),B+9;CHR$ ((RND*9)+1)
50 NEXT B
60 FOR B=1 TO 10
70 LET A(B)=A(B)-INT (RND*2)
80 PRINT AT A(B),B+9;CHR$ ((RND*9)+1)
100 PRINT AT 0,B1;" "
110 LET B1=B1+(INKEY$="8" AND B1<19)-(INKEY$="5"
AND B1>10)
120 PRINT AT 0,B1;"="
130 IF BU>0 AND CODE INKEY$>37 AND CODE INKEY$<64 THEN GOTO 500
135 LET S=S+1
137 IF A(B)=0 THEN GOTO 600
140 NEXT B
150 GOTO 60
500 FOR C=1 TO INT (RND*11)
510 PRINT AT C,B1;".";AT C,B1;" "
520 NEXT C
521 IF C>A(B1-9) THEN LET A(B1-9)=C
523 LET BU=BU-1
530 IF BU>0 THEN GOTO 140
550 FOR Z=0 TO 21 STEP 2
560 PRINT AT Z,0;"NO MORE ";AT Z,21;" NO
MORE"AT Z+1,0;"BULLETS ";AT Z+1,21;"
BULLETS"
570 NEXT Z
580 GOTO 140
600 LET A$=STR$ S
601 FOR A=1 TO LEN A$
602 LET B=CODE A$(A)
603 LET B=B+128
604 LET A$(A)=CHR$ B
606 NEXT A
608 CLS
610 FOR A=0 TO 21 STEP 2
620 PRINT AT A,A;"SCORE";A$;TAB A+1;"PLAY AGAIN?"
630 NEXT A
640 IF INKEY$="N" THEN GOTO 700
650 IF INKEY$="Y" THEN GOTO 9000
660 GOTO 640
700 CLS
710 FOR A=0 TO 19 STEP 2
720 PRINT AT A,A;"ANYONE
ELSE";TAB A+1;"WANT
TO PLAY"
730 NEXT A
740 IF INKEY$="Y" THEN GOTO 9000
750 IF INKEY$="N" THEN STOP
760 GOTO 740
9000 CLS
9005 PRINT TAB 12;"RUBBISH";TAB 0;"THE RUBBISH IS GETTING
HIGHER AND THE ONLY WAY TO STOP IT IS TO SHOOT AT
IT.";TAB 0;"YOU ONLY HAVE 50 BULLETS SO USE THEM WISELY, THE
BULLETS HAVE A CERTAIN FIRING RANGE WHICH IS SHOWN
WHEN RUN."
9010 PRINT "TO MOVE LEFT YOU USE KEY <5>. TO MOVE
RIGHT YOU USE KEY <8>. TO FIRE YOU USE ANY LETTER KEY."
9020 PRINT TAB 0;TAB 0;TAB 0;"PRESS ANY KEY (EXCEPT BREAK OR
SHIFT TO PLAY.ENJOY
YOUR GAME"
9995 IF INKEY$="" THEN GOTO 9995
9996 CLS
9997 GOTO 3
9998 SAVE "RUBBISH"
9999 RUN