MOON PATROL

VC=20 Version  1986, 1995 Michael Kircher

Ziel des Spiels:
... versuchen sie, die Mondstation zu erreichen.
Aber Vorsicht vor UFOs, Kratern und Meteoren ...

Steuerung:
Joystick links : bremst Fahrzeug
         rechts: beschleunigt Fahrzeug
         oben  : Sprung
         Feuer : schiet Rakete nach oben ab

Anforderungen:
Luft auf unexpandiertem Rechner.


Listing 1: Definition der neuen Graphik-Zeichen

1 POKE55,0:POKE56,29:CLR
2 FORT=7424TO7615:READA:POKET,A:NEXT
3 END
4 DATA 0,0,0,0,0,0,0,0
5 DATA 0,37,213,214,86,85,119,51
6 DATA 0,80,168,170,170,170,117,48
7 DATA 28,30,213,213,21,21,217,217
8 DATA 0,32,16,16,16,16,48,0
9 DATA 0,204,84,32,32,16,48,0
10 DATA 0,129,129,195,195,199,239,255
11 DATA 0,32,52,118,222,247,124,62
12 DATA 0,192,249,255,255,255,255,255
13 DATA 0,152,254,255,255,255,255,255
14 DATA 0,24,253,255,255,255,255,255
15 DATA 0,1,7,15,31,63,127,255
16 DATA 0,0,0,128,192,224,252,254
17 DATA 0,0,0,0,0,0,0,1
18 DATA 255,255,255,255,255,255,255,255
19 DATA 15,63,191,159,223,207,231,243
20 DATA 255,255,127,31,207,231,243,249
21 DATA 249,252,254,255,255,255,255,255
22 DATA 63,255,157,170,136,186,186,255
23 DATA 255,255,136,218,217,218,218,255
24 DATA 252,255,139,171,171,171,137,255
25 DATA 129,66,36,24,36,66,129,129
26 DATA 0,0,0,0,8,0,0,0
27 DATA 45,243,123,76,34,127,57,84


Listing 2: Hauptprogramm

