1000  REM 'TTT2' PLAYS TIC-TAC-TOE   HP 2000 ACCESS BASIC SYSTEM
1010  REM BY DAVE DEVILLIER  /  01-26-76  /  ARAGON H. S.  SAN MATEO  CA
1020  PRINT '10;TAB(21)"T I C - T A C - T O E"'10
1030  PRINT "    THIS PROGRAM PLAYS TIC-TAC-TOE.  ENTER YOUR MOVES AS A TWO-"
1040  PRINT "DIGIT NUMBER (DIGITS NOT SEPARATED BY A COMMA), WHICH INDICATES"
1050  PRINT "THE ROW AND COLUMN, RESPECTIVELY, OF THE DESIRED SQUARE.  I USE"
1060  PRINT "X'S FOR MARKERS, YOU USE O'S, AND A '-' IS AN EMPTY SQUARE."
1070  DATA 1,3,7,9,5,2,4,7,5,2,4,6,9,7,3,1,1,9,7,3,5,4,2,7,5,2,4,7
1080  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
1090  DIM S[8,3],P[7,4],B[9],V[8],L[2],B$[9],A$[2]
1100  DEF FNS()=B[S[X,]]
1110  MAT  READ P,S
1120  MAT V=ZER
1130  MAT B=ZER
1140  B$="---------"
1150  GOTO INT(RND(0)*2+1) OF 1450,1250
1160  N=0
1170  FOR I=2 TO -2 STEP -4
1180  FOR X=1 TO 8
1190  IF V[X]#I THEN 1220
1200  N=N+1
1210  L[N]=S[X,1]*(FNS(1)=0)+S[X,2]*(FNS(2)=0)+S[X,3]*(FNS(3)=0)
1220  NEXT X
1230  IF N THEN 1330
1240  NEXT I
1250  T=V[1]+V[2]+V[3]+V[4]+V[5]+V[6]+V[7]+V[8]
1260  T=T+5+(T=1)*B[9]
1270  FOR X=1 TO 4
1280  M=P[T,X]
1290  IF B[M]=0 THEN 1340
1300  NEXT X
1310  PRINT LIN(2)"I'M SORRY, BUT THIS GAME SEEMS TO BE A DRAW!"
1320  GOTO 1590
1330  M=L[1+INT(RND(0)*N)]
1340  B[M]=1
1350  B$[M,M]="X"
1360  M0=INT((M-1)/3)
1370  PRINT LIN(2)"I MOVE TO"10*(M0+1)+(M-3*M0)
1380  PRINT  USING "#,3(/AXAXA)";B$[1,3],B$[4,6],B$[7,9]
1390  FOR X=1 TO 8
1400  V[X]=FNS(1)+FNS(2)+FNS(3)
1410  GOTO SGN((ABS(V[X])=3)*V[X])+2 OF 1580,1420,1560
1420  NEXT X
1430  GOTO SGN(B[M]*POS(B$,"-"))+2 OF 1160,1310,1450
1440  PRINT "CHEATER!!  THAT IS AN ILLEGAL MOVE, TRY AGAIN.";
1450  PRINT LIN(2)"YOUR MOVE ";
1460  INPUT M
1470  M0=INT(M/10)
1480  M=3*M0-3+(M-10*M0)
1490  IF M<1 OR M>9 OR M#INT(M) THEN 1440
1500  IF B[M]=0 THEN 1530
1510  PRINT "SORRY FRIEND, THAT SQUARE IS ALREADY USED, PICK ANOTHER.";
1520  GOTO 1450
1530  B[M]=-1
1540  B$[M,M]="O"
1550  GOTO 1380
1560  PRINT LIN(2)"I WIN!  YOU CAN'T BEAT SKILL!!"
1570  GOTO 1590
1580  PRINT LIN(2)"IT SEEMS THAT YOU HAVE WON, THIS TIME!!"
1590  PRINT '10"DO YOU WISH TO PLAY AGAIN (YES OR NO) ? ";
1600  LINPUT A$[1,1]
1610  IF A$="Y" THEN 1120
1620  PRINT '10"IT WAS FUN PLAYING THIS GAME WITH YOU. PLEASE COME AGAIN!"
1630  END 
