1 NOEXPAND
5 RANDOMIZE
10 PRINT "YOU HAVE THE OPPORTUNITY OF TRYING TO BEAT THE COMPUTER"
20 PRINT "AT TIC-TAC-TOE,  ENTER YOUR MOVES AS FOLLOWS:  "
30 PRINT
35 YOUW=0:AMTW=0:TIES=0
40 DIM C(11),D(11)
50 FOR K=1 TO 11
60 READ C(K),D(K)
70 NEXT K
80 PRINT "...ROW NUMBER...COMMA...COLUMN NUMBER..."
90 PRINT
100 PRINT "ROWS ARE HORIZONTAL(ACROSS)...COLUMNS ARE VERTICAL(UP+DOWN)"
110 DIM B(9),A(3,3)
120 PRINT
130 PRINT "...........NEW GAME STARTING NOW.....................":PRINT
140 FOR J=1 TO 3
150 FOR I=1 TO 3
160 A(I,J)=0
170 NEXT I
180 I=I-1
190 NEXT J
200 J=J-1
210 Z=0
220 PRINT "YOUR MOVE ",
230 INPUT R,C
240 PRINT
250 IF R>3 OR R<1 THEN 520
260 IF C>3 OR C<1 THEN 520
270 IF A(R,C)<>0 THEN 520
280 A(R,C)=-1
290 GOSUB 1660
300 IF Z=1 THEN 2160
310 REM .........MACHINE MOVE.............
320 GOSUB 1030
330 REM .........TEST FOR GAME WIN........
340 GOSUB 1660
350 IF Z=0 THEN 550
360 REM .........PRINT GAME BOARD.........
370 GOTO 380
380 PRINT
390 FOR K=1 TO 3
400 B=A(K,1)
410 D=A(K,2)
420 F=A(K,3)
430 GOSUB 770
440 IF K>2 THEN 460
450 PRINT "***************"
460 NEXT K
470 K=K-1
480 PRINT
490 IF Z<>0 THEN 2160
500 GOTO 220
510 STOP
520 PRINT "---- ILLEGAL MOVE -- TRY AGAIN ----"
530 PRINT
540 GOTO 220
550 T2=0
560 FOR J=1 TO 3
570 FOR I=1 TO 3
580 IF A(I,J)<>0 THEN 600
590 T2=T2+1
600 NEXT I
610 I=I-1
620 NEXT J
630 J=J-1
640 IF T2>0 THEN 670
650 GOSUB 1310
660 GOTO 370
670 IF T2>1 THEN 370
680 FOR J=1 TO 8
690 IF B(J)=-2 THEN 730
700 NEXT J
710 J=J-1
720 GOTO 650
730 GOSUB 2090
740 GOTO 290
750 REM ........PRINT TIC-TAC-TOE BOARD ROW......
770 IF B<>0 THEN 840
780 PRINT "    * ";
790 IF D<>0 THEN 870
800 PRINT "    * ";
810 IF F<>0 THEN 900
820 PRINT "  "
830 GOTO 1000
840 IF B>0 THEN 930
850 PRINT "YOU * ";
860 GOTO 790
870 IF D>0 THEN 950
880 PRINT "YOU * ";
890 GOTO 810
900 IF F>0 THEN 970
910 PRINT "YOU"
920 GOTO 830
930 PRINT "AMT * ";
940 GOTO 790
950 PRINT "AMT * ";
960 GOTO 810
970 PRINT "AMT"
980 GOTO 830
990 REM .........PRINT LEGENDS.........
1000 PRINT "    *     * "
1010 RETURN
1020 REM .....PROGRAM TO MAKE MOVE FOR THE MACHINE........
1030 M=0:N=0
1040 M=INT(3.33*RND(M))
1050 N=INT(3.33333*RND(N))
1060 IF M=0 THEN 1030
1070 IF M>3 THEN 1030
1080 IF N=0 THEN 1050
1090 IF N>3 THEN 1050
1100 C(2)=M
1110 D(2)=N
1120 C(3)=M
1130 D(3)=N
1140 FOR I=1 TO 8
1150 IF B(I)>1 THEN 1340
1160 NEXT I
1170 I=I-1
1180 FOR I=1 TO 8
1190 IF B(I)<-1 THEN 1340
1200 NEXT I
1210 I=I-1
1220 IF R+C=0 THEN 1550
1230 FOR K=1 TO 11
1240 I=C(K)
1250 J=D(K)
1260 IF A(I,J)<>0 THEN 1290
1270 A(I,J)=1
1280 GOTO 1330
1290 NEXT K
1300 K=K-1
1310 PRINT "  ... TIE GAME ...  "
1320 Z=3
1325 TIES=TIES+1
1330 RETURN
1340 IF I>3 THEN 1420
1350 FOR J=1 TO 3
1360 IF A(I,J)=0 THEN 1400
1370 NEXT J
1380 J=J-1
1390 GOTO 1330
1400 A(I,J)=1
1410 GOTO 1330
1420 IF I>6 THEN 1500
1430 FOR J=1 TO 3
1440 IF A(J,I-3)=0 THEN 1480
1450 NEXT J
1460 J=J-1
1470 GOTO 1330
1480 A(J,I-3)=1
1490 GOTO 1330
1500 IF I>7 THEN 1550
1510 FOR J=1 TO 3
1520 IF A(J,J)=0 THEN 1590
1530 NEXT J
1540 J=J-1
1550 IF A(1,3)=0 THEN 1610
1560 IF A(3,1)=0 THEN 1630
1570 A(2,2)=1
1580 GOTO 1330
1590 A(J,J)=1
1600 GOTO 1330
1610 A(1,3)=1
1620 GOTO 1330
1630 A(3,1)=1
1640 GOTO 1330
1650 REM ....PROGRAM TO TEST GAME WINNING......
1660 T1=0
1670 FOR J=1 TO 9
1680 B(J)=0
1690 NEXT J
1700 J=J-1
1710 J=1
1720 FOR I=1 TO 3
1730 IF A(J,1)<>A(J,I) THEN 1770
1740 NEXT I
1750 I=I-1
1760 T1=A(J,I)
1770 J=J+1
1780 IF J<4 THEN 1720
1790 J=J-1
1800 J=1
1810 FOR I=1 TO 3
1820 IF A(1,J)<>A(I,J) THEN 1860
1830 NEXT I
1840 I=I-1
1850 T1=A(I,J)
1860 J=J+1
1870 IF J<4 THEN 1810
1880 J=J-1
1890 IF A(1,1)=A(3,3) THEN 2020
1900 IF A(3,1)=A(1,3) THEN 2060
1910 IF T1<>0 THEN 2080
1920 FOR J=1 TO 3
1930 FOR I=1 TO 3
1940 B(J)=B(J)+A(J,I)
1950 B(J+3)=B(J+3)+A(I,J)
1960 NEXT I
1970 I=I-1
1980 NEXT J
1990 J=J-1
2000 B(7)=A(1,1)+A(2,2)+A(3,3)
2010 RETURN
2020 IF A(2,2)=A(3,3) THEN 2040
2030 GOTO 1900
2040 T1=A(2,2)
2050 GOTO 1910
2060 IF A(2,2)=A(1,3) THEN 2040
2070 GOTO 1910
2080 IF T1>0 THEN 2120
2090 PRINT " ... YOU WIN THIS TIME ..."
2100 Z=1
2105 YOUW=YOUW+1
2110 GOTO 1920
2120 PRINT " ... THE AM-100 WINS THIS TIME ..."
2130 Z=2
2135 AMTW=AMTW+1
2140 GOTO 1920
2150 REM ......END OF TEST WINNER PROGRAM......
2160 PRINT "DO YOU WANT TO PLAY ANOTHER GAME: YES OR NO";
2170 INPUT A$
2180 IF MID(A$,1,1)="Y" THEN 140
2190 IF MID(A$,1,1)="N" THEN 2220
2200 PRINT "I SAID YES OR NO: TRY AGAIN"
2210 GOTO 2170
2220 PRINT:PRINT "YOU WON ";YOUW;" GAMES, I WON ";AMTW;" GAMES AND THERE WERE ";TIES;" TIES"
2225 PRINT:PRINT "IT'S BEEN FUN, COME AGAIN SOMETIME"
2227 PRINT:PRINT
2230 GOTO 2250
2240 DATA 2,2,0,0,0,0,1,1,3,3,1,3,3,1,1,2,3,2,2,3,2,1
2250 END