Back to Main page.
Back to Main tapes page.
1000 DIM A$[72]
1005 GOSUB 8000
1010 REM: ***** TIC-TAC-TOE
1020 F=Z2=0
1030 F=0
1040 MAT E=CON
1050 PRINT "Do you want to move first ? ";
1060 LINPUT A$
1070 A$=UPS$(A$)
1080 IF NOT LEN(A$) THEN 1130
1090 GOTO POS("YN",A$[1,1])+1 OF 1100,1130,1830
1100 PRINT "Yes or No please"
1110 GOTO 1050
1120 IF F THEN 1170
1130 FOR A=1 TO 9
1140 IF E[A]=1 THEN 1170
1150 NEXT A
1160 GOTO 1910
1170 A$=" X0"
1180 IF Z2 THEN 1250
1190 PRINT LIN(1);
1200 FOR A=1 TO 9
1210 PRINT "["A$[E[A],E[A]]"]";
1220 IF A/3#INT(A/3) THEN 1240
1230 PRINT LIN(0),LIN(-1);
1240 NEXT A
1250 IF F THEN 130
1260 PRINT LIN(1)"Your move: ";
1280 LINPUT A$
1290 IF NOT LEN(A$) THEN 1260
1300 CONVERT A$[LEN(A$)] TO A,1310
1310 Z2=POS(A$,"N")
1320 IF POS(A$,"B") THEN 1170
1330 IF A AND A<10 THEN 1360
1340 PRINT "BAD POSITION"
1350 GOTO 1260
1360 IF E[A]#1 THEN 1340
1370 E[A]=2
1380 RESTORE 1940
1390 FOR A=1 TO 8
1400 READ B,C,D
1410 IF E[B]=2 AND E[C]=2 AND E[D]=2 THEN 1980
1420 NEXT A
1430 RESTORE 1940
1440 FOR A=1 TO 8
1450 READ B,C,D
1460 IF E[B]#3 OR E[C]#3 OR E[D]#1 THEN 1500
1470 X=D
1480 E[D]=3
1490 GOTO 2010
1500 IF E[B]#3 OR E[C]#1 OR E[D]#3 THEN 1540
1510 X=C
1520 E[C]=3
1530 GOTO 2010
1540 IF E[B]#1 OR E[C]#3 OR E[D]#3 THEN 1580
1550 X=B
1560 E[B]=3
1570 GOTO 2010
1580 NEXT A
1590 RESTORE 1940
1600 FOR A=1 TO 8
1610 READ B,C,D
1620 IF E[B]#2 OR E[C]#2 OR E[D]#1 THEN 1660
1630 X=D
1640 E[D]=3
1650 GOTO 2050
1660 IF E[B]#2 OR E[C]#1 OR E[D]#2 THEN 1700
1670 X=C
1680 E[C]=3
1690 GOTO 2050
1700 IF E[B]#1 OR E[C]#2 OR E[D]#2 THEN 1740
1710 X=B
1720 E[B]=3
1730 GOTO 2050
1740 NEXT A
1750 RESTORE 1950
1760 FOR A=1 TO 14
1770 READ B,C,D
1780 IF E[B]#2 OR E[C]#2 OR E[D]#1 THEN 1820
1790 X=D
1800 E[D]=3
1810 GOTO 2080
1820 NEXT A
1830 RESTORE 1970
1840 FOR A=1 TO 9
1850 READ B
1860 IF E[B]#1 THEN 1900
1870 E[B]=3
1880 X=B
1890 GOTO 2080
1900 NEXT A
1910 PRINT "CATS GAME"'10
1920 F=1
1930 GOTO 1120
1940 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
1950 DATA 2,4,1,4,8,7,8,6,9,6,2,1,1,6,3,3,8,9,9,4,7,7,2,1
1960 DATA 4,3,1,2,9,3,6,7,9,8,1,7,1,9,2,3,7,6
1970 DATA 5,9,1,7,3,2,4,6,8
1980 PRINT LIN(2)"Congratulations, you win"'7"!"'7"!"'7"!"
1990 F=1
2000 GOTO 1130
2010 CONVERT X TO B$
2020 PRINT LIN(1)"Computer moves to position "B$" and wins!"'7"!"'7"!"'7"!"
2030 F=1
2040 GOTO 1120
2050 CONVERT X TO B$
2060 PRINT "Computer blocks at position "B$
2070 GOTO 1120
2080 CONVERT X TO B$
2090 PRINT "Computer moves to position "B$
2100 GOTO 1120
2110 GOTO 130
2120 END
8000 REM *** This section was written by Lane Rollins.
8010 DIM Z1$[10]
8020 PRINT "Instructions: ";
8030 LINPUT Z1$
8040 IF Z1$[1,1]="N" THEN 8210
8050 PRINT ""
8060 PRINT " THE OBJECT OF THIS GAME IS TO GET THREE 'X'S IN A ROW OR"
8070 PRINT "COLUMN BEFORE THE COMPUTER GETS THREE 'O'S IN A ROW OR COLUMN."
8080 PRINT "HERE IS AN EXAMPLE:"
8090 PRINT ""
8100 PRINT " [ ][X][ ]"
8110 PRINT " [ ][O][ ]"
8120 PRINT " [ ][ ][ ]"
8130 PRINT ""
8140 PRINT " THE 'X' IS ON POSITION 2 AND THE 'O' IS ON POSITION 5."
8150 PRINT "P.S. EXPERTS CAN TYPE 'N' BEFORE THEIR NUMBER TO SPECIFY NO BOARD"
8160 PRINT "IS TO BE PRINTED, AND TYPE A 'B' TO RECIEVE A BOARD AS THE GAME"
8170 PRINT "PROGRESSES."
8180 PRINT ""
8190 PRINT "WARNING: THE COMPUTER HAS NEVER LOST THIS GAME."
8200 PRINT ""
8210 RETURN
8220 END