REM QUBIC - 3 DIMENSIONAL TIC-TAC-TOE 5 INPUT 'DO YOU WANT INSTRUCTIONS';C$ IF C$='NO' THEN 20 IF C$='YES' THEN 13 PRINT 'INCORRECT ANSWER - YES OR NO' GOTO 5 13 PRINT 'THE GAME IS TIC-TAC-TOE IN A 4 X 4 X 4 CUBE,' PRINT 'EACH MOVE IS INDICATED BY A 3 DIGIT NUMBER, WITH EACH' PRINT 'DIGIT BETWEEN 1 AND 4 INCLUSIVE. THE DIGITS INDICATE THE' PRINT 'LEVEL,ROW,AND COLUMN RESPECTIVELY, OF THE OCCUPIED PLACE.' 20 DIM X(64),L(76),M(76,4),Y(16) FOR I = 1 TO 16 READ Y(I) NEXT I FOR I = 1 TO 76 FOR J=1 TO 4 READ M(I,J) NEXT J NEXT I 35 FOR I=1 TO 64 X(I)=0 NEXT I Z=1 55 INPUT 'DO YOU WANT TO MOVE FIRST';S$ IF S$='NO' THEN 110 IF S$='YES' THEN 70 PRINT 'INCORRECT ANSWER, TYPE YES OR NO' GOTO 55 70 PRINT ' ' PRINT 'YOUR MOVE'; INPUT J1 GOSUB 1800 K1=INT(J1/100) J2=(J1-K1*100) K2=INT(J2/10) K3=J1 - K1*100 -K2*10 M=16*K1+4*K2+K3-20 IF X(M)=0 THEN 109 PRINT 'THAT SQUARE IS USED, TRY AGAIN' GOTO 70 109 X(M)=1 110 GOSUB 1050 CC=1 181 IF CC=4 THEN 400 FOR I=1 TO 76 IF CC=1 THEN 210 IF CC=2 THEN 220 IF CC=3 THEN 235 205 NEXT I CC=CC+1 GOTO 181 210 IF L(I)<>4 THEN 205 REM PRINT 'LOOKS LIKE YOU WIN THIS ONE...' GOSUB 3000 GOTO 500 220 IF L(I)<>15 THEN 205 FOR J=1 TO 4 M=M(I,J) IF X(M)<>0 THEN 227 X(M)=5 PRINT 'MACHINE MOVES TO'; GOSUB 1000 227 NEXT J REM PRINT 'I WIN! AS YOU SEE UPON CLOSE EXAMINATION!' GOSUB 3000 GOTO 500 235 IF L(I)<>3 THEN 205 PRINT 'NICE TRY, MACHINE MOVES TO'; FOR J=1 TO 4 M=M(I,J) IF X(M)<>0 THEN 245 X(M)=5 GOSUB 1000 GOTO 70 245 NEXT J GOTO 400 250 FOR I=1 TO 76 L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) L=L(I) IF L<2 THEN 290 IF L>=3 THEN 290 IF L>2 THEN 1600 FOR J = 1 TO 4 IF X(M(I,J))<>0 THEN 285 X(M(I,J))=1/8 285 NEXT J 290 NEXT I GOSUB 1050 FOR I=1 TO 76 IF L(I)=1/2 THEN 1700 IF L(I)=1+3/8 THEN 1700 NEXT I GOTO 1300 360 Z=1 362 IF X(Y(Z))=0 THEN 380 Z=Z+1 IF Z<>17 THEN 362 GOTO 1200 380 M=Y(Z) X(M)=5 PRINT 'MACHINE MOVES TO'; GOSUB 1000 GOTO 70 400 X=X FOR I=1 TO 76 L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) L=L(I) IF L<10 THEN 455 IF L>=11 THEN 455 IF L>10 THEN 1600 FOR J=1 TO 4 IF X(M(I,J))<>0 THEN 450 X(M(I,J))=1/8 450 NEXT J 455 NEXT I GOSUB 1050 FOR I=1 TO 76 IF L(I)=.5 THEN 1700 IF L(I)=5+3/8 THEN 1700 NEXT I GOSUB 1800 GOTO 250 500 PRINT ' ' PRINT 'DO YOU WANT TO TRY ANOTHER GAME'; 510 INPUT X$ IF X$='YES' THEN 35 IF X$='NO' THEN 520 PRINT 'INCORRECT ANSWER, TYPE YES OR NO' GOTO 510 520 STOP 1000 K1=INT((M-1)/16)+1 J2=M-16*(K1-1) K2=INT((J2-1)/4)+1 K3=M-(K1-1)*16-(K2-1)*4 M=K1*100+K2*10+K3 PRINT M GOSUB 3000 RETURN 1050 FOR S=1 TO 76 J1=M(S,1) J2=M(S,2) J3=M(S,3) J4=M(S,4) L(S)=X(J1)+X(J2)+X(J3)+X(J4) NEXT S RETURN 1200 FOR I = 1 TO 64 IF X(I)<>0 THEN 1250 X(I)=5 M=I PRINT 'MACHINE LIKES'; GOSUB 1000 PRINT ' ' GOTO 70 1250 NEXT I PRINT 'THE GAME IS A DRAW' GOTO 500 1300 FOR K=1 TO 18 P=0 FOR I=4*K-3 TO 4*K FOR J=1 TO 4 P=P+X(M(I,J)) NEXT J NEXT I IF P<4 THEN 1390 IF P<5 THEN 1400 IF P<9 THEN 1390 IF P<10 THEN 1400 1390 NEXT K GOSUB 1800 GOTO 360 1400 S=1/8 1405 FOR I=4*K-3 TO 4*K GOTO 1703 1415 NEXT I S=0 GOTO 1405 DATA 1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43 DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 DATA 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 DATA 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56 DATA 57,58,59,60,61,62,63,64 DATA 1,17,33,49,5,21,37,53,9,25,41,57,13,29,45,61 DATA 2,18,34,50,6,22,38,54,10,26,42,58,14,30,46,62 DATA 3,19,35,51,7,23,39,55,11,27,43,59,15,31,47,63 DATA 4,20,36,52,8,24,40,56,12,28,44,60,16,32,48,64 DATA 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 DATA 2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62 DATA 3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63 DATA 4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64 DATA 1,6,11,16,17,22,27,32,33,38,43,48,49,54,59,64 DATA 13,10,7,4,29,26,23,20,45,42,39,36,61,58,55,52 DATA 1,21,41,61,2,22,42,62,3,23,43,63,4,24,44,64 DATA 49,37,25,13,50,38,26,14,51,39,27,15,52,40,28,16 DATA 1,18,35,52,5,22,39,56,9,26,43,60,13,30,47,64 DATA 49,34,19,4,53,38,23,8,57,42,27,12,61,46,31,16 DATA 1,22,43,64,16,27,38,49,4,23,42,61,13,26,39,52 1600 FOR J=1 TO 4 IF X(M(I,J))<>1/8 THEN 1650 X(M(I,J))=5 IF L(I)<5 THEN 1625 PRINT 'LETS SEE YOU GET OUT OF THIS: MACHINE MOVES TO'; GOTO 1626 1625 PRINT 'YOU FOX. JUST IN THE NICK OF TIME MACHINE MOVES TO'; 1626 M=M(I,J) GOSUB 1000 GOTO 70 1650 NEXT J PRINT 'MACHINE CONCEDES THIS GAME.' GOTO 500 1700 S=1/8 1703 IF I=INT(I/4)*4>1 THEN 1715 A=1 GOTO 1720 1715 A=2 1720 FOR J=A TO 5-A STEP 5-2*A IF X(M(I,J))=S THEN 1750 NEXT J GOTO 1415 1750 X(M(I,J))=5 M=M(I,J) PRINT 'MACHINE TAKES'; GOSUB 1000 GOTO 70 1800 FOR I=1 TO 64 IF X(I)<>1/8 THEN 1850 X(I)=0 1850 NEXT I RETURN END 3000 REM---PRINT BOARD--- FOR P1=1 TO 4 FOR P2=1 TO 4 FOR P3=1 TO 4 IF X(P3+((P2-1)*16)+((P1-1)*4))<1 THEN PRINT '. '; IF X(P3+((P2-1)*16)+((P1-1)*4))=1 THEN PRINT 'X '; IF X(P3+((P2-1)*16)+((P1-1)*4))=5 THEN PRINT 'O '; NEXT P3 PRINT ' '; NEXT P2 PRINT ' ' NEXT P1 RETURN