100 PRINT "&K&J": REM========= LAST MOD. 8/8/77 R.E.H. 110 PRINT 120 PRINT TAB(10);"0X0X0X0X0X0X0X0X0X0X0X0X0X0X0" 130 PRINT TAB(10);"0X0 T IC T A C T O E 0X0" 140 PRINT TAB(10);"0X0X0X0X0X0X0X0X0X0X0X0X0X0X0" 150 PRINT 160 REMTIC TAC TOE PROGRAM RJC 170 REMARKABLE PROGRAM WRITTEN BY WALTER GILBERT, UOM. 180 DIM T(9),X$(6),S(15),Q(3,8): REM.....WAS---> X$(3) 190 REM.....MAT READ X$ 200 LET X$="O.X": REM....WAS ---> DATA "O ",". ","X " 210 FOR I=1 TO 8 220 FOR J=1 TO 3 230 READ Q(J,I) 240 NEXT J 250 NEXT I 260 GOSUB 1150 270 PRINT 280 PRINT 290 PRINT " 1 2 3" 300 PRINT " 4 5 6" 310 PRINT " 7 8 9 SHALL I GO FIRST"; 320 FOR I=1 TO 9 330 LET T(I)=0 340 NEXT I 350 LET Z=4 360 INPUT (1,0)M$ 370 IF M$="N" THEN 410 380 LET Z=5 390 LET T(5)=-1 400 GOTO 490 410 PRINT "YOUR MOVE"; 420 INPUT (1,0)M 430 IF FNM(M)=3 THEN 420 440 LET T(M)=1 450 IF M=5 THEN 480 460 LET T(5)=-1 470 GOTO 490 480 LET T(1)=-1 490 LET K=1 495 LET K=K+1 500 GOSUB 1230 510 PRINT " YOUR MOVE"; 520 INPUT (1,0)M 530 ON FNM(M) GOTO 560,540,520 540 PRINT " THIS MOVE HAS BEEN MADE"; 550 GOTO 510 560 LET T(M)=1 570 GOSUB 1150 580 IF S(10)<>0 THEN 750 590 IF S(14)=0 THEN 680 600 FOR I=1 TO 8 610 IF S(I)=2 THEN EXIT 630 620 NEXT I 630 FOR J=1 TO 3 640 IF T(Q(J,I))=0 THEN EXIT 660 650 NEXT J 660 LET T(Q(J,I))=-1 670 GOTO 1000 680 FOR N=1 TO 9 690 IF T(N)<>0 THEN 730 700 LET T(N)=-1 710 IF S(10)=2 THEN EXIT 790 720 LET T(N)=0 730 NEXT N 740 GOTO 820 750 FOR I=1 TO 8 760 IF S(I)=-2 THEN EXIT 780 770 NEXT I 780 LET T(Q(1,I))=T(Q(2,I))=T(Q(3,I))=-1 790 GOSUB 1230 800 PRINT " I WIN ***&J" 810 GOTO 270 820 LET N=0 825 LET N=N+1 830 IF T(N)<>0 THEN 990 840 LET T(N)=-1 850 GOSUB 1150 860 ON S(10)+1 GOTO 980,870,790 870 FOR I=1 TO 8 880 IF S(I)=-2 THEN EXIT 900 890 NEXT I 900 FOR J=1 TO 3 910 IF T(Q(J,I))=0 THEN EXIT 930 920 NEXT J 930 LET T(Q(J,I))=1 940 LET L=I 950 GOSUB 1150 960 LET T(Q(J,L))=0 970 IF S(14)<2 THEN EXIT 1000 980 LET T(N)=0 990 IF N<9 THEN 825 1000 IF K9 THEN 1100 1070 IF T(M)=0 THEN 1130 1080 LET N=2 1090 GOTO 1140 1100 LET N=3 1110 PRINT " MOVE ONLY 1 THRU 9 *** YOUR MOVE"; 1120 GOTO 1140 1130 LET N=1 1140 RETURN N 1145 FNEND 1150 FOR I=9 TO 15 1160 LET S(I)=0 1170 NEXT I 1180 FOR I=1 TO 8 1190 LET S(I)=T(Q(1,I))+T(Q(2,I))+T(Q(3,I)) 1200 LET S(S(I)+12)=S(S(I)+12)+1 1210 NEXT I 1220 RETURN 1230 FOR I=1 TO 7 STEP 3 1240 PRINT 1245 PRINT X$((T(I)+2),(T(I)+2));" "; 1250 PRINT X$((T(I+1)+2),(T(I+1)+2));" "; 1255 PRINT X$((T(I+2)+2),(T(I+2)+2));" "; 1260 NEXT I 1270 RETURN 1280 DATA 1,2,3,4,5,6,7,8,9,1,4,7,2,5,8,3,6,9,1,5,9,3,5,7 1290 END