Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß) 10!TIC-TAC-TOE 15!nach Wurzel 9 und 10/87 20 GOSUB 3500 30 GOSUB 3000 40 GX=0: GO=0: UN=0 50 FOR N=1 TO AZ 60 PRINT AT(12,3);" Spiel-Nr.",N 70 GOSUB 2000 80 GOSUB 2500 90 GOSUB 2200 100 NEXT N 110 PRINT AT(23,5);"Noch ein Spiel? (J/N)" 120 A$=INKEY$ :IF A$="" THEN 120 130 IF A$="J" THEN 30 140 CLS 150 PRINT AT(15,5);"Es war mir ein Vergnuegen!":END 500!Gewinn-Blockierung 510 IF Z<4 THEN F=0: RETURN 520 P=SP 530 GOSUB 600 540 IF F<>0 THEN RETURN 550 P=-P 560 GOSUB 600 570 RETURN 600!Gewinnzug 610 J=1 620 U=A(D(J)): V=A(D(J+1)): W=A(D(J+2)) 630 IF U=V AND W=0 AND U=P THEN F=D(J+2): RETURN 640 IF V=W AND U=0 AND V=P THEN F=D(J): RETURN 650 IF W=U AND V=0 AND W=P THEN F=D(J+1): RETURN 660 IF J<21 THEN J=J+3: GOTO 620 670 F=0: RETURN 700!Gewinntest 710 GW=0: J=-2 720 J=J+3: IF J>23 THEN RETURN 730 U=A(D(J)): V=A(D(J+1)): W=A(D(J+2)) 740 IF U=0 THEN 720 750 IF U=V AND V=W THEN GW=U :ELSE 720 760 RETURN 800!Zugausfuehrung 810 J=INT((F-1)/3)+1: I=F-3*(J-1) 820 PRINT AT(11+3*J,2+3*I);SP$ 830 A(F)=SP: R(Z)=F 840 RETURN 1000!Lernzug 1010 M=-10000 1020 K=0 1030 FOR F=1 TO 9 1040 IF A(F)<>0 THEN 1090 1050 IF S(Z,F)<M THEN 1090 1060 IF S(Z,F)=M THEN K=K+1: H(K)=F: GOTO 1090 1070 IF S(Z,F)>M THEN M=S(Z,F): H(1)=F: K=1 1090 NEXT 1100 GOSUB 1750 1110 RETURN 1200!Lernprozess 1210 FOR J=1 TO Z-2 1220 S(J,R(J))=S(J,R(J))+A(R(J))*GW 1230 NEXT 1240 RETURN 1300!Zug Mr. Computer 1310 GOSUB 500 1320 IF F<>0 THEN RETURN 1330 GOSUB 1000 1340 RETURN 1700!Zufallszug 1710 K=0 1720 FOR F=1 TO 9 1730 IF A(F)=0 THEN K=K+1: H(K)=F 1740 NEXT 1750 Y=INT(RND(1)*K)+1 1760 F=H(Y) 1770 RETURN 1800!Zug Mr. Caos 1810 GOSUB 500 1820 IF F<>0 THEN RETURN 1830 GOSUB 1700 1840 RETURN 1900!Zug H.Sapiens 1910 PRINT AT(23,5);"Ihr Zug?" 1915 F$=INKEY$ :IF F$="" THEN 1915 1920 F=VAL(F$): IF F<1 OR F>9 OR A(F)<>0 THEN 1915 1930 PRINT AT(23,14);F:PAUSE 2 1940 PRINT AT(23,5);" " 1950 RETURN 2000!Spielauffuehrung 2010 GOSUB 2400 2020 Z=0 2030 SP=1: SP$="X": Z=Z+1 2040 ON UX GOSUB 1900,1800,1300 2050 GOSUB 800 2060 GOSUB 700 2070 IF GW=1 THEN RETURN 2080 SP=-1: SP$="O": Z=Z+1 2090 IF Z>9 THEN RETURN 2100 ON UO GOSUB 1900,1800,1300 2110 GOSUB 800 2120 GOSUB 700 2130 IF GW=-1 THEN RETURN 2140 GOTO 2030 2200!Spielauswertung 2210 IF GW=-1 THEN GO=GO+1 2220 IF GW=0 THEN UN=UN+1 2230 IF GW=1 THEN GX=GX+1 2240 WINDOW 13,22,20,38: CLS 2250 PRINT " Spielauswertung":PRINT 2260 PRINT " X : O" 2270 PRINT 2280 PRINT "gew. ";GX;SPC(3);GO 2290 PRINT "verl. ";GO;SPC(3);GX 2300 PRINT "unent. ";UN;SPC(3);UN 2305 GOSUB 5000 2310 WINDOW :RETURN 2400!Spielfeldvorbereitung 2410 WINDOW 14,20,5,11:CLS:WINDOW 2420 PRINT AT(14,5);"1 2 3" 2430 PRINT AT(17,5);"4 5 6" 2440 PRINT AT(20,5);"7 8 9" 2450 FOR F=1 TO 9 2460 A(F)=0 2470 NEXT 2490 RETURN 2500 ON UX GOSUB 570,570,1200 2510 ON UO GOSUB 570,570,1200 2520 RETURN 3000!Spielerauswahl 3010 CLS 3020 PRINT:PRINT " SPIELER":PRINT 3030 PRINT "H.Sapiens (1)" 3040 PRINT "Mr. Caos (2)" 3050 PRINT "Mr. Coputer (3)" 3100 PRINT 3110 INPUT "Nr. Spieler X";UX 3120 INPUT "Nr. Spieler O";UO 3130 PRINT 3140 INPUT "Anzahl der Spiele ?";AZ 3150 CLS :RETURN 3500!Initialisierung 3510 DIM D(24) 3520 DATA 1,2,3,4,5,6,7,8,9 3530 DATA 1,4,7,2,5,8,3,6,9 3540 DATA 1,5,9,3,5,7 3550 FOR J=1 TO 24 3560 READ D(J) 3570 NEXT 3580 RETURN 5000!Auflisten s(f,z) 5010 WINDOW 5020 PRINT "Zug/Feld 1 2 3 4 5 6 7 8 9":PRINT 5030 FOR Z=1 TO 9 5040 PRINT Z;"- "; 5050 FOR F=1 TO 9 5060 PRINT S(Z,F); 5070 NEXT 5080 PRINT 5090 NEXT 5100 RETURN