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

    5 CLEAR 500:GOSUB 15000
    9 GOSUB 6000:GOTO 4060
   10 PRINT AT(KZ,KS);"":PRINT AT(KZ+1,KS);" ":PRINT AT(KZ+2,KS-1);""
   20 PRINT AT(KZ+3,KS-1);"":PRINT AT(KZ+4,KS-1);""
   30 PRINT AT(KZ+5,KS-1);"":KQ=0:RETURN
   40 PRINT AT(KZ+4,KS-1);" ":PRINT AT(KZ+5,KS-1);" "
   50 KQ=ME:RETURN
   60 PRINT AT(KZ,KS);" ":PRINT AT(KZ+1,KS);"  ":PRINT AT(KZ+2,KS-1);" "
   70 PRINT AT(KZ+3,KS-1);" ":PRINT AT(KZ+4,KS);"":PRINT AT(KZ+5,KS);" "
   80 P1=200:KQ=3:AZ=KZ+2:AS=KS+4:RETURN
   90 PRINT AT(KZ+3,KS);"":PRINT AT(KZ+4,KS-1);" ":PRINT AT(KZ+5,KS-1);" "
  100 P1=200:KQ=4:AS=KS+4:AZ=KZ+3:RETURN
  110 PRINT AT(KZ,KS);" ":PRINT AT(KZ+1,KS);"   ":PRINT AT(KZ+2,KS-1);"   " 
  120 PRINT AT(KZ+3,KS-1);" ":PRINT AT(KZ+4,KS-1);" ":P1=600
  130 PRINT AT(KZ+5,KS-1);"  ":KQ=5:AS=KS+5:AZ=KZ+5:RETURN
  140 PRINT AT(KZ,KS+3);"":P1=400
  150 PRINT AT(KZ+1,KS);"":PRINT AT(KZ+2,KS-1);"   "
  160 PRINT AT(KZ+3,KS-1);"  ":PRINT AT(KZ+4,KS-1);"   "
  170 PRINT AT(KZ+5,KS-1);"  ":KQ=6:AS=KS+4:AZ=KZ:RETURN
  180 PRINT AT(KZ,KS-2);"  ":PRINT AT(KZ+1,KS-1);"":PRINT AT(KZ+2,KS);"  "
  190 PRINT AT(KZ+4,KS);"":PRINT AT(KZ+5,KS);"":KQ=7:AS=KS+3:AZ=KZ:P1=300
  200 RETURN
  210 PRINT AT(KZ,KS);" ":PRINT AT(KZ+1,KS);"   ":P1=800
  220 PRINT AT(KZ+2,KS-1);"   ":PRINT AT(KZ+3,KS-1);" "
  230 PRINT AT(KZ+4,KS-1);"":PRINT AT(KZ+5,KS-3);"":KQ=8:AS=KS+3
  240 AZ=KZ+3:RETURN
  250 WINDOW KZ,KZ+5,KS-1,KS+2:CLS:WINDOW
  260 IF KQ=1 THEN KS=KS-1:ELSE KS=KS+1
  261 IF KS>RS-2 THEN KS=RS-2
  262 IF KS<3 THEN KS=3
  263 IF KS>33 THEN KS=33
  270 RETURN 
  280 PRINT AT(KZ,KS+1);" ":PRINT AT(KZ+1,KS+1);" ":PRINT AT(KZ+2,KS);"    "
  290 PRINT AT(KZ+3,KS);" ":PRINT AT(KZ+5,KS+1);" ":RETURN
  300 PRINT AT(KZ+3,KS);"    ":RETURN
  310 PRINT AT(KZ+3,KS);"  ":PRINT AT(KZ+4,KS);"  ":PRINT AT(KZ+5,KS);"     "
  320 RETURN
  330 PRINT AT(KZ,KS+3);" ":PRINT AT(KZ+3,KS);"    ":PRINT AT(KZ+4,KS+2);"  "
  340 RETURN
  350 PRINT AT(KZ,KS-2);" ":PRINT AT(KZ+1,KS-1);" "
  360 RETURN
  370 PRINT AT(KZ+3,KS);"    ":PRINT AT(KZ+5,KS-3);"    ":RETURN
  400 PRINT AT(RZ,RS);"":PRINT AT(RZ+1,RS-2);" ":PRINT AT(RZ+2,RS-1);""
  410 PRINT AT(RZ+3,RS+1);"":PRINT AT(RZ+4,RS);"":PRINT AT(RZ+5,RS);""
  420 RQ=0:RETURN
  430 PRINT AT(RZ+4,RS);" ":PRINT AT(RZ+5,RS);" "
  440 RQ=RE:RETURN
  450 PRINT AT(RZ,RS-1);" ":PRINT AT(RZ+1,RS-3);"   ":PRINT AT(RZ+2,RS-3);"
  460 PRINT AT(RZ+3,RS);" ":PRINT AT(RZ+4,RS);"":PRINT AT(RZ+5,RS-1);" "
  470 PRINT AT(RZ+2,RS+1);" ":RQ=3:ZZ=RZ+2:ZS=RS-4:P2=200:RETURN
  480 PRINT AT(RZ+3,RS-3);"":PRINT AT(RZ+4,RS);" ":PRINT AT(RZ+5,RS);" "
  490 P2=200:RQ=4:ZZ=RZ+3:ZS=RS-4:RETURN
  500 PRINT AT(RZ,RS);" ":PRINT AT(RZ+1,RS-2);"   ":P2=600
  510 PRINT AT(RZ+2,RS-1);"  ":PRINT AT(RZ+3,RS-1);" "
  520 PRINT AT(RZ+4,RS-1);" ":PRINT AT(RZ+5,RS-4);"  "
  530 RQ=5:ZZ=RZ+5:ZS=RS-5:RETURN
  540 PRINT AT(RZ,RS-3);"":PRINT AT(RZ+1,RS-2);"":PRINT AT(RZ+2,RS-1);"  "
  550 PRINT AT(RZ+3,RS-3);"  ":PRINT AT(RZ+4,RS-3);"   ":P2=400
  560 PRINT AT(RZ+5,RS);"  ":RQ=6:ZZ=RZ:ZS=RS-4:RETURN
  570 PRINT AT(RZ,RS);"  ":PRINT AT(RZ+1,RS-2);"":P2=300
  580 PRINT AT(RZ+2,RS-1);" ":PRINT AT(RZ+4,RS);"":PRINT AT(RZ+5,RS);""
  590 RQ=7:ZZ=RZ:ZS=RS-3:RETURN
  600 PRINT AT(RZ,RS);" ":PRINT AT(RZ+1,RS-2);"   ":PRINT AT(RZ+2,RS-1);"  "
  610 PRINT AT(RZ+3,RS-2);" ":PRINT AT(RZ+4,RS);"":P2=800
  620 PRINT AT(RZ+5,RS);"":RQ=8:ZZ=RZ+3:ZS=RS-3:RETURN
  630 WINDOW RZ,RZ+5,RS-2,RS+1:CLS:WINDOW:IF RE=1 THEN RS=RS-1:ELSE RS=RS+1
  631 IF RS<KS+2 THEN RS=KS+2
  632 IF RS<7 THEN RS=7
  633 IF RS>35 THEN RS=35
  650 RETURN
  660 PRINT AT(RZ,RS-1);" ":PRINT AT(RZ+2,RS-3);"  ":PRINT AT(RZ+3,RS);" "
  670 PRINT AT(RZ+5,RS-1);" ":RETURN
  680 PRINT AT(RZ+3,RS-3);"    ":RETURN
  690 PRINT AT(RZ+3,RS-1);"  ":PRINT AT(RZ+4,RS-1);" ":PRINT AT(RZ+5,RS-4);"   "
  700 RETURN
  710 PRINT AT(RZ,RS-3);" ":PRINT AT(RZ+3,RS-3);"   "
  720 PRINT AT(RZ+4,RS-3);"  ":RETURN
  730 PRINT AT(RZ,RS+2);" ":PRINT AT(RZ+1,RS+1);" ":RETURN
  740 PRINT AT(RZ+3,RS-2);"   ":PRINT AT(RZ+5,RS+2);"  ":RETURN
  800 IF AZ*AS=0 THEN 850:ELSE PE=PEEK(AZ*40+AS-5120)
  810 IF PE=140 OR PE=192 OR PE=161 THEN BEEP:PA=PA+P1:GOSUB 900
  820 IF PE=159 AND AZ<>16 THEN BEEP:PA=PA+P1:GOSUB 900
  840 PRINT INK 4;AT(4,5);"POINTS-A",PA
  850 IF ZZ*ZS=0 THEN 890:ELSE PE=PEEK(ZZ*40+ZS-5120)
  860 IF PE=140 OR PE=159 OR PE=161 THEN BEEP:PB=PB+P2:GOSUB 950
  870 IF PE=192 AND ZZ<>16 THEN BEEP:PB=PB+P2:GOSUB 950
  880 PRINT INK 3;AT(4,25);"POINTS-B",PB
  890 IF WA>=3 OR WB>=3 THEN GOSUB 7000
  895 RETURN
  900 IF PE=140 OR PE=161 THEN A=2:ELSE A=1
  905 IF A=1 THEN PRINT INK 2;AT(1,14);"HALF POINT"
  910 IF A=2 THEN PRINT INK 2;AT(1,14);"FULL POINT"
  915 WA=WA+A/2:PRINT INK 4;AT(1,2);STRING$(2*WA,"*")
  925 PAUSE 5:PRINT AT(1,14);"          ":RETURN
  950 IF PE=140 OR PE=161 THEN A=2:ELSE A=1
  955 IF A=1 THEN PRINT INK 2;AT(1,14);"HALF POINT"
  960 IF A=2 THEN PRINT INK 2;AT(1,14);"FULL POINT"
  965 WB=WB+A/2:PRINT INK 3;AT(1,33);STRING$(2*WB,"+")
  975 PAUSE 5:PRINT AT(1,14);"          ":RETURN
 1000 PRINT AT(KZ-2,KS);"":PRINT AT(KZ-1,KS);" ":PRINT AT(KZ,KS);"":P1=800
 1010 PRINT AT(KZ+1,KS-1);"":PRINT AT(KZ+2,KS-1);"   "
 1020 WINDOW KZ+3,KZ+5,KS-1,KS+1:CLS:WINDOW
 1030 KQ=9:AZ=KZ+2:AS=KA+5:RETURN
 1040 PRINT AT(KZ-1,KS);"":PRINT AT(KZ,KS);"":PRINT AT(KZ+1,KS-1);"  "
 1050 PRINT AT(KZ+2,KS-1);"  ":PRINT AT(KZ+3,KS-1);"":P1=800
 1060 PRINT AT(KZ+4,KS-1);"  ":PRINT AT(KZ+5,KS-1);"  "
 1070 KQ=10:AZ=KZ+2:AS=KS+5:RETURN
 1080 WINDOW KZ,KZ+5,KS-1,KS+2:CLS:P1=1000:WINDOW
 1090 PRINT AT(KZ+4,KS);"  ":PRINT AT(KZ+5,KS);" "
 1100 KQ=11:AZ=KZ+5:AS=KS+7:RETURN
 1110 WINDOW KZ,KZ+5,KS-1,KS+2:CLS:P1=600:WINDOW
 1120 PRINT AT(KZ-4,KS);" ":PRINT AT(KZ-3,KS);" ":PRINT AT(KZ-2,KS);" "
 1130 PRINT AT(KZ-1,KS);" ":PRINT AT(KZ,KS);"  "
 1140 KQ=12:AZ=KZ:AS=KS+5:RETURN
 1150 WINDOW KZ-2,KZ+2,KS-1,KS+4:CLS:WINDOW:KQ=1:GOTO 250
 1160 WINDOW KZ-1,KZ+3,KS-1,KS+4:CLS:WINDOW:KQ=2:GOTO 250
 1170 WINDOW KZ+4,KZ+5,KS,KS+6:CLS:WINDOW:RETURN
 1180 WINDOW KZ-4,KZ,KS,KS+4:CLS:WINDOW:RETURN
 1200 PRINT AT(RZ-2,RS);"":PRINT AT(RZ-1,RS-2);" ":P2=800
 1210 PRINT AT(RZ,RS-1);"":PRINT AT(RZ+1,RS-3);""
 1220 PRINT AT(RZ+2,RS-4);"   ":WINDOW RZ+3,RZ+5,RS-1,RS+1:CLS:WINDOW
 1230 RQ=9:ZZ=RZ+2:ZS=RS-5:RETURN
 1240 PRINT AT(RZ-1,RS-1);"":PRINT AT(RZ,RS-1);"":P2=800
 1250 PRINT AT(RZ+1,RS-2);" ":PRINT AT(RZ+2,RS-4);"  "
 1260 PRINT AT(RZ+3,RS-1);"":PRINT AT(RZ+4,RS);"  ":PRINT AT(RZ+5,RS);"  "
 1265 RQ=10:ZZ=RZ+2:ZS=RS-5:RETURN
 1270 WINDOW RZ,RZ+5,RS-2,RS+1:CLS:P2=1000:WINDOW
 1280 PRINT AT(RZ+4,RS-4);"   ":PRINT AT(RZ+5,RS-6);"  "
 1290 RQ=11:ZZ=RZ+5:ZS=RS-7:RETURN
 1300 WINDOW RZ,RZ+5,RS-2,RS+1:CLS:P2=600:WINDOW
 1310 PRINT AT(RZ-4,RS-2);" ":PRINT AT(RZ-3,RS-1);""
 1320 PRINT AT(RZ-2,RS-1);"":PRINT AT(RZ-1,RS-3);""
 1330 PRINT AT(RZ,RS-4);"  ":RQ=12:ZZ=RZ:ZS=RS-5:RETURN
 1340 WINDOW RZ-2,RZ+2,RS-4,RS+1:CLS:RE=1:WINDOW:GOTO 630
 1350 WINDOW RZ-1,RZ+3,RS-4,RS+1:CLS:WINDOW:RE=2:GOTO 630
 1360 WINDOW RZ+4,RZ+5,RS-6,RS:CLS:WINDOW:RETURN
 1370 WINDOW RZ-4,RZ,RS-4,RS:CLS:WINDOW:RETURN
 4000 IF KQ<>0 THEN 5020
 4010 GOSUB 10:FOR I=1 TO ZN(SN):ME=JOYST$(1):IF ME<1 OR ME>24 THEN NEXT
 4025 IF ME=LE AND ME>18 THEN 4050
 4028 IF ME=LE AND ME>2 THEN ME=0
 4030 ON ME GOSUB 40,40,200,90,210,110,200,60,180,140
 4040 IF ME>16 THEN ON ME-16 GOSUB 1000,1040,200,1080,200,200,200,1110
 4050 GOSUB 800:LE=ME:IF WW<0 THEN GOTO 7500
 4060 IF RQ<>0 THEN 5000
 4065 GOSUB 400:IF RS-KS>7 THEN RE=INT(RND(1)*2+1):GOSUB 430:GOTO 4000
 4070 RE=INT(RND(1)*RN(SN)+1)
 4080 ON SN GOSUB 4120,4120,4120,4120,4150,4150,4150,4150,4230,4230,4230,4230
 4100 GOTO 4000
 4120 ON RE GOSUB 430,430,450,480,500,540,570,600,1200,1240,1270,1300
 4130 RETURN
 4150 ON RS-KS GOTO 4160,4170,4180,4190,4200,4210,4220
 4160 ON RE GOSUB 430,430,570,570,570:RETURN
 4170 ON RE GOSUB 430,430,600,600,540,540:RETURN
 4180 ON RE GOSUB 430,430,480,570,480,1300:RETURN
 4190 ON RE GOSUB 430,430,450,540,570,500:RETURN
 4200 ON RE GOSUB 430,1200,1240,540,1300,500:RETURN
 4210 ON RE GOSUB 430,430,1300,1300,1270,1270:RETURN
 4220 ON RE GOSUB 430,430,1270,1270,1270:RETURN
 4230 IF KQ>0 THEN 4150
 4240 ON RE GOSUB 540,540,1300,1300,570,570:RETURN
 5000 ON RQ GOSUB 630,630,660,680,690,710,730,740,1340,1350,1360,1370
 5010 RQ=0:ZZ=0:ZS=0:GOSUB 400:GOTO 4000
 5020 ON KQ GOSUB 250,250,280,300,310,330,350,370,1150,1160,1170,1180
 5030 KQ=0:AS=0:AZ=0:GOSUB 10:GOSUB 800:IF WW<0 THEN GOTO 7500
 5040 GOTO 4060
 6000 KZ=14:KS=15:WINDOW:CLS:PA=0:PB=0:WA=0:WB=0:PW=0
 6010 SN=1:RZ=14:RS=25: GOSUB 10:GOSUB 400:PRINT INK 4;AT(22,1);" 1. DAN!"
 6020 DIM ZN(12),RN(12)
 6030 DATA 100,50,20,5,80,40,20,10,60,30,15,5
 6040 DATA 18,15,13,13,9,8,7,6,9,8,7,6
 6050 RESTORE 6030:FOR I=1 TO 12:READ ZN(I):NEXT
 6060 FOR I=1 TO 12:READ RN(I):NEXT
 6070 RETURN
 7000 WW=WA-WB:IF WW<0 THEN RETURN
 7005 IF WW>1 THEN SN=SN+1
 7010 WINDOW:WW=0:KS=15:RS=25:CLS:GOSUB 10:GOSUB 400:WA=0:WB=0:ZS=0:AS=0
 7015 IF SN>12 THEN WW=-1:RETURN
 7020 PW=PW+PA-PB+SN*100:PA=0:PB=0
 7030 PRINT INK 4;AT(23,1);"STAND AT:",PW:PRINT INK 4;AT(22,1);STR$(SN),". DAN!"
 7040 RETURN
 7500 PW=PW+PA-PB:PA=0:PB=0:IF PW<0 THEN PW=0
 7510 WINDOW:CLS
 7520 PRINT:PRINT:PRINT
 7530 PRINT "Sie erreichten Spielniveau";SN;"."
 7540 PRINT "Ihre Punktzahl:";PW
 7550 IF PW<=0 THEN 7620
 7560 PRINT "Tragen Sie sich in die Punktetabelle"
 7570 INPUT "ein--->";PW$
 7580 FOR I=1 TO 9:IF PW<=PW(I)THEN NEXT
 7590 IF I>9 THEN 7620
 7600 FOR J=9 TO I+1 STEP-1:PW(J)=PW(J-1):PW$(J)=PW$(J-1):NEXT
 7610 PW(I)=PW:PW$(I)=PW$
 7620 FOR I=1 TO 9
 7630 PRINT AT(I+7,1);I,".)"
 7640 PRINT INK 4;AT(I+7,8);PW$(I)
 7650 PRINT INK 7;AT(I+7,30);PW(I)
 7660 NEXT:PRINT INK 2;AT(23,30);">ENTER<"
 7670 IF PEEK(36)<>13 THEN 7670
 7680 WINDOW:CLS:KS=15:RS=25:GOSUB 10:GOSUB 400:ZZ=0:ZS=0:AZ=0:AS=0
 7685 PRINT INK 4;AT(22,1);" 1. DAN!"
 7690 WW=0:PA=0:PB=0:WA=0:WB=0:PW=0:PW$="":SN=1:GOTO 4060
 8000 WINDOW:CLS:END
