10 REM GIANT RATS
20 REM @ PAUL STANLEY.
30 MODE 1:BORDER 0:INK 0,0:INK 1,24:INK 2,20:INK 3,6:WINDOW #1,1,40,1,25:PAPER #1,0:PEN #1,0:CLS #1
40 GOSUB 880
50 DIM A(4),B(4)
60 GOSUB 690
70 HS=0
80 GOSUB 780
90 WINDOW #0,5,36,1,25:PAPER #0,0:PEN #0,1:CLS #0
100 SC=0
110 LI=5
120 PEN 2:FOR F=0 TO 30:LOCATE F+1,1:PRINT CHR$(237);:LOCATE F+1,21:PRINT CHR$(237);:NEXT:FOR F=1 TO 19:LOCATE 1,F+1:PRINT CHR$(237);:LOCATE 31,F+1:PRINT CHR$(237);:NEXT:PEN 1
130 GOSUB 510
140 FOR I=1 TO 30:LOCATE INT(RND*22)+8,INT(RND*14)+6:PRINT CHR$(237);:NEXT I
150 SC=SC-1:Y=1:X=1:F=19:G=29:A$=CHR$(233)
160 LOCATE 6,22:PRINT CHR$(24);"HI-SC:";CHR$(24);HS;:PEN 2:LOCATE 17,22:PRINT"LI:";LI;:PEN 3:LOCATE 24,22:PRINT CHR$(24);"SCORE:0";CHR$(24);:PEN 1
170 B$=CHR$(231)+CHR$(232):C=1
180 GOSUB 420
190 FOR I=1 TO 2
200 C=C-1:LOCATE 1,22:PRINT C;" ";:IF C=O THEN 590
210 IF RND>0.97 THEN GOSUB 470
220 LOCATE X+1,Y+1:PRINT" "
230 IF INKEY(1)=0 THEN LOCATE X+2,Y+1:CALL 360:Z=PEEK(367):IF Z<>237 THEN X=X+1
240 IF INKEY(8)=0 THEN LOCATE X,Y+1:CALL 360:Z=PEEK(367):IF Z<>237 THEN X=X-1
250 IF INKEY(0)=0 THEN LOCATE X+1,Y:CALL 360:Z=PEEK(367):IF Z<>237 THEN Y=Y-1
260 IF INKEY(2)=0 THEN LOCATE X+1,Y+2:CALL 360:Z=PEEK(367):IF Z<>237 THEN Y=Y+1
270 LOCATE X+1,Y+1:CALL 360:Z=PEEK(367):IF Z=238 THEN GOSUB 420
280 IF (X=B(1) AND Y=A(1)) OR (X=B(2) AND Y=A(2)) OR (X=B(3) AND Y=A(3)) OR (X=B(4) AND Y=A(4)) THEN GOTO 550
290 LOCATE X+1,Y+1:PRINT MID$(B$,I,1)::GOSUB 330
300 IF ZX=1 THEN ZX=0:GOTO 570
310 NEXT I
320 GOTO 190
330 F1=F:G1=G
340 IF F<Y THEN A$=CHR$(236):F=F+0.5
350 IF F>Y THEN A$=CHR$(235):F=F-0.5
360 IF G<X THEN A$=CHR$(234):G=G+0.5
370 IF G>X THEN A$=CHR$(233):G=G-0.5
380 LOCATE G1+1,F1+1:PRINT" ";:LOCATE G+1,F+1:PEN 3:PRINT A$;:PEN 1
390 ZX=0:LOCATE X+1,Y+1:CALL 360:Z=PEEK(367):IF Z>=233 AND Z<=236 THEN ZX=1:RETURN
400 LOCATE INT(RND*15)*2+2,INT(RND*10)*2+2:PRINT CHR$(237)
410 RETURN
420 SC=SC+1:LOCATE 30,22:PEN 2:PRINT MID$(STR$(SC),2);:PEN 1
430 FOR L=1 TO 5:SOUND 1,(L*5*5),3:NEXT
440 C=100
450 Q=INT(RND*10)*2+1:W=INT(RND*15)*2+1:LOCATE W+1,Q+1:PRINT CHR$(238);
460 RETURN
470 LOCATE W+1,Q+1:PRINT" ":L=0:M=W:L1=F:M1=G:F=L:G=M:Q=L1:W=M1
480 LOCATE W+1,Q+1:PRINT CHR$(238);
490 T=1
500 RETURN
510 REM
520 FOR I=1 TO 4:A(I)=INT(RND*10)*2+1:B(I)=INT(RND*15)*2+1:NEXT
530 FOR I=7 TO 0 STEP -1:FOR L=1 TO 4:LOCATE B(L)+1,A(L)+1:PEN 3:PRINT CHR$(143):PEN 1:SOUND 1,(5*L*2),3:NEXT L,I
540 RETURN
550 FOR L=1 TO 3:LOCATE X+1,Y+1:PRINT CHR$(231);:SOUND 1,(L*10),3:NEXT L
560 GOTO 600
570 FOR L=1 TO 3:LOCATE X+1,Y+1:PRINT CHR$(236);:SOUND 1,(L*10*L),3:NEXT L
580 GOTO 600
590 FOR L=1 TO 15:FOR I=1 TO 3:SOUND 1,(L*10+I*20),3:LOCATE W+1,Q+1:PRINT CHR$(238):NEXT I,L
600 LOCATE X+1,Y+1:PRINT" ";:LOCATE G+1,F+I:PRINT" ";:LOCATE W+1,Q+1:PRINT" ";
610 LI=LI-1:IF LI>0 THEN SOUND 1,(100*2),3:GOTO 150
620 CLS:FOR F=1 TO 21:SOUND 1,(F*5+30),3:NEXT
630 PEN 2: PRINT:PRINT"You scored";SC;" POINTS":PEN 1
640 IF SC>HS THEN HS=SC:PRINT:PRINT:PEN 3:PRINT"WELL DONE!  A NEW HIGH SCORE!":PEN 1:FOR XX=5 TO 8:FOR SS=10 TO 30:SOUND I,(XX*3+SS*3),3:NEXT SS,XX
650 PRINT:PRINT"The high-score is";HS
660 PRINT:PRINT"PRESS ANY KEY TO PLAY AGAIN"
670 IF INKEY$<>"" THEN 670
680 IF INKEY$="" THEN 680 ELSE CLS:GOTO 80
690 REM
700 PEN 3:PRINT CHR$(24);"          G I A N T   R A T S           ";CHR$(24);:PEN 1
710 PEN 2:LOCATE 1,4:PRINT"The giant rat  is out to get you!  You    must try to reach the girl before she    mutates [a timer at the bottom of the    screen countsthis down]. ":PEN 1
720 LOCATE 1,9:PRINT"However she might be a mutant herself   and change places    with  the  rat     unpredictably. Also  she might disappear totally [if she meets the rat]"
730 PEN 3:LOCATE 1,14:PRINT"And that's not all! When you start,up toFOUR mines will be shown randomly. The  mines'positions must be noted,For if youland on one, you will be destroyed!!!":PEN 1
740 PEN 2:LOCATE 1,20:PRINT CHR$(24);"  USE THE ARROW KEYS TO MOVE AROUND.    "CHR$(24);:PEN 1
750 LOCATE 1,24:PEN 3:PRINT CHR$(24);"         PRESS ANY KEY TO START         "CHR$(24);:PEN 1
760 IF INKEY$<>"" THEN 760
770 IF INKEY$="" THEN 760 ELSE CLS:RETURN
780 SYMBOL AFTER 230
790 SYMBOL 231,28,93,73,62,8,28,34,65
800 SYMBOL 232,28,28,8,127,8,28,20,20
810 SYMBOL 233,7,1,33,57,93,255,36,108
820 SYMBOL 234,240,128,132,156,186,255,36,54
830 SYMBOL 235,8,28,62,28,28,63,61,7
840 SYMBOL 236,15,57,255,124,254,84,56,16
850 SYMBOL 237,255,129,189,165,165,189,129,255
860 SYMBOL 238,28,28,73,62,28,62,20,54
870 RETURN
880 RESTORE 890:FOR XX=360 TO 366:READ ZZ:POKE XX,ZZ:NEXT:RESTORE:RETURN
890 DATA 205,96,187,50,111,1,201