climber_sss.tap
climber_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

   10! SPIELPROGRAMM    *** CLIMBER ***    
   20!
   30! Version 2    Heimcomputer Z9001
   40!
   50! Ludwig,R.-C.          30.1.1985
   60! 1020 BERLIN, Melchiorstr.8 Ptr.
   70! *******************************
   80!
   85 CLEAR 500:NR=0001
   90 OUT 136,40:WINDOW: CLS: GOSUB 2580: GOSUB 2550: DIM NM$(16),K(16)
  100 DATA 963,255,274,6,963,255,269,6,963,255,264,6,963,255,262,6
  110 DATA 963,255,258,6,963,255,255,6,963,255,250,6,963,255,205,4
  120 DATA 247,255,-255,208,255,88,255,47,255,-255,253,255,-255,-255
  130 DATA 180,255,139,181,99,180,141
  140 DATA 180,101,181,266,255,-255,186,182,-182
  150 DATA 146,183,-183,66,255,-255,227,255,187,183,961,182,961,255
  160 DATA 272,255,-255,-255,191,182,-182,151,183,-183
  170 DATA 72,255,-255,-255,277,255,961,255,-255,961,255,-182
  180 DATA 157,255,-183,-183,117,255,76,255,-255
  190 DATA 830,170,811,167,470,169,451,168,963,161,790,8,963,161
  200 DATA 771,8,962,160,829,18,962,160,469,18,962,61,705,11
  210 DATA 547,58,-121,-98,-32,-116,-104,-103,-105,-114,-112,-111,-67,-32,-64
  220 DATA 626,46,-67,-45
  230 DATA-46,-82,-32,-44,-103,-105,-119,-100,-117,-76,665,110,-105,-108
  240 DATA-114,-101,-66,-32,-48,-50,-48,-49,746,56,-46,-114,-116,-115
  250 DATA-114,-111,-105,-104,-99,-108,-101,-77,0
  255 DATA 0,3,22,36,99,1,2,3,4,5,6,7,8
  260 DATA 912,33,-110,-101,-116,-108,-97,-104,-101,-98,-114,-111,-118
  270 DATA-32,-101,-116,-104,-99,-101,-82,-32,-101,-108,-108,-65,0
  280 CLS:OUT 136,44:WINDOW 0,19,0,39:READ K,T,A0,B0,U0:FOR F=1 TO 8:READ S(F):NEXT F
  290 PRINT "***  SPIELPROGRAMM   C L I M B E R   ***"
  300 PRINT "Sie muessen ihre Spielfigur im Wettlauf"
  310 PRINT "mit der Zeit zum Ausgang der Spieletage"
  320 PRINT "bringen und dort auf das Erscheinen der"
  330 PRINT "naechsten Etage warten. Die Spielfigur"
  340 PRINT "kann mit Hilfe der Kursor-Tasten oder"
  350 PRINT "wenn vorhanden ueber den Spielhebel 1"
  360 PRINT "bewegt werden. Beeilen Sie sich, denn"
  370 PRINT "Sie haben nur wenig Zeit.":PRINT
  380 PRINT "Verlassen Sie niemals die Linien und"
  390 PRINT "Leitern ! Meiden Sie die Ungeheuer !"
  400 PRINT "Sonst verliert die Spielfigur ihr Leben.";
  410 PRINT "Zum Glueck hat sie drei Leben."
  420 PRINT "Die Waechter am Ausgang koennen nur"
  430 PRINT "durch das Einsammeln von Zauberfruchten"
  440 PRINT "besiegt werden."
  450 PRINT AT(19,30);"> ENTER <"
  460 IY$=INKEY$:IF IY$=""THEN 460
  470 CLS:PRINT TAB(12)"Spielfigur:  "
  480 PRINT TAB(5)"Ausgang der Etage:  >-<"
  490 PRINT TAB(14)"Waechter:  "
  500 PRINT TAB(8)"Zauberfruechte:  $
  510 PRINT:PRINT TAB(13)"Ungeheuer:  "
  520 PRINT TAB(25)"":PRINT TAB(25)"":PRINT TAB(25)"":PRINT TAB(25)""
  530 PRINT TAB(25)"":PRINT TAB(25)"":PRINT TAB(25)"":PRINT TAB(25)""
  540 PRINT:PRINT " Gefaehrliche Schlange:  "  
  550 PRINT AT(19,30);"> ENTER <"
  560 IF INKEY$=""THEN 560
  570 CLS:PRINT "In einigen Gefahrensituationen kann Ihre";
  580 PRINT "Spielfigur durch eine Tarnkappe auch"
  590 PRINT "unsichtbar werden und ist dadurch erst"
  600 PRINT "einmal gerettet. Durch Bewegung der"
  610 PRINT "Figur wird Sie wieder sichtbar."
  620 PRINT:PRINT:PRINT AT(19,30);"> ENTER <"
  630 IF INKEY$=""THEN 630
  640 CLS:PRINT "NAME DES SPIELERS ?  (max.20 Buchstaben)"
  650 PRINT:PRINT:INPUT NM$:NM$=MID$(NM$,1,20)
  660 OUT 136,40:WINDOW
  670 G$="----------------------------------------"
  680 SP=S(1):J=8:GOSUB 2680
  690 PRINT AT(6,1);MID$(G$,1,31):PRINT AT(10,8);MID$(G$,1,17)
  700 PRINT AT(14,1);MID$(G$,1,31):PRINT AT(18,8);MID$(G$,1,17)
  710 PRINT AT(22,1);MID$(G$,1,37):PRINT AT(3,15);">-<":PRINT AT(14,6);"$"
  720 PRINT AT(14,26);"$":PRINT AT(18,15);"$$$"
  730 FOR G=13 TO 23:PRINT AT(G,2);"-"
  740 PRINT AT(G,30);"-":PRINT AT(G-13,16);"":NEXT G
  750 PRINT AT(10,15);"$-$":PRINT AT(9,16);" ":PRINT AT(8,16);" "
  760 PRINT AT(A,B);"":PRINT AT(18,2);"$":PRINT AT(18,30);"$"
  770 FOR W=0 TO 16:PRINT AT(22-W,10);"O":PRINT AT(23-W,10);"-"
  780 PRINT AT(6+W,22);"O":PRINT AT(5+W,22);"-"
  790 GOSUB 2730:IF W<>7 THEN 810
  800 U=U-1:PRINT AT(0,20);U,""
  810 NEXT W
  820 IF A<4 THEN 920
  830 U=U-1:PRINT AT(0,20);U,""
  840 FOR W=0 TO 16:IF INT(W/2)=W/2 THEN Z$="":ELSE Z$=""
  850 PRINT AT(W+6,10);Z$:PRINT AT(5+W,10);"-"
  860 PRINT AT(22-W,22);Z$:PRINT AT(23-W,22);"-"
  870 GOSUB 2730:IF W=7 THEN U=U-1:PRINT AT(0,20);U,""
  880 NEXT W
  890 IF A<4 THEN 920
  900 U=U-1:PRINT AT(0,20);U,"":IF U<0 THEN GOTO 2440
  910 GOTO 770
  920 K=K+U
  930 SP=S(2):GOSUB 2680
  940 PRINT AT(6,1);MID$(G$,1,30):PRINT AT(14,1);MID$(G$,1,30)
  950 PRINT AT(4,15);">-<"
  960 PRINT AT(22,1);MID$(G$,1,37):PRINT AT(14,8);"$":PRINT AT(14,23);"$"
  970 PRINT AT(6,16);"-":PRINT AT(7,16);"-":PRINT AT(14,8);"$"
  980 PRINT AT(14,23);"$":PRINT AT(22,16);"$":PRINT AT(A,B);""
  990 FOR F=0 TO 10:PRINT AT(F,16);"-":NEXT F
 1000 FOR W=0 TO 17:IF INT(W/2)=W/2 THEN Z$="":ELSE Z$=""
 1010 PRINT AT(22-W,2);Z$:PRINT AT(23-W,2);"-":PRINT AT(6+W,29);Z$
 1020 PRINT AT(5+W,29);"-":GOSUB 2730
 1030 IF W=7 THEN U=U-1:PRINT AT(0,20);U,""
 1040 NEXT W:U=U-1:PRINT AT(0,20);"":IF A<5 THEN 1120
 1050 FOR W=0 TO 17:PRINT AT(6+W,2);"":PRINT AT(5+W,2);"-"
 1060 PRINT AT(22-W,29);"":PRINT AT(23-W,29);"-":GOSUB 2730
 1070 IF W=7 THEN U=U-1:PRINT AT(0,20);U,""
 1080 NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 1090 IF A<5 THEN 1120
 1100 IF U<1 THEN 2440
 1110 GOTO 1000
 1120 K=K+U
 1130 SP=S(3):J=10:GOSUB 2680
 1140 PRINT AT(4,15);">-<"
 1150 PRINT AT(6,13);MID$(G$,1,7):PRINT AT(10,13);MID$(G$,1,7)
 1160 PRINT AT(14,6);MID$(G$,1,21):PRINT AT(22,1);MID$(G$,1,37)
 1170 PRINT AT(22,2);"$$$":PRINT AT(14,4);"$$":PRINT AT(14,27);"$$"
 1180 FOR F=0 TO 10:PRINT AT(5+F,13);"-":PRINT AT(13+F,8);"-"
 1190 PRINT AT(13+F,24);"-"
 1200 PRINT AT(5+F,19);"-":PRINT AT(F,16);"":NEXT F:PRINT AT(A,B);""
 1210 PRINT AT(18,8);"$":PRINT AT(18,24);"$":PRINT AT(10,14);"$--$"
 1220 PRINT AT(13,16);"$":PRINT AT(15,16);"$"
 1230 FOR W=0 TO 17:PRINT AT(14,7+W);"-":PRINT AT(22,32-W);"-"
 1240 PRINT AT(6,24-W);"-":GOSUB 2730
 1250 NEXT W:U=U-1:PRINT AT(0,20);U,""
 1260 IF A<5 THEN 1320
 1270 FOR W=0 TO 17:PRINT AT(14,24-W);"-"
 1280 PRINT AT(22,14+W);"-":PRINT AT(6,7+W);"-"
 1290 GOSUB 2730:NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 1300 IF A<5 THEN 1320
 1310 GOTO 1230
 1320 K=K+U
 1330 SP=S(4):J=5:GOSUB 2680
 1340 PRINT AT(4,15);">-<":PRINT AT(9,10);MID$(G$,1,13)
 1350 PRINT AT(12,13);MID$(G$,1,7):PRINT AT(15,10);MID$(G$,1,13)
 1360 PRINT AT(18,10);MID$(G$,1,13):PRINT AT(15,10);"$":PRINT AT(15,22);"$"
 1370 PRINT AT(22,1);MID$(G$,1,37):PRINT AT(9,10);"$$":PRINT AT(14,13);"-"
 1380 PRINT AT(9,21);"$$":PRINT AT(13,13);"-":PRINT AT(13,19);"-"
 1390 PRINT AT(18,10);"$":PRINT AT(18,22);"$":PRINT AT(14,19);"-"
 1400 FOR F=1 TO 23:PRINT AT(F,16);"":NEXT F
 1410 PRINT AT(A,B);"":PRINT AT(23,16);"-"
 1420 FOR W=0 TO 14:PRINT AT(7+W,16);"":PRINT AT(6+W,16);"-"
 1430 PRINT AT(22,22-W);"-":GOSUB 2730
 1440 NEXT W:U=U-1:PRINT AT(0,21);U,"":IF U<0 THEN 2440
 1450 IF A<5 THEN 1510
 1460 FOR W=0 TO 14:PRINT AT(21-W,16);"":PRINT AT(22-W,16);"-" 
 1470 PRINT AT(22,8+W);"-":GOSUB 2730
 1480 NEXT W:U=U-1:PRINT AT(0,21);U,"":IF U<1 THEN 2440
 1490 IF A<5 THEN 1510
 1500 GOTO 1420
 1510 K=K+U
 1520 J=5:SP=S(5):GOSUB 2680
 1530 PRINT AT(2,15);">-<":PRINT AT(5,1);MID$(G$,1,18)
 1540 PRINT AT(10,1);MID$(G$,1,26):PRINT AT(15,1);MID$(G$,1,26)
 1550 PRINT AT(20,1);MID$(G$,1,26):PRINT AT(22,24);MID$(G$,24,37)
 1560 FOR F=8 TO 22:PRINT AT(F,10);"-":PRINT AT(F,15);"-"
 1570 PRINT AT(F,20);"-":PRINT AT(F,25);"-":NEXT F
 1580 FOR F=4 TO 23:PRINT AT(F,1);"-":PRINT AT(INT(F/4-1),16);"":NEXT F
 1590 PRINT AT(12,10);"$":PRINT AT(12,15);"$":PRINT AT(12,20);"$"
 1600 PRINT AT(17,10);"$":PRINT AT(17,15);"$":PRINT AT(A,B);""
 1610 PRINT AT(17,20);"$"
 1620 FOR W=0 TO 22:PRINT AT(10,2+W);"-":PRINT AT(15,25-W);"-"
 1630 PRINT AT(20,2+W);"-":GOSUB 2730
 1640 IF W=10 THEN U=U-1:PRINT AT(0,20);U,""
 1650 NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 1660 IF A<3 THEN 1730
 1670 FOR W=0 TO 22:PRINT AT(10,25-W);"-":PRINT AT(15,2+W);"-"
 1680 PRINT AT(20,25-W);"-":GOSUB 2730
 1690 IF W=10 THEN U=U-1:PRINT AT(0,20);U,""
 1700 NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 1710 IF A<3 THEN 1730
 1720 GOTO 1620
 1730 K=K+U
 1740 SP=S(6):J=10:GOSUB 2680
 1750 PRINT AT(4,15);">-<":PRINT AT(7,13);MID$(G$,1,7)
 1760 PRINT AT(9,13);MID$(G$,1,7):PRINT AT(11,13);MID$(G$,1,7)
 1770 PRINT AT(22,1);MID$(G$,1,37):PRINT AT(14,17);"-":PRINT AT(18,17);"-"
 1780 FOR F=13 TO 23:PRINT AT(F,2);"-":PRINT AT(F,10);"-"
 1790 PRINT AT(F,22);"-":PRINT AT(F,30);"-":PRINT AT(23-F,16);""
 1800 PRINT AT(35-F,16);"-":NEXT F
 1810 PRINT AT(12,2);"$":PRINT AT(12,10);"$":PRINT AT(16,2);"$"
 1820 PRINT AT(16,10);"$":PRINT AT(16,22);"$":PRINT AT(16,30);"$"
 1830 PRINT AT(12,22);"$":PRINT AT(12,30);"$":PRINT AT(20,2);"$"
 1840 PRINT AT(20,10);"$":PRINT AT(20,16);"$"
 1850 PRINT AT(20,22);"$":PRINT AT(20,30);"$":PRINT AT(A,B);""
 1860 FOR W=0 TO 6:PRINT AT(7,12+W);"-":PRINT AT(9,19-W);"-"
 1870 PRINT AT(11,12+W);"-":PRINT AT(18,W/2);"-":PRINT AT(18,6+W);"---"
 1880 PRINT AT(18,15+W);"---":PRINT AT(18,27+W/2);"--"
 1890 PRINT AT(14,5-W/2);"-":PRINT AT(14,13-W);"---"
 1900 PRINT AT(14,21-W);"---":PRINT AT(14,30-W/2);"--":GOSUB 2730
 1910 NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 1920 IF A<5 THEN 2020
 1930 FOR W=0 TO 6:PRINT AT(7,19-W);"-":PRINT AT(9,12+W);"-"
 1940 PRINT AT(11,19-W);"-":PRINT AT(18,5-W/2);"-"
 1950 PRINT AT(18,13-W);"---"
 1960 PRINT AT(18,21-W);"---":PRINT AT(18,30-W/2);"--"
 1970 PRINT AT(14,W/2);"-":PRINT AT(14,6+W);"---"
 1980 PRINT AT(14,15+W);"---":PRINT AT(14,27+W/2);"--":GOSUB 2730
 1990 NEXT W:U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 2000 IF A<5 THEN 2020
 2010 GOTO 1860
 2020 K=K+U
 2030 SP=S(7):J=5:GOSUB 2680
 2040 FOR F=2 TO 20:PRINT AT(F,0);MID$(G$,1,34):NEXT F
 2050 FOR F=21 TO 23:PRINT AT(F,0);MID$(G$,1,40):NEXT F
 2060 PRINT AT(1,15);">-<":PRINT AT(A,B);""
 2070 PRINT AT(RND(1)*20+3,RND(1)*34);"":GOSUB 2730
 2080 PRINT AT(RND(1)*19+3,RND(1)*33);"":GOSUB 2730
 2090 U=U-1:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 2100 IF A=1 AND B=16 THEN 2120
 2110 GOTO 2070
 2120 K=K+U
 2130 SP=S(8):J=5:GOSUB 2680
 2140 PRINT AT(2,0);G$,G$,G$:PRINT AT(21,0);G$,G$,G$
 2150 PRINT AT(1,15);">-<"
 2160 PRINT AT(A,B);""
 2170 PRINT AT(RND(1)*19+3,RND(1)*30);"-----"
 2180 PRINT AT(RND(1)*19+3,RND(1)*30);"----"
 2190 GOSUB 2730
 2200 PRINT AT(RND(1)*19+3,RND(1)*30);"-$$$-"
 2210 PRINT AT(RND(1)*19+3,RND(1)*31);"--"
 2220 PRINT AT(RND(1)*19+3,RND(1)*28);"-$--$-"     
 2230 PRINT AT(RND(1)*19+3,RND(1)*28);"$----$"
 2240 GOSUB 2730:U=U-1/2:PRINT AT(0,20);U,"":IF U<1 THEN 2440
 2250 IF A<>1 THEN 2160
 2260 K=K+U+T*T*50
 2270 CLS:PRINT AT(0,0);"***  WIR GRATULIEREN IHNEN !  ***":PRINT AT(1,0);" "
 2280 PRINT AT(4,0);"Sie haben erfolgreich ihre Spielfigur"
 2290 PRINT AT(6,0);"durch alle Etagen gefuehrt und dabei"
 2300 PRINT AT(8,0);"insgesamt",K,"Punkte erhalten."
 2310 PRINT AT(23,30);"> ENTER <":IY=JOYST$(1):IY$=INKEY$
 2320 IY$=INKEY$:IF IY$=""THEN 2320
 2330 CLS:OUT 136,44:WINDOW 0,19,0,39:I=0
 2340 PRINT "Ueberblick der besten Spielergebnisse :":PRINT:PRINT
 2341 I=I+1
 2342 IF I>14 THEN 2346
 2343 IF K<K(I)THEN 2341
 2344 IK=I:FOR I=15 TO IK STEP-1:K(I+1)=K(I):NM$(I+1)=NM$(I):NEXT I
 2345 K(IK)=K:NM$(IK)=NM$
 2346 FOR I=1 TO 14:IF NM$(I)=""AND K(I)=0 THEN 2348
 2347 PRINT STR$(I);".";TAB(4);NM$(I);TAB(25);K(I);"Punkte"
 2348 NEXT I:PRINT:PRINT:PRINT AT(19,30);"> ENTER <"
 2349 IF INKEY$=""THEN 2349:ELSE WINDOW:OUT 136,40:CLS
 2350 CLS:PRINT "Wollen Sie das Spiel noch einmal":PRINT
 2360 PRINT "versuchen ?     ---> (JA/NEIN) ?"
 2370 IY$=INKEY$:IF IY$=""THEN 2370
 2380 IF IY$="J"OR IY$=CHR$(13)THEN RESTORE 255:GOTO 280:ELSE 2490
 2400 CLS:PRINT AT(2,0);"Sie spielen leider noch zu schlecht !"
 2410 PRINT AT(4,0);"Ihre Spielfigur hat ihr letztes Leben"
 2420 PRINT AT(6,0);"verloren.    ---> Sie muessen noch"
 2430 PRINT AT(8,18);"ueben, ueben, ueben !":GOTO 2470
 2440 CLS:PRINT AT(2,0);"Sie spielen zu langsam."
 2450 PRINT AT(4,0);"* Ihre Spielzeit ist abgelaufen ! *"
 2460 PRINT AT(0,0);"   ":PRINT AT(1,0);"   "
 2470 PRINT AT(14,0);"Sie haben aber insgesamt",K,"Punkte"
 2480 PRINT AT(16,0);"erhalten.":GOTO 2310
 2490 WINDOW: CLS: RESTORE 190:GOSUB 2590: RESTORE 260: GOSUB 2590
 2500 PRINT "ENDE DES PROGRAMMES"
 2510 END
 2520!***********************************
 2530!    UNTERPROGAMME
 2540!***********************************
 2550 PRINT AT(23,30);"> ENTER <"
 2560 C$=INKEY$:IF C$="" THEN GOTO 2560
 2570 CLS:IF C$=CHR$(7)THEN PRINT "NR=0001":PAUSE 50
 2575 RETURN
 2580!
 2590 K=1: N=1
 2600 READ C: IF C=0 THEN GOTO 2650: ELSE IF C<0 THEN M=-C: GOTO 2640
 2610 READ M: IF C<961 THEN I=C: GOTO 2640
 2620 IF C<>962 THEN K=40
 2630 IF C>961 THEN READ I,N: I=I+K-1
 2640 FOR J=1 TO N: I=I-K: C=I-5120: POKE C,M: BEEP: NEXT J: GOTO 2590
 2650 RETURN
 2660!
 2670!
 2680 CLS:A=A0:B=B0:U=U0:IY=JOYST$(1)
 2690 PRINT AT(0,0);"PUNKTE:",K:PRINT AT(0,19);"",U,""
 2700 PRINT AT(0,28);"Sie haben":PRINT AT(1,28);"noch",T,"Leben":RETURN
 2710!
 2720!
 2730 Q=PEEK(40*A+B-5120):GOSUB 2780:IY=JOYST$(1):IF IY<1 OR IY>8 THEN RETURN
 2740 ON IY GOSUB 2820,2760,2750,2860,2750,2750,2750,2840
 2750 RETURN
 2760 IF B<39 THEN B=B+1
 2770 Q=PEEK(40*A+B-5120):PRINT AT(A,B-1);"-"
 2780 IF Q=36 THEN K=K+8:PRINT AT(0,6);K:PRINT AT(ABS(J),16);"-":J=J-1:RETURN
 2790 IF Q=45 THEN RETURN
 2800 IF Q=196 THEN RETURN
 2810 GOTO 2880
 2820 IF B>0 THEN B=B-1
 2830 Q=PEEK(40*A+B-5120):PRINT AT(A,B);"-":GOTO 2780
 2840 IF A>1 THEN A=A-1
 2850 Q=PEEK(40*A+B-5120):PRINT AT(A,B);"":PRINT AT(A+1,B);"-":GOTO 2780
 2860 IF A<23 THEN A=A+1
 2870 Q=PEEK(40*A+B-5120):PRINT AT(A,B);"":PRINT AT(A-1,B);"-":GOTO 2780
 2880 FOR F=0 TO 30:PRINT AT(A,B);"":BEEP:BEEP:PRINT AT(A,B);"":BEEP:BEEP
 2890 NEXT F:T=T-1:IF T=0 THEN GOTO 2400
 2900 PRINT AT(0,31);T
 2910 ON SP GOTO 680,930,1130,1330,1520,1740,2030,2130