Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß) 10 CLEAR 512,15999 20 GOSUB 8000: GOSUB 7000: GOTO 40 30 GOSUB 9000: GOSUB 8000 40 GOSUB 6000: GOSUB 6500: GOSUB 4600 50 REM LESEZYKLUS 1 60 IF SP<1 AND EK=0 THEN EK=1: GOTO 30 70 E$=INKEY$ 80 IF LEN(E$)<1 THEN 70 90 E=ASC(E$) 100 IF E=13 THEN GOSUB 1000: GOTO 60 110 GOSUB 3000 120 IF K<K1 OR K>K2 THEN 140 130 IF L>=L1 AND L<=L2 THEN 60 140 W=0: EK=0 150 REM LESEZYKLUS 2 160 W=W+1:E$=INKEY$ 170 IF PEEK(634)<>0 THEN GOSUB 4400: GOTO 80 180 IF RND(1)<S*W THEN GOSUB 4000 190 IF LEN(E$)<1 THEN 160 200 E=ASC(E$) 210 IF E=13 THEN GOSUB 1000: GOTO 160 220 GOSUB 3000: IF EK=2 THEN 30 230 GOTO 160 1000 REM KAPSEL GEZUENDET 1010 IF SP<1 THEN RETURN 1020 POKE 600,1:SP=SP-1:PK=0:GOSUB 4800 1030 Z1=ASC(MID$(G$(K),L-1,1)) 1040 IF Z1<128 THEN 1080 1050 Z1=Z1*RND(1)+80-L 1060 IF Z1<128 THEN Z1=32: EK=3 1070 IF Z1>255 THEN Z1=255 1080 Z2=ASC(MID$(G$(K),L+1,1)) 1090 IF Z2<128 THEN 1130 1100 Z2=Z2*RND(1)+40+L 1110 IF Z2<128 THEN Z2=32: EK=3 1120 IF Z2>255 THEN Z2=255 1130 G$(K)=LEFT$(G$(K),L-2)+CHR$(Z1)+" "+CHR$(Z2)+RIGHT$(G$(K),37-L) 1140 PRINT AT (K,1);G$(K) 1150 PRINT AT (K,L);"" 1160 Z1=ASC(MID$(G$(K-1),L,1)) 1170 IF Z1<128 THEN 1230 1180 Z1=Z1*RND(1)+80-2*K 1190 IF Z1<128 THEN Z1=32: EK=3 1200 IF Z1>255 THEN Z1=255 1210 G$(K-1)=LEFT$(G$(K-1),L-1)+CHR$(Z1)+RIGHT$(G$(K-1),38-L) 1220 PRINT AT (K-1,1);G$(K-1) 1230 Z2=ASC(MID$(G$(K+1),L,1))*RND(1)+40+2*K 1240 IF Z2<128 THEN 1300 1250 Z2=Z2*RND(1)+40+2*K 1260 IF Z2<128 THEN Z2=32: EK=3 1270 IF Z2>255 THEN Z2=255 1280 G$(K+1)=LEFT$(G$(K+1),L-1)+CHR$(Z2)+RIGHT$(G$(K+1),38-L) 1290 PRINT AT (K+1,1);G$(K+1) 1300 W=W+300 1310 RETURN 2000 REM MAUER 2010 POKE 600,2: W=W+50 2020 RETURN 3000 REM BEWEGUNG 3010 M=0:N=0 3020 IF E=8 THEN N=-1: GOTO 3070 3030 IF E=9 THEN N=1: GOTO 3070 3040 IF E=10 THEN M=1: GOTO 3070 3050 IF E=11 THEN M=-1: GOTO 3070 3060 RETURN 3070 IF (K+M=0)OR(K+M=21)OR(L+N=0)OR(L+N=39) THEN EK=2: RETURN 3080 IF MID$(G$(K+M),L+N,1)=" " THEN K=K+M:L=L+N:ELSE M=0:N=0 3090 PRINT AT (K,L);"" 3100 IF (M<>0)OR(N<>0) THEN PRINT AT (K-M,L-N);" " 3110 IF M=0 AND N=0 THEN GOSUB 2000 3120 IF PEEK(601)=0 THEN GOSUB 4800 3130 RETURN 4000 REM TEST AUF WACHE 4010 IF PEEK(601)>15 THEN RETURN 4020 GOSUB 4200: RETURN 4200 REM WACHE IM ANMARSCH 4210 POKE 600,4: PK=1 4220 PRINT "Die Wache ist im Anmarsch." 4230 RETURN 4400 REM WACHE ERWISCHT 4410 POKE 634,0: POKE 600,8: PK=2: EK=0 4420 PRINT "Die Wache hat Sie erwischt!" 4430 GOSUB 6500: GOSUB 4600 4440 RETURN 4600 REM GEFANGNIS ANZEIGEN 4610 FOR I=1 TO 20: PRINT AT (I,1);G$(I): NEXT I 4620 PRINT AT (K,L);"" 4630 RETURN 4800 REM SPRENGKAPSELZAHL 4810 IF PK=3 THEN RETURN 4820 PK=3: IF SP>0 THEN 4850 4830 PRINT "Sie haben keine Sprengkapseln mehr." 4840 RETURN 4850 IF SP>1 THEN 4880 4860 PRINT "Sie haben noch eine Sprengkapsel." 4870 RETURN 4880 PRINT "Sie haben noch";SP;"Sprengkapseln." 4890 RETURN 5000 REM SPEICHERANZEIGE 5010 K$="0123456789ABCDEF" 5020 INPUT "Adr.:";A 5030 PRINT A;":"; 5040 FOR I=A TO A+100 5050 B=PEEK(I):C=INT(B/16)+1:D=B-C*16+17 5060 H$=MID$(K$,C,1)+MID$(K$,D,1) 5070 PRINT " ";H$; 5080 NEXT I 5090 GOTO 5020 6000 CLS: EK=0: PK=0 6010 REM ALLES RUECKSETZEN 6020 WINDOW 22,23,0,39 6030 GOSUB 4800 6040 REM VORBEREITUNG 6050 POKE 600,0: POKE 601,0 6060 POKE 610,40: POKE 611,0 6070 DOKE 512,16340 6080 POKE 620,4: POKE 621,3 6090 POKE 622,0: POKE 623,0 6100 POKE 630,50: POKE 631,8 6110 POKE 632,0: POKE 633,0 6120 POKE 634,0 6130 POKE 640,200: POKE 641,0 6140 DOKE 514,16000 6150 OUT 129,167: OUT 129,128 6160 OUT 128,3: OUT 136,128 6170 RETURN 6500 REM GRUNDBILD 6510 DATA "" 6520 DATA " " 6530 DATA " " 6540 DATA " " 6550 DATA " " 6560 DATA " " 6570 DATA " " 6580 DATA " " 6590 DATA " " 6600 DATA " " 6610 DATA " " 6620 DATA " " 6630 DATA " " 6640 DATA " " 6650 DATA " " 6660 DATA " " 6670 DATA " " 6680 DATA " " 6690 DATA " " 6700 DATA " " 6710 REM BS-ANFANGSZUSTAND 6720 RESTORE 6500 6730 FOR I=1 TO 20: READ G$(I): NEXT I 6740 K=KA: L=LA: W=0 6750 RETURN 7000 REM 7010 REM EXPL.-GERAEUSCH '3FD4"=16340 7020 DATA "E5F53E85D380215A02CB3E200B" 7030 DATA "DB82F680325A023E9518063E49" 7040 DATA "30023E25D380F1E1FBED4D" 7050 REM LAENGE DER EXPL. '3FAC'=16300 7060 DATA "216302CB61280B168135C0" 7070 DATA "1603CB81CBA1C9" 7080 DATA "3A62027716875ACBE1C9" 7090 REM MAUERANSTOSS '3F70'=16240 7100 DATA "CB69200ACBE9216D027E2377180A" 7110 DATA "216F023520092B352810" 7120 DATA "233A6C02772B7EE6012809" 7130 DATA "16051E64C9CB89CBA91603C9" 7140 REM WACHE KOMMT '3F20'=16160 7150 DATA "CB71200ACBF12177027E2377180A" 7160 DATA "2179023520092B352818" 7170 DATA "233A76027716055E2B7EE6012805 7180 DATA "3A7602935F7BC6205FC9" 7190 DATA "CB91CBB11603232336FFC9" 7200 REM ERWISCHT '3ED0'=16080 7210 DATA "218102CB792006CBF93A80027735" 7220 DATA "280B5E3A800293C6145F1605C9" 7230 DATA "CB99CBB91603C9" 7240 REM UB-BEHANDLUNG '3E80'=16000 7250 DATA "E5F52158027E360023B6282C" 7260 DATA "77C5D5E54F1600CB59C4D03ECB51" 7270 DATA "C4203FCB49C4703FCB41C4AC3F" 7280 DATA "E1717AB72809D380E6042803" 7290 DATA "7BD380D1C1F1E1FBED4D" 7300 RESTORE 7010: I0=16340 7310 FOR I1=1 TO 3:GOSUB 7900:NEXT I1 7320 RESTORE 7050:I0=16300 7330 FOR I1=1 TO 3:GOSUB 7900:NEXT I1 7340 RESTORE 7090:I0=16240 7350 FOR I1=1 TO 4:GOSUB 7900:NEXT I1 7360 RESTORE 7140:I0=16160 7370 FOR I1=1 TO 5:GOSUB 7900:NEXT I1 7380 RESTORE 7200:I0=16080 7390 FOR I1=1 TO 3:GOSUB 7900:NEXT I1 7400 RESTORE 7240:I0=16000 7410 FOR I1=1 TO 5:GOSUB 7900:NEXT I1 7420 REM ZELLE 7430 DATA 9,11,18,20 7440 REM SPRENGKAPSELN 7450 DATA 30 7460 REM ANFANGSPOSITION 7470 DATA 10,19 7480 DIM G$(20) 7490 REM ALLES RUECKSETZEN 7500 RESTORE 7430 7510 READ K1,K2,L1,L2,SP,KA,LA 7520 RETURN 7900 REM HEX ABSPEICHERN 7910 READ P$:FOR I7=1 TO LEN(P$) STEP 2 7920 I8=ASC(MID$(P$,I7,1))-48 7930 IF I8>9 THEN I9=16*(I8-7): ELSE I9=16*I8 7940 I8=ASC(MID$(P$,I7+1,1))-48 7950 IF I8>9 THEN I9=I9+I8-7: ELSE I9=I9+I8 7960 POKE I0,I9:I0=I0+1:NEXT I7 7970 RETURN 8000 REM ANFANGSILD 8010 CLS 8020 PRINT AT (0,7);"Fleischer's Computerspiel" 8030 PRINT AT (2,0);"" 8040 PRINT AT (3,0);" G E F A E N G N I S " 8050 PRINT AT (4,0);"" 8060 PRINT AT (9,0);"Bitte Schwierigkeitsgrad von 1 (leicht)" 8070 PRINT AT (10,0);"bis 9 (schwer) auswaehlen:" 8080 E$=INKEY$:IF LEN(E$)<1 THEN GOTO 8080 8090 S=(1+VAL(E$))*.00005 8100 SP=30-2*VAL(E$) 8110 PRINT AT (6,0);"Die Bedienung ist denkbar einfach. Sie" 8120 PRINT AT (7,0);"haben die Aufgabe, aus einem Gefaengnis" 8130 PRINT AT (8,0);"auszubrechen. Auf dem Bildschirm ist" 8140 PRINT AT (9,0);"der Grundriss des Gefaengnisses darge-" 8150 PRINT AT (10,0);"stellt. Mit den Tasten <,>,, wird die" 8160 PRINT AT (11,0);"Fluchtrichtung vorgegeben. Mit der Taste" 8170 PRINT AT (12,0);"'ENTER' kann eine Kapsel zur Sprengung" 8180 PRINT AT (13,0);"einer den Weg versperrenden Mauer ge-" 8190 PRINT AT (14,0);"zuendet werden. Falls die Wachen Ihren" 8200 PRINT AT (15,0);"Ausbruch bemerken, werden Sie wieder in" 8210 PRINT AT (16,0);"die Zelle gesteckt und die Loescher in" 8220 PRINT AT (17,0);"den Mauern werden schnell wieder zuge-" 8230 PRINT AT (18,0);"mauert." 8240 PRINT AT (20,0);"Bitte warten. Es geht gleich los." 8250 PRINT AT (23,5);"Viel Spass. Viel Erfolg!" 8260 RETURN 9000 REM PROGAMMENDE 9010 OUT 136,0: OUT 129,3: OUT 128,3 9020 WINDOW:CLS 9030 IF EK<>2 THEN 9130 9040 PRINT AT (5,5);"Sie sind erfolgreich getuermt." 9050 IF SP>0 THEN 9080 9060 PRINT AT (10,0);"Sie haben alle Sprengkapseln verbraucht." 9070 GOTO 9160 9080 IF SP>1 THEN 9110 9090 PRINT AT (10,1);"Sie haben nur noch eine Sprengkapsel." 9100 GOTO 9160 9110 PRINT AT (10,2);"Sie haben noch",SP,"Sprengkapseln." 9120 GOTO 9160 9130 PRINT AT (5,6);"Die Lage ist hoffnungslos." 9140 PRINT AT (10,2);"Alle Sprengkapseln sind verbraucht." 9150 PRINT AT (15,1);"Sie kommen sowieso nicht mehr heraus." 9160 PRINT AT (22,5);"Durch Druecken einer beliebigen" 9170 PRINT AT (23,5);"Taste beginnt das Spiel von vo{n." 9180 E$=INKEY$ 9190 E$=INKEY$:IF LEN(E$)<1 THEN GOTO 9190 9200 RETURN