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

    1 POKE 862,1:CLEAR 70:DIM R(15),Z(8),S(8),F(8,8):O$="**O T H E L L O**"
    2 WINDOW:CLS:OUT 136,4:PRINT O$;" IST EIN STRATEGIESPIEL";STRING$(17,"");
    3 PRINT " FUER 2 SPIELER.":PRINT:PRINT "JEDER SPIELER MUSS VERSUCHEN, DURCH
    4 PRINT "SETZEN SEINER SPIELSTEINE MOEGLICHST":PRINT "VIELE GEGNERISCHE STEINE ";
    5 PRINT "ZU GEWINNEN.":PRINT "DIES ERFOLGT DURCH BILDUNG WAAGERECHTER";
    6 PRINT ",SENKRECHTER UND DIAGONALER KETTEN.":PRINT "EINE KETTE BEGINNT UND ENDET";
    7 PRINT " STETS MIT":PRINT "EINEM EIGENEN STEIN. DIE ZWISCHEN DIESEN";
    8 PRINT "BEIDEN EINGESCHLOSSENEN GEGNERISCHEN":PRINT "STEINE WERDEN IN EIGENE";
    9 PRINT " UMGEWANDELT UND EINEN ZUG LANG MARKIERT.
   10 PRINT:PRINT "DAS SPIEL IST BEENDET,WENN DAS SPIEL-
   11 PRINT "FELD VOLL BELEGT IST ODER NUR NOCH":PRINT "STEINE EINES SPIELERS ";
   12 PRINT "VORHANDEN SIND.":GOSUB 100:CLS:PRINT "DAS SETZEN EINES STEINES ERFOLGT";
   13 PRINT " DURCH  EINGABE VON ZEILENBUCHSTABEN UND":PRINT "SPALTENZIFFER.
   14 PRINT "EINGABE VON 0 BEDEUTET ZUGVERZICHT.":PRINT "DIE EINGABEBEREITSCHAFT";
   15 PRINT " WIRD DURCH":PRINT "BLINKEN DES SPIELSYMBOLS ANGEZEIGT.
   16 A$="VARIANTE":L$="SPIELER ":K$="COMPUTER":PRINT:PRINT A$;" 1: ";L$;"GEGEN ";K$
   17 PRINT A$;" 2: ";L$;"GEGEN ";L$:A=3:B=6:C=3:D=6
   18 C$="SYMBOL FUER ":GOSUB 102:R=VAL(Z$):IF R<1 OR R>2 THEN 18
   19 PRINT:PRINT:PRINT C$;:IF R=1 THEN PRINT K$;:ELSE PRINT L$;"1";
   20 PRINT ": 0":PRINT C$;L$;:IF R=2 THEN PRINT "2";
   21 PRINT ": X":PRINT:PRINT "BEGINN MIT 0 ODER X ?"
   22 GOSUB 102:Y$=Z$:IF Y$<>"0"AND Y$<>"X"THEN 22
   23 DATA 0,1,0,-1,1,1,1,0,1,-1,-1,1,-1,0,-1,-1:A$="  1 2 3 4 5 6 7 8
   24 FOR I=1 TO 8:READ Z(I):READ S(I):NEXT:Z$=STRING$(15,""):OUT 136,0
   25 E=2:F=2:WINDOW:CLS:B$=" ":C$="         
   26 D$=" ":PRINT A$:PRINT B$:FOR I=1 TO 7:PRINT C$:PRINT D$:NEXT:PRINT C$:PRINT B$:PRINT A$
   27 FOR I=1 TO 8:FOR J=0 TO 18 STEP 18:PRINT AT(I+I,J);CHR$(64+I):NEXT J,I
   28 PRINT AT(8,8);"0X":PRINT AT(10,8);"X0":WINDOW 0,23,20,39:GOTO 39
   29 PRINT O$:T$=V$:GOSUB 30:WINDOW 21,23,1,39:GOTO 45
   30 PRINT ""+Z$+"":PRINT " ";T$;SPC(14-LEN(T$));"":PRINT ""+Z$+"
   31 PRINT " ZUG   :       ":PRINT "";SPC(15);"":PRINT " GEWINN:       
   32 PRINT "";SPC(15);"":PRINT " GESAMT:       ":PRINT ""+Z$+"":RETURN
   33 Y$="X":H=11:IF S=1 THEN Y$="0":H=1
   34 FOR L=2 TO 4 STEP 2:PRINT AT(H+L,29);"    ":NEXT
   35 PRINT AT(H,33);Y$:PAUSE 1:PRINT AT(H,33);" ":Z$=INKEY$:PAUSE 1:IF Z$=""THEN 35
   36 PRINT AT(H+2,30);Z$:CLS:POKE-4279,32:PRINT AT(H,33);Y$:IF G=0 THEN RETURN
   37 FOR K=1 TO G:II=INT(R(K)/10):JJ=R(K)-10*II:IF II=8 THEN U$="":ELSE U$=""
   38 PRINT AT(2*II+1,2*JJ);U$:NEXT:RETURN
   39 I=0:F(4,4)=1:F(5,5)=1:F(4,5)=-1:F(5,4)=-1:IF Y$="X"THEN I=1
   40 V=R+I:IF R=2 THEN V=V+1
   41 IF V<3 THEN T$=K$+"   0"
   42 V$=L$:IF V>2 THEN T$=V$+"1":V$=V$+"2"
   43 IF V=1 OR V=3 THEN S=1:ELSE S=2
   44 GOSUB 30:GOTO 29
   45 A$="":B$="":C$="":D$="":IF V<3 AND S=1 THEN H=1:GOTO 82
   46 POKE-4239,32:GOSUB 33
   47 IF Z$="0"THEN PRINT "ZUGVERZICHT!":BEEP:Y=Y+1:GOTO 80
   48 IF ASC(Z$)<65 OR ASC(Z$)>72 THEN 53
   49 S$=INKEY$:IF S$=""THEN 49
   50 IF ASC(S$)<49 OR ASC(S$)>56 THEN 53
   51 PRINT AT(H+2,32);S$:Z=ASC(Z$)-64:Q=ASC(S$)-48:IF F(Z,Q)=0 THEN 54:ELSE PRINT "BESETZT
   52 BEEP:GOTO 46
   53 PRINT "EINGABEFEHLER":GOTO 52
   54 FOR I=Z-1 TO Z+1:FOR J=Q-1 TO Q+1:IF J=9 OR I=9 THEN 56
   55 IF(J<>Q OR I<>Z)AND(S+F(I,J)=0 OR S+F(I,J)=3)THEN 59
   56 NEXT J,I
   57 IF X=1 THEN T=0:RETURN
   58 PRINT "KEIN GEGNERKONTAKT":GOTO 52
   59 IF S=1 THEN F(Z,Q)=1:ELSE F(Z,Q)=-1
   60 L=1:G=0:T=1:FOR I=1 TO 8:U=Z+Z(I):W=Q+S(I):IF U=0 OR U=9 OR W=0 OR W=9 THEN 70
   61 IF F(Z,Q)*F(U,W)<>-1 THEN 70
   62 M=1:FOR J=1 TO 7:K=U+Z(I):Y1=W+S(I):IF K=0 OR K=9 OR Y1=0 OR Y1=9 THEN 70
   63 PR=F(U,W)*F(K,Y1):IF PR=1 THEN M=M+1:GOTO 65
   64 IF PR=-1 THEN G=G+M:GOTO 66:ELSE 70
   65 U=U+Z(I):W=W+S(I):NEXT J
   66 IF X=1 THEN 70
   67 FOR K=1 TO J:W=Q+K*S(I):U=Z+K*Z(I):IF U=8 THEN U$="":ELSE U$=""
   68 PRINT AT(U+U+1,W+W);U$:PRINT AT(U+U,W+W);Y$:BEEP:R(L)=10*U+W:L=L+1
   69 F(U,W)=-F(U,W):NEXT K:Y=0
   70 NEXT I
   71 IF X=1 THEN RETURN
   72 IF G=0 THEN F(Z,Q)=0:PRINT "KEINE KETTE":GOTO 52
   73 PRINT AT(Z+Z,Q+Q);Y$:PRINT AT(H+4,29);G
   74 IF A=Z THEN A=A-1:IF A=0 THEN A=1
   75 IF B=Z THEN B=B+1:IF B=9 THEN B=8
   76 IF C=Q THEN C=C-1:IF C=0 THEN C=1
   77 IF D=Q THEN D=D+1:IF D=9 THEN D=8
   78 IF S=1 THEN E=E+G+1:F=F-G:ELSE E=E-G:F=F+G+1
   79 PRINT AT(7,29);E:PRINT AT(17,29);F:IF E=0 OR F=0 OR E+F=64 OR Y=2 THEN 93
   80 IF S=1 THEN S=2:ELSE S=1
   81 IF Y=2 THEN 79:ELSE 45
   82 X=1:O=0:R=1:Y$="0":GE=G:PRINT AT(3,30);"   ":PRINT AT(5,29);"   
   83 FOR N=A TO B:FOR P=C TO D:IF F(N,P)<>0 THEN 89
   84 Z=N:Q=P:GOSUB 54:F(N,P)=0:IF G>0 AND(N=0 OR N=8)THEN G=G+1
   85 IF G>0 AND(P=0 OR P=8)THEN G=G+1
   86 IF T=0 OR G<O THEN 89
   87 IF G>O THEN R=1:O=G
   88 M(R)=10*N+P:R=R+1:IF R>10 THEN R=10
   89 NEXT P,N:X=0
   90 IF O=0 THEN Z$="0":G=GE:GOSUB 37:GOTO 47
   91 K=INT(RND(1)*(R-1))+1:II=INT(M(K)/10):JJ=M(K)-10*II:Z$=CHR$(II+64)
   92 S$=CHR$(JJ+48):G=GE:GOSUB 36:GOTO 50
   93 CLS:B$="":IF E=F THEN A$="UNENTSCHIEDEN"
   94 PRINT "SPIELENDE":IF E>F AND V<3 THEN A$="TUT MIR LEID!
   95 IF(V>2 AND E<>F)OR F>E THEN A$="ICH GRATULIERE "
   96 IF V>2 AND F>E THEN B$=L$+"2"
   97 IF V>2 AND F<E THEN B$=L$+"1"
   98 IF V<3 AND F>E THEN B$="IHNEN"
   99 PRINT A$+B$:PAUSE 50:WINDOW:CLS:END
  100 PRINT AT(19,30);">ENTER<"
  101 Z$=INKEY$:IF Z$=""THEN 101:ELSE PRINT Z$;:RETURN
  102 PRINT SPC(23);"BITTE WAEHLEN: ";:GOTO 101