15000 PAPER 1:BORDER 2:WINDOW:CLS:OUT 136,0:CLS
15010 KZ=6:RZ=6:KS=15:RS=25
15020 DATA "Schritt zurueck","Schritt vor","Stich zur Mitte","Fussschlag"
15030 DATA "Fussstich","Sprung mit Schlag zum Kopf","Kopfstich und Ausweichen"
15040 DATA "Tiefstich zur Mitte","Sprung zurueck mit Fusstich"
15050 DATA "Sprung vor mit Fusstich","Fallschlag","Sprung zum Kopf"
15060 DIM A$(12),B$(12):RESTORE 15020
15070 FOR I=1 TO 12:READ A$(I):NEXT
15080 PRINT:PRINT:PRINT:PRINT:PRINT:INK 4
15090 PRINT "                   "
15100 PRINT "                      "
15110 PRINT "                "
15120 PRINT "                     "
15130 PRINT "                     "
15140 PRINT:PRINT:PRINT:PRINT
15150 INK 8:PRINT "Original fuer KC87 von":PRINT
15160 PRINT "M I C H A E L  S I E D E N T O P F"
15170 PRINT "Fr.-A.-Sorge-Str. 33"
15180 PRINT "D r e s d e n"
15190 PRINT "":PRINT "   "
15200 PRINT "   "
15210 INK 2:PRINT "                           >ENTER<"
15220 IF PEEK(36)<>13 THEN 15220
15230 INK 8:CLS:PRINT INK 2;AT(23,30);">ENTER<" 
15240 DATA "<-","->","","","/->","/->","/<-","/<-"
15250 DATA "<-/ESC","->/ESC","/ESC","/ESC"
15260 RESTORE 15240:FOR I=1 TO 12:READ B$(I):NEXT
15270 GOSUB 10:FOR I=1 TO 12:FOR J=1 TO 10:ME=I
15280 ON I GOSUB 40,40,60,90,110,140,180,210,1000,1040,1080,1110
15290 PRINT INK 6;AT(14,0);A$(I),"                   "
15295 FOR K=1 TO 30:IF PEEK(36)<>13 THEN NEXT:ELSE GOTO 15350
15300 PRINT INK 6;AT(16,0);B$(I),"                   "
15310 ON I GOSUB 250,250,280,300,310,330,350,370,1150,1160,1170,1180
15320 GOSUB 10
15330 NEXT J,I
15340 GOTO 15270
15350 KS=15:RS=25:WINDOW:CLS:PAUSE 2:PRINT INK 2;AT(23,30);">ENTER<"
15360 DIM C$(30):RESTORE 15370
15370 DATA 21,22,21,C6,24,D7,5B,31,21,43,77,7B,8A,11,4C,18,37,56,6C,DC,D7,22
15380 DATA A2,B1,34,87,22,21,12,12
15390 FOR I=1 TO 30:READ C$(I):NEXT
15400 D$="12345678ABCD"
15410 GOSUB 10:GOSUB 400:FOR I=1 TO 30
15420 ME=INSTR(LEFT$(C$(I),1),D$)
15430 RE=INSTR(RIGHT$(C$(I),1),D$)
15440 ON ME GOSUB 40,40,60,90,110,140,180,210,1000,1040,1080,1110
15450 ON RE GOSUB 430,430,450,480,500,540,570,600,1200,1240,1270,1300
15460 PRINT INK 6;AT(15,0);A$(ME),"                    "
15470 PRINT INK 6;AT(17,0);B$(ME),"                    "
15480 FOR J=1 TO 250:IF PEEK(36)<>13 THEN NEXT:ELSE GOTO 15550
15490 ON ME GOSUB 250,250,280,300,310,330,350,370,1150,1160,1170,1180
15500 ON RE GOSUB 630,630,660,680,690,710,730,740,1340,1350,1360,1370
15510 GOSUB 10:GOSUB 400
15520 NEXT I
15530 KS=15:RS=25:WINDOW:CLS:GOTO 15410
15550 WINDOW:CLS:RETURN