100 REM QubIC (7/31/69) HP MOD 4/20/73 CC 110 REM PLAYS 3-DIMENSIONAL TIC-TAC-TOE 120 DIM A$(72) 130 LET Z9=0 140 PRINT "CALL COMPUtER WeLCOMES YOU TO THE GAME OF QUBIC" 150 PRINT "DO YOU WANT INsTRUCTIOnS (Y/N)"; 160 INPUT A$ 170 IF A$="N" ThEN 350 180 IF A$="Y" THEN 210 190 PRINT "YES OR NO"; 200 GOTO 160 210 PRINT 220 PRINT "ThE GAME IS TIC-TAC-TOE IN A 4 X 4 X 4 CUBE." 230 PRInT "EACH MOVE IS INDICATED BY A 3 DIgIT NUMbER, WITH EACH" 240 PRiNT "DIGIT BETWEEN 1 AND 4 INCLuSIVE. THE DIgITS INDICATE THE" 250 PRINT "LEVEL, ROW, AND COLUmN, RESPECTIVELY, OF THE OCCUPIED PLACe." 260 PRINT "&N&NAFTER EACH PAIr OF MOVES I WILL PRINT THE GAME BOARD WItH" 270 PRiNt "X'S INDICATING MY POSITIONS AND O'S INDICATING YOUR POS-" 280 PRINT "ITiONS." 290 PRINT "&N&NAFTER I WIN, I WiLL PRINT THE BOARd SHOWING THE FINAL" 300 PRINT "POsITIONS." 310 DIM X(64),L(76),Y(16) 320 DIM M(55,4) 330 DEFFNL(I) = X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) 340 DEF FNM(M)=M+110+6*INT((M-19/4)+60*INT((M-1)/16) 350 MAT READ Y,M 360 MAt X=ZER 370 PRINt "&N&NDO YOU WANT TO MOVE FIRST"; 380 INPUT A$ 390 IF A$="Y" THEN 440 400 IF A$="N" THEN 630 410 PRINT "YES OR NO"; 420 GOTO 380 430 GOSUB 2180 440 PRINT "YOUR MOVE"; 450 INPUT J1 460 GOSUB 2140 470 LET K1=INT(J1/100) 480 LET J2=(J1-K1*100) 490 LET K2=INT(j2/10) 500 LET K3=J1-K1*100-K2*10 510 IF K1<=4 THEN 530 520 GOtO 560 530 IF K2 <=4 THEN 550 540 GO TO 560 550 IF K3<=4 tHEN 580 560 PRINT "ILLEGAL MOVE, tRY AGAIN" 570 GOTO 450 580 LET M=16*K1+4*K2+K3-20 590 IF X(M) = 0 THEN 620 600 PRINT "ThAT SQUArE IS USED, TRy AGAIN" 610 GOTO 440 620 LEt X(M) = 1 630 GOSUb 1470 640 LET S=T=0 650 FOR I=1 TO 76 660 IF L(I)<> 4 THEN 740 670 PRINT "CONGRAtULATIONS!" 680 PRINT "YOU WiN AS FOLLOWS"; 690 PRINT FNM(M(I,1));FNM(M(I,2));FNM(M(I,3));fNM(M(I,4)); 700 pRINT 710 PRINT "FINAL POSItION:" 720 GOSUB 2180 730 GOTO 1360 740 IF L(I)<>15 THEN 760 750 LET S=i 760 IF L(I)<>3 THEN 780 770 LEt T=I 780 NEXT I 790 IF S=0 THEN 880 800 LET I=S 810 FOR J=1 TO 4 820 LET M=M(I,J) 830 IF X(M)>0 THEN 870 840 LET X(M)=5 850 PRINT "MACHINE MOVES TO"FNM(M)", AND WInS AS FOLLOWS"; 860 GOTO 690 870 NEXT J 880 IF T=0 THEN 1200 890 LET I=t 900 FOR J=1 TO 4 910 lET M=M(i,J) 920 IF X(M)>0 THEN 960 930 LET X(M) = 5 940 PRINT "NICE TRY --MACHINe MOVES TO"FNM(M) 950 GOTO 430 960 NEXT J 970 FOR I=1 TO 76 980 LET L=FNL(I) 990 IF INT(L) <> 2 THEN 1050 1000 IF L>2 THEN 1920 1010 FOR J=1 TO 4 1020 IF X(M(I,j))>0 THEN 1040 1030 LET X(M(I,J))=.125 1040 NEXT J 1050 NEXT I 1060 GOSUB 1470 1070 FOR I=1 tO 76 1080 IF L(I)=.5 THeN 2020 1090 IF L(I)= 1.375 THEN 2020 1100 NEXT I 1110 GOTO 1590 1120 FOR Z=1 TO 16 1130 IF X(Y(Z)) = 0 THEN 1160 1140 NEXt Z 1150 GOTO 1510 1160 LEt M=Y(Z) 1170 LeT X(M) = 5 1180 PRINT "MACHINe MOVES TO"FNM(M) 1190 GOTO 430 1200 FOR I=1 TO 76 1210 LET L=FNL(I) 1220 IF INT(L) <> 10 THEN 1280 1230 IF L>10 THEN 1920 1240 FOr J=1 TO 4 1250 IF X(M(I,J))>0 THEN 1270 1260 LET X(M(I,J))=.125 1270 NEXT J 1280 NEXT I 1290 GOSUB 1470 1300 FOR I=1 TO 76 1310 IF L(I) = .5 THEN 2020 1320 IF L(I) = 5.375 THEN 2020 1330 NEXT I 1340 GOSUb 2140 1350 GOtO 970 1360 LET Z9=Z9+1 1370 IF Z9=2 THEN 2320 1380 PRINT "WOULD YOU LIkE ANOTHER GAME"; 1390 INP]T A$ 1400 IF A$="Y" THEN 360 1410 IF A$="N" ThEN 1440 1420 PRINT "YeS OR NO"; 1430 GOTO 1390 1440 END 1450 REM 1460 REM 1470 FOR s=1 TO 76 1480 LET L(S)=FNL(S) 1490 NEXt S 1500 REtURN 1510 FOR M=1 TO 64 1520 IF X(M)>0 ThEN 1560 1530 LET X(M)=5 1540 PRINT "MAcHINE LIKES"FNM(M) 1550 GOTO 430 1560 NEXt M 1570 PRINT "THE GAME IS A DRAW" 1580 GOTO 1360 1590 FOR K=1 TO 72 STEP 4 1600 LET P=INT(L(K))+INT(L(K+1))+INT(L(k+2))+INT(L(K+3)) 1610 IF P=4 THEN 1660 1620 IF P=9 THEN 1660 1630 NEXT K 1640 GOSUB 2140 1650 GOTO 1120 1660 LET S=.125 1670 FOR I=K tO K+3 1680 GOTO 2030 1690 NeXt I 1700 LET S=0 1710 GOTO 1670 1720 DATA 1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43 1730 DATA 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 1740 DATA 21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38 1750 DATA 39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56 1760 DATA 57,58,59,60,61,62,63,64 1770 DATA 1,17,33,49,2,18,34,50,3,19,35,51,4,20,36,52 1780 DATA 5,21,37,53,6,22,38,54,7,23,39,55,8,24,40,56 1790 DAtA 9,25,41,57,10,26,42,58,11,27,43,59,12,28,44,60 1800 DATa 13,29,45,61,14,30,46,62,15,31,47,63,16,32,48,64 1810 DATA 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 1820 DATA 2,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62 1830 DATA 3,7,11,15,19,23,27,31,35,39,43,47,51,55,59,63 1840 DATA 4,8,12,16,20,24,28,32,36,40,44,48,52,56<60,64 1850 DATA 1,6,11,16,17,22,27,32,33,38,43,48,49,54,59,64 1860 DATA 13,10,7,4,29,26,23,20,45,42,39,36,61,58,55,52 1870 DATA 1,21,41,61,2,22,42,62,3,23,43,63,4,24,44,64 1880 DATA 49,37,25,13,50,38,26,14,51,39,27,15,52,40,28,16 1890 DATA 1,18,35,52,5,22,39,56,9,26,43,60,13,30,47,64 1900 DATA 49,34,19,4,53,38,23,8,57,42,27,12,61,46,31,16 1910 DATA 1,22,43,64,16,27,38,49,4,23,42,61,13,26,39,52 1920 FOR j=1 TO 4 1930 IF x(M(I,J))<>.125 THEN 2010 1940 LET X(M(I,J))=5 1950 IF L<5 THEN 1980 1960 PRINt "LeT'S SEE YOU GET OUT OF THIs: MACHInE MOVES tO"; 1970 GOTO 1990 1980 PRINT "YOU FOX! JUST IN THE NICk OF TIME, MACHINE MOVEs TO"; 1990 PRINT FNM(M(I,J)) 2000 GOTO 430 2010 NEXT J 2020 LET S=.125 2030 IF I-INT(I/4)*4>1 ThEN 2060 2040 LET A=1 2050 GOTO 2070 2060 LET A=2 2070 FOR J=A TO 5-A STEp 5-2*A 2080 IF x(M(I,J))=S THEN 2110 2090 NExT J 2100 GOTO 1690 2110 LET x(M(I,J)) = 5 2120 PRINT "MACHINE TAKES"; 2130 GOtO 1990 2140 FOr I=1 TO 64 2150 LET X(I)=INT (X(I)) 2160 NEXT I 2170 RETURN 2180 LET A$="O.X" 2190 PRINT "&N"; 2200 FOr I1=1 TO 13 STEP 4 2210 FOR J1=I1 TO I1+48 STEP 16 2220 FOR K1=J1 TO J1+3 2230 LET L = ABS(X(K1)-2) 2240 PRINT A$(L); 2250 NEXT K1 2260 PRINT " "; 2270 NEXT J1 2280 PRINT " " 2290 NEXT I1 2300 PRInT "&N"; 2310 RETURN 2320 END READY