1 V=36864:K=.1:CO=30720:LI=3:LV=1:GOSUB46
2 P=P+1:G$=RIGHT$(G$,21)+CHR$(40+RND(1)*3):IFRND(1)<KANDLV<3THENG$=LEFT$(G$,21)+"&"
3 J=J+1:IFMT=0ANDRND(1)>.6THENIFMID$(G$,21,1)<>"&"ANDLV<3THENMT=8075
4 O=MA:S=PEEK(37151):POKE37154,127:T=PEEK(37152):POKE37154,255:IFLV<>2ORFYTHEN6
5 IFRND(1)>.8THENFX=21:FY=7790+22*INT(RND(1)*7):C3=PEEK(FX+FY):D3=PEEK(FX+FY+CO)
6 IFFYTHENIFB2=0ANDRND(1)<.1THENB2=FX+FY:C2=37:D2=14
7 IF(16ANDS)=0ANDX>0THENMA=MA-1:X=X-1
8 IF(128ANDT)=0ANDX<10THENMA=MA+1:X=X+1
9 IF(4ANDS)=0ANDSP=0ANDJ<425THENSP=1:MA=MA-22:POKEV+11,230
10 IFSP>0THENSP=SP+1:IFSP=4THENSP=0:MA=MA+22:POKEV+11,0
11 IFO<>MATHENPOKEO,32:POKEO+1,32:POKEMA,33:POKEMA+1,34:POKEMA+CO,14:POKEMA+CO+1,14
12 IF(32ANDS)=0ANDB1=0ANDJ<425THENB1=MA+1:C1=34:D1=14
13 POKEV+12,200:POKEV+12,0:PRINTC$"{5 DOWN,YEL}"G$:IFP=9THENP=0
14 IFMTTHENPOKEMT+(MT=MA),32:MT=MT-1:POKEMT,39:POKEMT+CO,1:IFMT=8054THENPOKEMT,32:MT=0
15 IFB1THENPOKEB1,C1:POKEB1+CO,D1:B1=B1-22:IFB1<7790THENB1=0
16 IFB2THENPOKEB2,C2:POKEB2+CO,D2:B2=B2+21:IFB2>8075ORPEEK(B2)=39THENB2=0
17 IFFYTHENPOKEFX+FY,C3:POKEFX+FY+CO,D3:FX=FX-1:IFFX=0THENFY=0:B2=0
18 IFFYTHENC3=PEEK(FX+FY):D3=PEEK(FX+FY+CO):POKEFX+FY,37:POKEFX+FY+CO,14
19 IFP=3THENPRINTC$"+,-+,-+,-+,-+,-+,-+,-+../../../../../../../.0.10.10.10.10.10.10.10"
20 IFP=6THENPRINTC$",-+,-+,-+,-+,-+,-+,-+,./../../../../../../...10.10.10.10.10.10.10."
21 IFP=0THENPRINTC$"-+,-+,-+,-+,-+,-+,-+,-/../../../../../../../10.10.10.10.10.10.10.1"
22 IFB2THENC2=PEEK(B2):D2=PEEK(B2+CO):POKEB2,36:POKEB2+CO,14
23 IFB1THENC1=PEEK(B1):D1=PEEK(B1+CO):POKEB1,36:POKEB1+CO,14
24 IFJ<425THENIFPEEK(MA)<>33ORPEEK(MA+1)<>34ORPEEK(MA+23)=38THEN38
25 O=SC:IFFYTHENIFPEEK(FX+FY)<>37THENGOSUB36:SC=SC+50
26 IFPEEK(MA+23)=39ORPEEK(MA+45)=38THENSC=SC+20
27 IFO<>SCTHENGOSUB35
28 IFJ=200THENLV=2:POKE7743,178
29 IFJ=400THENLV=3:POKE7743,179
30 IFJ<425THEN2
31 PRINTC$"{3 DOWN}"SPC(Q)" 5 {DOWN,3 LEFT}234 ":Q=Q-1:IFQ>=X+3THEN2
32 PRINT"{HOME,DOWN,RVS ON}DU HAST ES GESCHAFFT !":J=0:LV=1:K=K+.05
33 POKEV+10,228:POKEV+11,229:POKEV+12,230:FORT=15TO0STEP-.3:POKEV+14,32+T:NEXT
34 FORT=0TO4:POKEV+10+T,0:NEXT:POKE198,0:WAIT198,1:GOSUB46:GOTO2
35 SC$=STR$(SC+100000):FORT=4TO7:POKE7728+T,VAL(MID$(SC$,T,1))+176:NEXT:RETURN
36 POKEFX+FY,55:FORT=255TO0STEP-14:POKEV+13,128:POKEV+14,T:NEXT:POKEFX+FY,32
37 POKEV+13,0:POKEV+14,47:FY=0:B1=0:RETURN
38 IF(PEEK(MA)=32ORPEEK(MA+1)=32)ANDMA<>MTTHENGOSUB53:GOTO25
39 IFPEEK(MA+23)=38THENPOKEMA,32:POKEMA+1,35:POKEMA+23,55:POKEMA+CO+23,10:GOTO41
40 POKEMA,55:POKEMA+1,55:POKEMA+CO,10:POKEMA+CO+1,10
41 POKEV+10,0:POKEV+11,0:POKEV+12,0:FORT=15TO0STEP-.2:POKEV+13,188-T*4
42 POKEV+14,INT(RND(1)*16)*16+T:POKEV+15,INT(RND(1)*8)+8:NEXT
43 POKEV+13,0:POKEV+14,47:POKEV+15,15:LI=LI-1:IFLI>0THENGOSUB46:GOTO2
44 PRINT"{HOME,10 DOWN,7 RIGHT}";:POKE646,14:PRINT"{RVS ON}GAMEOVER"
45 POKE198,0:WAIT198,1:RUN
46 POKEV+5,255:POKEV+14,47:POKEV+15,15:MA=8057:X=0:MT=0:FY=0:B1=0:B2=0:SP=0:P=0:Q=18
47 PRINT"{CLR,2 DOWN,WHT,RVS ON,2 RIGHT}SCORE:0000 LEVEL:1":C$="{HOME,13 DOWN,WHT}"
48 GOSUB35:POKE7743,LV+176:G$="(*)(()**)(*(())*(*))*(":PRINTC$"{5 DOWN,YEL}"G$
49 FORT=8098TO8185:POKET,46:POKET+CO,7:NEXT
50 GOSUB53:FORT=1TO44
51 O=INT(RND(1)*286)+7680:IFPEEK(O)<>32THEN51
52 POKEO,54:NEXT:RETURN
53 POKEMA,33:POKEMA+1,34:POKEMA+CO,14:POKEMA+CO+1,14:RETURN
