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

   10 A1$="GESCHICKLICHKEITSSPIEL":A9=2:A2$="BOALAB"
   20 A3$="DAS SCHLANGEN - LABYRINTH"
   30 REM INITIALWERTE =================IN
   40 BORDER A9:INK 8:PAPER 1:WINDOW:CLS
   50 GOSUB 80:GOTO 610
   60 REM UNTERPROGRAMME ===============UP
   70 REM TITELBILD --------------------UP
   80 PRINT AT(0,0);" ":PRINT AT(4,2);"",STRING$(34,""),""
   90 PRINT AT(5,2);"":PRINT AT(5,37);""
  100 PRINT AT(6,2);"",STRING$(34,""),""
  110 PRINT AT(5,3);A1$
  120 INK A9:PRINT AT(8,2);STRING$(36,"")
  130 FOR I=9 TO 13:PRINT AT(I,2);"":PRINT AT(I,37);"":NEXT I
  140 PRINT AT(14,2);STRING$(36,"")
  150 INK 8:PRINT AT(10,4);A2$:PRINT AT(12,36-LEN(A3$));A3$
  160 REM >ENTER< ---------------------UP
  170 PRINT INK 4;AT(22,31);">ENTER<"
  180 T$=INKEY$:IF T$=""THEN 180
  190 IF T$=CHR$(13)THEN PRINT AT(20,27);STRING$(11," "):RETURN
  200 GOSUB 220:GOTO 180
  210 REM WIE BITTE ? -----------------UP
  220 PRINT INK 2;AT(20,27);"WIE BITTE ?":RETURN
  230 REM J/N ABFRAGE -----------------UP
  240 PRINT INK 4;AT(22,(34-LEN(KY$)));KY$," ? J"
  250 T$=INKEY$:IF T$=""THEN 250
  260 PRINT INK 2;AT(22,37);T$
  270 IF ASC(T$)=74 OR ASC(T$)=13 THEN T=1:PRINT AT(20,27);STRING$(11," "):RETURN
  280 IF ASC(T$)=78 THEN T=2:PRINT AT(20,27);STRING$(11," "):RETURN
  290 GOSUB 220:PAUSE 10:GOTO 240
  300 REM RICHTUNG SCHLANGE -----------UP
  310 IF C=-1 THEN C=40:RETURN
  320 IF C=40 THEN C=1 :RETURN
  330 IF C=1  THEN C=-40:RETURN
  340 IF C=-40 THEN C=-1 :RETURN
  350 RETURN
  360 REM RICHTUNG MONSTER ------------UP
  370 IF D=40 THEN D=-1:RETURN
  380 IF D=-1 THEN D=-40:RETURN
  390 IF D=-40 THEN D=1 :RETURN
  400 IF D=1  THEN D=40:RETURN
  410 RETURN
  420 REM SPRUNG SCHLANGE -------------UP
  430 A3=A
  440 A=A-(((X=8)-(X=9))*(ABS(C)=40)+((X=11)-(X=10))*40*(ABS(C)=1))*2
  450 IF A>A1+880 OR A<A1 OR PEEK(A)<>32 THEN A=A3
  460 IF A=A3 THEN RETURN
  470 LS=LA+(C=1)*(X=11)+(C=-1)*(X=10)+(C=40)*(X=9)+(C=-40)*(X=8)
  480 IF LS=LA THEN LS=LA-1
  490 LA=LS : RETURN
  500 REM SPRUNG MONSTER --------------UP
  510 Q=1 : D1=D : GOSUB 370: D2=D : D=D1
  520 W=LA-LB : IF W>1 THEN W=1
  530 IF W<-1 THEN W=-1
  540 B4=B : LB=LB+W : B=B+W*D2*2 : IF PEEK(B)=255 THEN B=B4:LB=LB-W
  550 RETURN
  560 REM RUNDENENDE ------------------UP
  570 S1=S1+S : S=0 : G=H : H=201
  580 IF G=201 THEN H=58
  590 V1=V : RETURN
  600 REM HAUPTPROGRAMM ===============HP
  610 PAPER 1:WINDOW:CLS
  620 BORDER 1
  630 H1=0
  640 S=0 : S1=0 : INK 2 : Q=0
  650 A$=""
  660 B$="    "
  670 FOR I=0 TO 6 STEP 2
  680 PRINT AT(I,0);A$
  690 PRINT AT(I+1,0);B$
  700 PRINT AT(20-I,0);B$
  710 PRINT AT(21-I,0);A$
  720 PRINT AT(I/2+9,0);"              "
  730 A$=LEFT$(A$,15)+"    "+RIGHT$(A$,15)
  740 A$=LEFT$(A$,I+2)+""+MID$(A$,I+4)
  750 A$=LEFT$(A$,31-I)+""+MID$(A$,33-I)
  760 B$=LEFT$(B$,I+3)+""+MID$(B$,I+5)
  770 B$=LEFT$(B$,30-I)+""+MID$(B$,32-I)
  780 NEXT I
  790 B$=LEFT$(B$,9)+""+RIGHT$(B$,9)
  800 PRINT AT(8,0);B$
  810 PRINT AT(13,0);B$
  820 V=224 : G=58 : H=201 : V1=V : A1=-5121
  830 FOR A=A1 TO A1+880
  840 IF PEEK(A)=201 THEN POKE A-1024,48
  860 B1=32 : LA=1 : A=A1+819
  870 LB=1 : B=A1+363 : A2=0 : C=40
  880 O=A1+INT(RND(1)*800)
  890 IF PEEK(O)<>201 AND PEEK(O)<>58 THEN 880
  900 IF PEEK(O)=H THEN V1=V1-1
  910 POKE O,207 : POKE O-1024,80 : V=V-1
  920 IF S>1 THEN RETURN
  930 D=-1
  940 IF A2=H THEN S=S+1
  950 IF PEEK(A+C)=255 THEN GOSUB 310
  960 IF A2<>H AND A2<>G THEN 1010
  970 POKE A,G
  980 IF G=201 THEN POKE A-1024,48
  990 IF G=58  THEN POKE A-1024,64
 1000 GOTO 1020
 1010 POKE A,32
 1020 IF S=V1 THEN GOSUB 570
 1030 X=PEEK(36)
 1040 IF X<>0 AND PEEK(A+C)=32 THEN GOSUB 430
 1050 A=A+C
 1060 IF A=O THEN S1=S1+5 : GOSUB 880
 1070 A2=PEEK(A)
 1080 IF A2=38 THEN 1190
 1090 POKE A,47 : POKE A-1024,16
 1100 IF PEEK(B+D)=255 THEN GOSUB 370
 1110 POKE B,B1
 1120 IF B1=201 THEN POKE B-1024,48
 1130 IF B1=207 THEN POKE B-1024,80
 1140 IF B1=58  THEN POKE B-1024,64
 1150 IF B1=32 AND Q=0 AND LA<>LB AND PEEK(B+D)<>255 THEN GOSUB 510
 1160 IF B1<>32 THEN Q=0
 1170 B=B+D : IF PEEK(B)=47 THEN 1190
 1180 B1=PEEK(B) : POKE B,38 : POKE B-1024,16 : GOTO 940
 1190 POKE A,42 : POKE A-1024,144 : BEEP
 1200 S=S+S1 : INK 8
 1210 PRINT AT(9,12);"SCORE"
 1220 PRINT AT(9,18);S
 1230 IF H1<S THEN H1=S
 1240 PRINT AT(12,10);"HI-SCORE"
 1250 PRINT AT(12,19);H1
 1260 KY$=INKEY$:GOSUB 170
 1270 KY$="FORTSETZEN":GOSUB 240:CLS
 1280 IF T=1 THEN 640
 1290 CLS:END