100 REM TIC-TAC-TOE. YOU (X) VS. THE COMPUTER (O) 110 GOTO 200 120 BOARD IS IN MEMORY LOCATIONS 0007-000F 130 . 0 IS EMPTY, 1 IS X. 3 TS O 140 I HAS CURRENT POSITION 150 G IS PEEK ROUTINE ADDRESS 160 P IS POKE ROUTINE ADDRESS 170 F=1 IF YOU PLAY FIRST 180 U IS NUMBER OF UNPLAYED SQUARES 190 Z=1 IF SOMEONE WON 200 REM 210 ?"TOM PITTMAN'S "; 211 ?"TIC-TAC-TOE." 212 ?"YOU AGAINST"; 213 ?" TINY BASIC" 221 ?"YOU ARE X. I AM"; 222 ?" O. YOU" 231 ?"PLAY YOUR"; 232 ?" TURN BY TYPING" 233 ?"THE NUMBER OF A"; 234 ?" SQUARE." 240 A=0 250 B=0 260 C=0 270 D=0 280 E=0 290 F=0 441 GOTO 500 450 TO CONSERVE MEMORY, LINES 100-500 MAY BE RUN ONCE 460 THEN DELETED (CLEAR) BEFORE LOADING THE REST OF THE PROGRAM 500 REM---ON WITH THE SHOW... 1000 LET F=1 1010 PRINT 1020 PRINT "NEW GAME." 1100 LET I=7 1110' 1111 A(I)=0:I=I+1 1120 IF I<16 GOTO 1110 1130 LET U=9 1140 LET Z=0 1151 IF F=0 GOTO 4010 1161 GOTO 2010 1500 REM X WON. 1510 LET Z=1 1520 LET F=0 2000 REM PRINT GAME STATE 2010 LET I=6 2110 LET I=I+1 2120 PRINT " "; 2131 GOTO A(I)*20+2200 2200 PRINT I-6; 2210 GOTO 2300 2220 PRINT "X"; 2230 GOTO 2300 2260 PRINT "O"; 2300 IF I/3*3=I GOTO 2400 2310 PRINT " |"; 2320 GOTO 2110 2400 PRINT 2420 IF I=15 GOTO 3000 2430 PRINT "---+---+---" 2440 GOTO 2110 3000 IF Z=0 GOTO 3100 3010 REM THE GAME IS OVER. 3020 IF F=1 GOTO 3050 3030 PRINT "YOU WIN." 3040 GOTO 1010 3050 PRINT "I WIN." 3060 GOTO 1010 3100 IF U>0 GOTO 3210 3110 PRINT "CAT'S GAME." 3120 LET F=1-F 3130 GOTO 1010 3200 REM INPUT NEXT PLAY. 3210' 3211 PRINT "YOUR PLA"; 3223 INPUT Y:I=Y 3231 IF I<=0 GOTO 3240 3232 IF I<10 GOTO 3270 3240' 3241 ?"PLEASE TYPE A"; 3242 ?" NUMBER" 3243 ?"BETWEEN 1 AND 9"; 3251 ?" WHERE YOU" 3252 ?"WISH TO PLAY"; 3253 ?" YOUR X" 3260 GOTO 3210 3270' 3271 IF A(I+6)=0 GOTO3310 3281 ?"THAT SQUARE IS"; 3282 ?" ALREADY":?"TAKEN" 3290 GOTO 3210 3300 REM CHECK IF X WON. 3310' 3311 A(I+6)=1:U=U-1 3320 LET W=6100 3330 GOSUB W 3341 IF J<=0 GOTO 3350 3342 IF L*M*N=1 GOTO 1510 3350 LET W=W+100 3360 IF W<6500 GOTO 3330 3400 REM CHECK IF CATS GAME 3410 IF U=0 GOTO 2010 4000 REM FIND BEST O PLAY 4010 LET I=1 4020 LET T=-1 4290 REM EVALUATE I'TH SQUARE 4300 LET S=0 4311 IF A(I+6)>0 GOTO4480 4320 LET W=6100 4330 GOSUB W 4340 IF J=0 GOTO 4410 4350 LET J=L+M+N 4361 IF J=4 GOTO 4410 4371 IF J=2 S=S+20 4381 IF J=6 S=S+100 4391 IF J=0 S=S+2 4400 LET S=S+J 4410 LET W=W+100 4420 IF W<6500 GOTO 4330 4431 IF S1 GOTO6440 6310 LET D=4 6320 REM BOTH DIAGONALS GO THRU CENTER 6330 LET J=11 6340 GOTO 6500 6390 REM W=UP DIAGONAL 6400 LET D=2 6411 IF I<=1 GOTO 6430 6412 IF I>=9 GOTO 6430 6413 IF I%2=1 GOTO 6330 6430 REM A DIAGONAL DOES NOT GO THRU THIS SQUARE 6440 LET J=0 6450 RETURN 6490 REM NOW WE KNOW CENTER OF THIS THREE AND +/- OFFSET 6500' 6502 L=A(J-D) 6511 M=A(J) 6521 N=A(J+D) 6530 RETURN