100 GOTO 1460 110 FOR I=1 TO 76 120 L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) 130 IF L(I)<2 OR L(I)>=3 THEN 170 140 IF L(I)>2 THEN 1080 150 FOR J=1 TO 4:IF X(M(I,J))=0 THEN X(M(I,J))=.125 160 NEXT J 170 NEXT I:GOSUB 960:FOR I=1 TO 76 180 IF L(I)=.5 OR L(I)=1.375 THEN 1150 190 NEXT I 200 FOR K=1 TO 18:P=0 210 FOR I=4*K-3 TO 4*K 220 FOR J=1 TO 4:P=P+X(M(I,J)):NEXT J:NEXT I 230 IF P<4 THEN 270 240 IF P<5 THEN 1000 250 IF P<9 THEN 270 260 IF P<10 THEN 1000 270 NEXT K:GOSUB 1220:GOTO 720 280 LOCATE 3,17,0:COLOR 15:PRINT " YOUR MOVE ":COLOR 7:SOUND 400,2 290 GOSUB 1220 300 LOCATE K3*2+6,K2*4+K1*19-17,1,0,7 310 J$=INKEY$:IF J$="" THEN 310 320 IF ASC(J$)=27 THEN 900 330 IF LEN(J$)=2 THEN LOCATE 3,17,0:PRINT " PRESS THE 'NUM LOCK' KEY, PLEASE" 340 IF J$="2" THEN K3=K3+1:IF K3>4 THEN K3=1 350 IF J$="6" THEN K2=K2+1:IF K2>4 THEN K1=K1+1:K2=1:IF K1>4 THEN K1=1 360 IF J$="8" THEN K3=K3-1:IF K3<1 THEN K3=4 370 IF J$="4" THEN K2=K2-1:IF K2<1 THEN K1=K1-1:K2=4:IF K1<1 THEN K1=4 380 IF J$="5" THEN 400 390 GOTO 300 400 M1=16*K1+4*K2+K3-20:IF X(M1)=0 THEN 420 410 LOCATE 3,17,0:PRINT " SQUARE IS OCCUPIED. TRY AGAIN. ":GOTO 290 420 X(M1)=1:LOCATE K3*2+6,K2*4+K1*19-18:PRINT "ώώώ" 430 LOCATE 2,17,0:PRINT " " 440 LOCATE 3,17,0:COLOR 15:PRINT " IBM'S MOVE ":GOSUB 960:COLOR 7 450 J=1 460 IF J>3 THEN 770 470 I=1 480 IF I>76 THEN J=J+1:GOTO 460 490 ON J GOTO 510,540,580,500 500 I=I+1:GOTO 480 510 IF L(I)<>4 THEN 500 520 COLOR 15:LOCATE 3,17,0:PRINT " EXCELLENT MOVE !!! . . . YOU WIN AS SHOWN. ":COLOR 7 530 MK=42:FOR J=1 TO 4:M1=M(I,J):GOSUB 920:NEXT J:GOTO 870 540 IF L(I)<>15 GOTO 500 550 LOCATE 3,17,0:PRINT " THE IBM-PC WIZARD MOVES . . . AND W I N S !!!" 560 FOR J=1 TO 4:M1=M(I,J):IF X(M1)=0 THEN X(M1)=5:GOTO 530 570 NEXT J 580 IF L(I)<>3 THEN 500 590 LOCATE 2,17,0:PRINT " NICE TRY . . . ":FOR J=1 TO 4:M1=M(I,J) 600 IF X(M1)=0 THEN X(M1)=5:GOTO 620 610 NEXT J:GOTO 770 620 GOSUB 920:GOTO 280 630 FOR I=1 TO 76 640 L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) 650 IF L(I)<2 OR L(I)>=3 THEN 690 660 IF L(I)>2 THEN 1080 670 FOR J=1 TO 4:IF X(M(I,J))=0 THEN X(M(I,J))=.125 680 NEXT J 690 NEXT I:GOSUB 960:FOR I=1 TO 76 700 IF L(I)=.5 OR L(I)=1.375 THEN 1150 710 NEXT I:GOTO 200 720 Z=1 730 IF X(Y(Z))=0 THEN 760 740 Z=Z+1:IF Z<>17 THEN 730 750 GOTO 980 760 M1=Y(Z):X(M1)=5:GOSUB 920:GOTO 280 770 I=1 780 L(I)=X(M(I,1))+X(M(I,2))+X(M(I,3))+X(M(I,4)) 790 IF L(I)<10 OR L(I)>=11 THEN 830 800 IF L(I)>10 THEN 1080 810 FOR J=1 TO 4:IF X(M(I,J))=0 THEN X(M(I,J))=.125 820 NEXT J 830 IF I<76 THEN I=I+1:GOTO 780 840 GOSUB 960:FOR I=1 TO 76 850 IF L(I)=.5 OR L(I)=5.375 THEN 1150 860 NEXT I:GOSUB 1220:GOTO 110 870 LOCATE 20,16:PRINT "ANOTHER GAME (Y/N) ? "; 880 A$=INKEY$:IF A$="" THEN 880 890 IF A$="Y" OR A$="y" THEN SCREEN 0,0,1,1:GOTO 1750 900 LOCATE 22,16:PRINT "THANKS FOR PLAYING QUBIC. BETTER LUCK NEXT TIME." 910 CHAIN "MENU" 920 K1=((M1-1) AND 48)/16+1:K2=((M1-1) AND 12)/4+1 930 K3=(M1-1 AND 3)+1 940 IF MK=42 THEN LOCATE K3*2+6,K2*4+K1*19+-17,1:COLOR 15:PRINT "*":COLOR 7:RETURN 950 LOCATE K3*2+6,K2*4+K1*19+-18,1:PRINT "IBM":RETURN 960 FOR S=1 TO 76 970 L(S)=X(M(S,1))+X(M(S,2))+X(M(S,3))+X(M(S,4)):NEXT S:RETURN 980 FOR I=1 TO 64:IF X(I)=0 THEN X(I)=5:M1=I:GOTO 620 990 NEXT I:LOCATE 3,17,0:PRINT " THE GAME IS A DRAW . . . . ":GOTO 870 1000 S=.125 1010 I=4*K-3 1020 IF I>4*K THEN S=0:GOTO 1010 1030 GOTO 1160 1040 DATA 1,49,52,4,13,61,64,16,22,39,23,38,26,42,27,43 1050 DATA 1,1,4,17,1,4,33,1,4,49,1,4,1,16,4,2,16,4,3,16,4,4,16,4 1060 DATA 1,4,16,2,4,16,3,4,16,4,4,16,1,5,16,4,3,16,1,20,1 1070 DATA 13,12,1,1,17,4,4,15,4,1,21,16,11,4,19,13,13 1080 FOR J=1 TO 4 1090 IF X(M(I,J))<>.125 GOTO 1140 1100 X(M(I,J))=5:IF L(I)<5 THEN 1120 1110 LOCATE 2,17,0:PRINT " LET'S SEE YOU GET OUT OF THIS! ":GOTO 1130 1120 LOCATE 2,17,0:PRINT " YOU FOX. JUST IN THE NICK OF TIME. " 1130 M1=M(I,J):GOTO 620 1140 NEXT J:LOCATE 3,17,0:PRINT" I CONCEDE THIS GAME. ":GOTO 870 1150 S=.125 1160 IF I-INT(I/4)*4>1 THEN 1180 1170 A=1:GOTO 1190 1180 A=2 1190 FOR J=A TO 5-A STEP 5-2*A 1200 IF X(M(I,J))=S THEN X(M(I,J))=5:M1=M(I,J):GOTO 620 1210 NEXT J:I=I+1:GOTO 1020 1220 FOR I=1 TO 64:IF X(I)=.125 THEN X(I)=0 1230 NEXT I:RETURN 1240 REM ------------------ DISPLAY GRID ------------- 1250 REM 1260 SCREEN 0,0,0,1:CLS:LOCATE 1,1,0:MK=0 1270 PRINT " ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ»" 1280 PRINT " Ί Ί 1290 PRINT " Ί Ί 1300 PRINT " Ί Ί 1310 PRINT " ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ 1320 PRINT 1330 PRINT " ΙΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝ» ΙΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝ» ΙΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝ» ΙΝΝΝΡΝΝΝΡΝΝΝΡΝΝΝ»" 1340 A$=" Ί ³ ³ ³ Ί Ί ³ ³ ³ Ί Ί ³ ³ ³ Ί Ί ³ ³ ³ Ί" 1350 B$=" ΗΔΔΔΕΔΔΔΕΔΔΔΕΔΔΔΆ ΗΔΔΔΕΔΔΔΕΔΔΔΕΔΔΔΆ ΗΔΔΔΕΔΔΔΕΔΔΔΕΔΔΔΆ ΗΔΔΔΕΔΔΔΕΔΔΔΕΔΔΔΆ" 1360 FOR I=1 TO 3:PRINT A$:PRINT B$:NEXT I 1370 PRINT A$ 1380 PRINT " ΘΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΌ ΘΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΌ ΘΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΌ ΘΝΝΝΟΝΝΝΟΝΝΝΟΝΝΝΌ" 1390 PRINT 1400 LOCATE 8,1:PRINT "1" 1410 LOCATE 10,1:PRINT "2" 1420 LOCATE 12,1:PRINT "3" 1430 LOCATE 14,1:PRINT "4":PRINT:PRINT 1440 PRINT " 1 2 3 4" 1450 COLOR 15:LOCATE 18,39:PRINT "QUBIC":COLOR 7:SCREEN 0,0,0,0:RETURN 1460 GOSUB 1800 1470 LOCATE 3,1 1480 PRINT " ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ» 1490 PRINT " Ί ";:COLOR 15:PRINT " THE IBM-PC WELCOMES YOU TO PLAY QUBIC. ";:COLOR 7:PRINT " Ί" 1500 PRINT " Ί Ί 1510 PRINT " Ί THE GAME IS TIC-TAC-TOE IN A 4 x 4 x 4 CUBE. Ί 1520 PRINT " Ί Ί 1530 PRINT " Ί TO WIN, GET 4 IN A ROW, BUT BE ON YOUR TOES SINCE Ί 1540 PRINT " Ί FOUR IN A ROW CAN BE ON A DIAGONAL, A VERTICAL OR Ί 1550 PRINT " Ί A HORIZONTAL LINE. THESE LINES CAN BE BETWEEN Ί 1560 PRINT " Ί LEVELS, OR ON A SINGLE LEVEL. THE FOUR PLANES Ί 1570 PRINT " Ί CAN BE THOUGHT OF AS FOUR FLOORS OF A BUILDING. Ί 1580 PRINT " Ί Ί 1590 PRINT " Ί USE THE 10-KEY PAD TO MOVE THE CURSOR TO THE Ί 1600 PRINT " Ί DESIRED CELL, AND PRESS '5' TO PLACE YOUR MARKER. Ί 1610 PRINT " ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ 1620 PRINT " ΙΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝ» 1630 PRINT " Ί Ί 1640 PRINT " Ί COPYRIGHT (C) 1982 BY ENSIGN SOFTWARE Ί 1650 PRINT " Ί Ί 1660 PRINT " ΘΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΌ 1670 SCREEN 0,0,1,1 1680 DEFINT I,J,K,M,Y,Z,A 1690 PRINT:DIM X(64),L(76),M(76,4),Y(16) 1700 FOR I=1 TO 16:READ Y(I):NEXT I 1710 FOR I=1 TO 69 STEP 4:READ K1,Z,K2:FOR K=0 TO 3:FOR J=0 TO 3 1720 M(I+K,J+1)=K1+K*K2+J*Z:NEXT J,K,I 1730 FOR I=73 TO 76:READ K1,Z:FOR J=0 TO 3 1740 M(I,J+1)=K1+J*Z:NEXT J,I 1750 FOR I=1 TO 64:X(I)=0!:NEXT I:K1=1:K2=1:K3=1 1760 Z=1:LOCATE 19,16:PRINT "DO YOU WANT TO MOVE FIRST (Y/N) ? ";:LOCATE 19,50,1 1770 J$=INKEY$:IF J$<>"N" AND J$<>"Y" AND J$<>"n" AND J$<>"y" THEN 1770 1780 LOCATE 19,50,0:PRINT J$:GOSUB 1240:IF J$="N" OR J$="n" THEN 430 ELSE 280 1790 END 1800 KEY OFF:WIDTH 80:SCREEN 0,0,1,0:CLS:SCREEN 0,0,0,1:CLS:LOCATE 6,1,0 1810 PRINT " ΙΝΛΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΛΝ»" 1820 PRINT " ΜΝΞΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΞΝΉ" 1830 PRINT " Ί Ί Ί Ί" 1840 PRINT " Ί Ί ";:COLOR 15:PRINT " QUBIC ";:COLOR 7:PRINT " Ί Ί" 1850 PRINT " Ί Ί Ί Ί" 1860 PRINT " Ί Ί ";:COLOR 15:PRINT " COPYRIGHT (C) 1982 BY ENSIGN SOFTWARE ";:COLOR 7:PRINT " Ί Ί" 1870 PRINT " Ί Ί Ί Ί" 1880 PRINT " Ί Ί 2312 N. COLE RD, SUITE E Ί Ί" 1890 PRINT " Ί Ί BOISE, ID 83704 U.S.A. Ί Ί" 1900 PRINT " Ί Ί DAY (208) 378-8086 EVE (208) 377-1938 Ί Ί" 1910 PRINT " Ί Ί Ί Ί" 1920 PRINT " ΜΝΞΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΞΝΉ" 1930 PRINT " ΘΝΚΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΝΚΝΌ" 1935 DEF SEG=0:POKE &H417,PEEK(&H417) OR &H60 1940 SCREEN 0,0,1,0:FOR I%=1 TO 3000:NEXT:RETURN