THE PAST MASTER CLUB
SUPERTIC.HTM




sprtc.gif


sprtc.gif

1 '' COPYRIGHTED NICK VAN VLIET 1993 '' REV1993 VER2.3 TRANSLATED OCT/99 10 '' SUPERTIC 4x4x4 TICTACTOE 20 Q = 1: F = Q - Q: R = Q + Q: P = R + Q: S = P + Q: D = S + Q: T = D + Q U = T + Q: V = U + Q: W = V + Q: E = R * D: X = 15: Y = 20 30 COLOR X, F, P: CLS : COLOR 11, S, P: M = E ^ P TRUE = -1: FALSE = 0: RED = 10: BLUE = 11: YELL = 15 40 ' COMPUTER/PLAYER2=>BLUE=>"'X'" RED=>"'O'"=GREEN 50 LOCATE Q, Q: PRINT "CODEBREAKER "; : COLOR F, S PRINT " NICK VAN VLIET "; 60 COLOR X, D: PRINT " "; : PRINT DATE$; " "; : PRINT TIME$; PRINT " "; : COLOR X, Q 70 PRINT " SUPERTIC ": COLOR X, F 80 DIM A(3, 6): GOSUB 2400 '5000 LOCATE 10, 2: 'READ PLANES & DIAGONALS 90 PRINT "WOULD YOU LIKE TO PLAY AGAINST THE COMPUTER OR A 2ND PLAYER (/P)? "; 100 INPUT "", G$ 110 LOCATE 3, 1: GOSUB 4150: '7000 PRNT 4X4X4 GRID ON SCREEN 120 DIM G(65) 130 FOR I = 1 TO 64: G(I) = 0: NEXT I 140 IF G$ = "p" OR G$ = "P" THEN GOTO 560: '1000 2ND PLAYER IS NOT COMPUTER 150 FOR I = 1 TO 2: Y$ = "'X'": Y = 0: COLOR 15: 'PLAYER INIT 160 LOCATE 23, 42: PRINT "YOUR TURN "; IF Y$ = "'X'" THEN COLOR BLUE ELSE COLOR RED 170 PRINT Y$; : COLOR 15: PRINT " " 180 LOCATE 23, 56: INPUT "", Z: IF Z < 1 OR Z > 64 THEN GOTO 160 190 LOCATE 20, 42: PRINT " " 200 MOVE = TRUE: GOSUB 4020 '6000 IF MOVE THEN GOTO 160: 'PRNT MOVE 210 IF L > 0 THEN GOTO 2060: '3000 4 IN A ROW WON!! 220 Z = 0: IF G(1) > 0 AND Z = 0 AND G(22) = 0 THEN Z = 22 230 IF G(4) > 0 AND Z = 0 AND G(23) = 0 THEN Z = 23 240 IF G(16) > 0 AND Z = 0 AND G(27) = 0 THEN Z = 27 250 IF G(13) > 0 AND Z = 0 AND G(26) = 0 THEN Z = 26 260 IF G(49) > 0 AND Z = 0 AND G(38) = 0 THEN Z = 38 270 IF G(52) > 0 AND Z = 0 AND G(39) = 0 THEN Z = 39 280 IF G(64) > 0 AND Z = 0 AND G(43) = 0 THEN Z = 43 290 IF G(42) = 0 AND Z = 0 THEN Z = 42 300 IF G(43) = 0 AND Z = 0 THEN Z = 43 310 IF G(22) = 0 AND Z = 0 THEN Z = 22 320 IF G(23) = 0 AND Z = 0 THEN Z = 23 330 IF G(26) = 0 AND Z = 0 THEN Z = 26 340 IF G(27) = 0 AND Z = 0 THEN Z = 27 350 IF G(39) = 0 AND Z = 0 THEN Z = 39 360 IF G(38) = 0 AND Z = 0 THEN Z = 38 370 IF Z = 0 THEN GOTO 560 '1000 380 LOCATE 20, 42: PRINT "I PLACED MY "; : COLOR RED: PRINT "'O'"; COLOR 15: PRINT " AT "; Z; " " 390 Y$ = "'O'": GOSUB 4020 '6000 NEXT I 400 RANDOMIZE (SEED) 410 FOR I = 1 TO 32 420 IF Y$ = "'O'" THEN Y$ = "'X'" ELSE Y$ = "'O'" 430 IF Y$ = "'O'" THEN GOSUB 690: IF DD > 0 AND L = 2 THEN Y = DD: ' COMPUTER TURN 440 COLOR 15: LOCATE 23, 42: PRINT "YOUR TURN "; : COLOR BLUE 450 PRINT Y$; : COLOR 15: PRINT " " 460 IF Y$ = "'O'" THEN LOCATE 23, 42: PRINT " " 470 IF Y$ = "'X'" THEN LOCATE 23, 56: INPUT Z: IF Z < 1 OR Z > 64 OR G(Z) > 0 THEN GOTO 440 END IF 480 IF Y$ = "'O'" THEN Z = Y: LOCATE 20, 42: PRINT "I PLACED MY "; : COLOR RED 490 IF Y$ = "'O'" THEN PRINT "'O'"; : COLOR 15: PRINT " AT "; Z; " " 500 IF Y$ = "'X'" THEN LOCATE 20, 42: PRINT " " 510 GOSUB 4020: IF MOVE THEN GOTO 440 520 IF L > 0 THEN GOTO 2060 530 NEXT I 540 STOP 550 NEXT Z 560 Y$ = "'O'": RANDOMIZE (SEED): '2PLAYERS 1000 570 LOCATE 17, 42: PRINT "2 PLAYERS "; : COLOR BLUE: PRINT "'X'"; : COLOR 15: PRINT " AND "; : COLOR RED: PRINT "'O'"; : COLOR 15: PRINT " " 580 FOR I = 1 TO 64 590 IF Y$ = "'O'" THEN Y$ = "'X'" ELSE Y$ = "'O'" 600 LOCATE 23, 42: PRINT "YOUR TURN "; : IF Y$ = "'X'" THEN COLOR BLUE ELSE COLOR RED 610 PRINT Y$ + " ": COLOR 15 620 LOCATE 23, 56: INPUT Z: IF Z < 1 OR Z > 64 OR G(Z) > 0 THEN GOTO 600 630 LOCATE 20, 42: PRINT "I PLACED MY "; : IF Y$ = "'X'" THEN COLOR BLUE ELSE COLOR RED 640 PRINT Y$; : COLOR 15: PRINT " AT "; Z; " " 650 GOSUB 4020: IF MOVE THEN GOTO 600 660 IF L > 0 THEN 2060 670 NEXT I 680 GOTO 2110 690 'COMPUTER MOVE 2000 700 Y = FIX(64 * RND + Q): IF Y > 64 OR G(Y) > 0 THEN GOTO 690: ' DUMY VAL Y 710 GOSUB 2330: ' CAT WON?? 720 FOR H = 1 TO 37 * 16 STEP 4: ' 3 OPP IN A ROW +1 == SAVED GAME 730 L = 0: A = 0 740 FOR K = 0 TO 3 750 N = E(H + K): IF N < 65 THEN A = N 760 IF N = 80 THEN L = L + 1 ELSE IF N = 100 THEN L = 4: K = 4 770 NEXT K: ' PRINT(H-1)/16+1:INPUT U$ 780 IF L = 3 AND A > 0 THEN Y = A: RETURN: ' RETURN VAL Y 790 NEXT H 800 FOR H = 1 TO 37 * 16 STEP 4: ' 3 OWN IN A ROW +1==WON 810 L = 0: A = 0 820 FOR K = 0 TO 3 830 N = E(H + K): IF N < 65 THEN A = N 840 IF N = 100 THEN L = L + 1 ELSE IF N = 80 THEN L = 4: K = 4 850 NEXT K 860 IF L = 3 AND A > 0 THEN Y = A: RETURN: ' RETURN VAL Y 870 NEXT H: GOTO 2040 880 DD = 0: FOR H = 0 TO 175 STEP 22: IF F(H) < 65 THEN A = F(H) ELSE A = 0: GOTO 1010 890 'LOCATE 2,43:PRINT FIX(H/22);" A= ";A;" " 900 LL = 0: FOR K = 0 TO 6: L = 0: B = 0: ' 910 'LOCATE 3,43:PRINT" K= ";K;" " 920 FOR G = 0 TO 2: ' CORNER 3 WAY SPLIT 930 'LOCATE 3+G+Q,43:PRINT " G= ";G; 940 N = F(H + Q + 3 * K + G): IF N = AA THEN L = L + Q 950 IF NN = AB THEN L = 4: G = 4: B = 0: GOTO 980 960 IF N < 65 THEN B = A 970 'PRINT " N= ";N;" L= ";L;" B= ";B;" LL= ";LL; 980 NEXT G: IF L = 2 AND B > 0 THEN LL = LL + Q 990 'PRINT" LL= ";LL;"<<<";:INPUT A$ 1000 NEXT K: IF LL > Q THEN L = 2: DD = A: RETURN: ' RET Y VAL 1010 NEXT H: A = 0: L = 0: '''RETURN:' NO CORNER SOLUTION YET 1020 DD = 0: FOR H = 0 TO 239 STEP 10: IF L(H) < 65 THEN A = L(H) ELSE A = 0: GOTO 1150 1030 'LOCATE 2,43:PRINT FIX(H/22);" A= ";A;" " 1040 LL = 0: FOR K = 0 TO 2: L = 0: B = 0: 1050 'LOCATE 3,43:PRINT " K= ";K;" " 1060 FOR G = 0 TO 2: ' CORNER 3 WAY SPLIT 1070 'LOCATE 3+G+Q,43:PRINT " G= ";G; 1080 N = L(H + Q + 3 * K + G): IF N = AA THEN L = L + Q 1090 IF NN = AB THEN L = 4: G = 4: B = 0: GOTO 1120 1100 IF N < 65 THEN B = A 1110 'PRINT " N= ";N;" L= ";L;" B= ";B;" LL= ";LL; 1120 NEXT G: IF L = 2 AND B > 0 THEN LL = LL + Q 1130 'PRINT " LL= ";LL;"<<<";:INPUT A$ 1140 NEXT K: IF LL > Q THEN L = 2: DD = A: RETURN: ' RET Y VAL 1150 NEXT H: A = 0: L = 0: '''RETURN:' NO SOLUTION YET 1160 '' 2300 1170 AD = 0: DD = 0: 'DIM A(3,6):' 1180 FOR H = 1 TO 36 * 16 STEP 16: ' PLANE ANALYSIS 2x2 OPP 1190 FOR K = 0 TO 3: A = 0: L = 0: B = R: ' ROW No 1200 FOR G = 0 TO 3: N = E(H + 4 * K + G): IF N = AA THEN L = L + Q 1210 A(G, 0) = 0: A(G, Q) = 0: A(G, B) = 0: IF N = AB THEN L = 4: G = 4: GOTO 1250: ' TEST DONE 1220 IF N < 65 THEN A(G, 0) = N: A(G, Q) = (G + 1): ' OMIT '0' INTERSECT 1230 IF N < 65 THEN A(G, B) = N: A = N: B = B + Q: ' BOTH VALS STORED 1240 ' LOCATE G+3,43:PRINT G;",0= ";A(G,0);" G,1= ";A(G,Q);" G,2= "; ' A(G,2);" AD= ";AD;" " 1250 NEXT G 1260 IF L = 2 AND A > 0 THEN GOSUB 1290: IF DD > 0 THEN Y = DD: RETURN: ' 2 OPP IN A ROW 1270 NEXT K: NEXT H: '''''IF AD>0 THEN Y=AD:'ADD FOR DIFFICULTY STOP 2 IN A ROW 1280 RETURN: DD = 0: L = 0: ' '' OVE WHEN DONE! 1290 AD = A: FOR J = 0 TO 3: IF A(J, 0) = 0 THEN GOTO 1370 1300 KD = A(J, 0): L = 0: A(J, 6) = 0: B = 0 1310 FOR G = 0 TO 3: N = E(H + 4 * G + J): IF N = AA THEN L = L + Q 1320 ' LOCATE J+2,4*G+1:PRINT N:' ????? 1330 IF N = AB THEN L = 4: G = 4: GOTO 1360: ' TEST DONE 1340 IF N < 65 THEN IF N <> KD THEN A(J, 6) = N 1350 IF N = KD THEN B = N: ' POSS SOLTN! 1360 NEXT G: IF L = 2 AND B > 0 THEN DD = B: RETURN: ' RET WITH Y VAL 1370 NEXT J: L = 0: KD = 66: LL = 0: B = TRUE: LD = 0: LLD = 0 1380 ' LOCATE 1,1:PRINT FIX(H-1)/16+1;" " 1390 IF A(K, Q) = K + Q THEN LD = A(K, 0): B = FALSE: 'LOCATE 8,43:PRINT " LD= ";L;" K= ";K;" " END IF 1400 IF A(3 - K, Q) = 3 - K + Q THEN LLD = A(3 - K, 0): B = FALSE: 'LOCATE 9,43:PRINT " LLD= ";LLD;" 3-K= ";3-K;" " END IF 1410 IF B THEN DD = 0: RETURN: ' NOT A DIAGONAL SOLTN 1420 A = 0: B = 0: DD = 0: FOR G = 0 TO 3: N = E(H + 4 * G + G): NN = E(H + 4 * (3 - G) + G) 1430 IF N = LD THEN A = N 1450 IF N = AB THEN L = 4: ' BOTH TESTS DONE 1460 IF NN = AB THEN LL = 4: ' BOTH TESTS DONE 1470 IF N = AA THEN L = L + Q: ' LOCATE 10,43:PRINT" N= ";N;" ";L;" A= ";A;" " 1480 IF NN = AA THEN LL = LL + Q: 'LOCATE 11,43:PRINT" NN= ";NN;" ";LL;" B= ";B;" " 1490 IF L = 2 AND A > 0 THEN DD = A: RETURN: ' LOCATE 13,43:PRINT "DD= ";DD;" N= "; 1500 IF LL = 2 AND B > 0 THEN DD = B: L = 2: RETURN: 'LOCATE 13,43:PRINT "DD= ";DD;" NN= ";NN;" LL= ";LL;" ": RETURN: ' RET Y VAL END IF 1510 NEXT G: ' LOCATE 23,1: INPUT A$ 1520 DD = 0: RETURN: ' FOR DIFFICULTY IF AA=80 THEN DD=AD 1530 LD = A(0, 0): LLD = A(3, 0): IF LD = 0 AND LLD = 0 THEN A = 0: L = 0: RETURN: ' NO PURE DIAGNL 1540 IF K <> 0 OR K <> 3 THEN GOTO 1650: ' NO PURE DIAGNL 1550 FOR G = 36 * 16 + Q TO 37 * 16 STEP 4 1560 IF LD <> E(G) OR LD <> E(G + 3) THEN A = LD: LD = 0: GOSUB 1590: IF DD > 0 THEN RETURN 1570 IF LLD <> E(G) OR LLD <> E(G + 3) THEN A = LLD: LLD = 0: GOSUB 1590: IF DD > 0 THEN RETURN END IF 1580 NEXT G: DD = 0: RETURN: ' NO SOLTN 1590 LL = 0: B = 0: FOR J = 0 TO 3: N = E(G + J): IF N = AA THEN LL = LL + Q 1600 IF N = AB THEN LL = 4: J = 4: GOTO 1630 1610 IF N < 65 THEN B = N 1620 NEXT J 1630 IF LL = 2 AND B > 0 THEN DD = A: L = 2: RETURN 1640 A = 0: L = 0: DIM H(4) ''?? 1650 FOR H = 1 TO 19 * 16 STEP 16 1660 FOR J = 1 TO 4 1670 A = 0: L = 0: FOR K = 1 TO 4 1680 N = D(H + 4 * (J - 1) + K - 1): IF N = 100 THEN L = L + 1 1690 IF N = 80 THEN L = 4 1700 IF N < 65 THEN H(K) = N ELSE H(K) = 0 1710 A = A + H(K): NEXT K: IF L = 2 AND A > 0 THEN GOSUB 1850 1720 IF L = 2 AND A > 0 AND DD > 0 THEN Y = DD: RETURN 1730 NEXT J: NEXT H 1740 FOR H = 1 TO 18 * 16 STEP 16 1750 FOR J = 1 TO 4 1760 A = 0: L = 0: FOR K = 1 TO 4 1770 N = E(H + 4 * (J - 1) + K - 1): IF N = 100 THEN L = L + 1 1780 IF N = 80 THEN L = 4 1790 IF N < 65 THEN H(K) = N ELSE H(K) = 0 1800 A = A + H(K): NEXT K: IF L = 2 AND A > 0 THEN GOSUB 1940 1810 IF L = 2 AND A > 0 AND DD > 0 THEN Y = DD: RETURN 1820 NEXT J: NEXT H 1830 IF DD > 0 THEN Y = DD 1840 RETURN 1850 DD = N: FOR G = 1 TO 4 1860 A = 0: FOR K = G TO G + 15 STEP 4 1870 N = D(H + 4 * (J - 1) + G - 1) 1880 IF H(G) > 0 THEN DD = N ELSE GOTO 1930 1890 N = D(H + (K - 1)): IF N = 100 THEN L = L + 1 1900 IF N < 65 THEN A = N 1910 IF N = 80 THEN L = 4 1920 NEXT K: IF L = 2 AND A > 0 THEN RETURN 1930 NEXT G: RETURN 1940 DD = N: FOR G = 1 TO 4 1950 A = 0: FOR K = G TO G + 15 STEP 4 1960 N = E(H + 4 * (J - 1) + G - 1) 1970 IF H(G) > 0 THEN DD = N ELSE GOTO 2020 'H( A( A( A( 1980 N = E(H + (K - 1)): IF N = 100 THEN L = L + 1 1990 IF N < 65 THEN A = N 2000 IF N = 80 THEN L = 4 2010 NEXT K: IF L = 2 AND A > 0 THEN RETURN 2020 NEXT G: RETURN 2030 RETURN 2040 AA = 80: AB = 100: GOSUB 880: IF DD > 0 AND L = 2 THEN RETURN 2050 AA = 100: AB = 80: GOSUB 880: RETURN 2060 'WINNER 3000 2070 IF L = 80 THEN Y$ = "'X'" ELSE Y$ = "'O'" 2080 LOCATE 23, 41: IF Y$ = "'X'" THEN COLOR BLUE + 16 ELSE COLOR RED + 16 2090 PRINT Y$ + " WON!!! "; : COLOR 15 2100 LOCATE 24, 7: PRINT "HIT ENTER"; 2110 INPUT "", A$ 2120 CHAIN "GAME" 2130 'CHECK 4000 2140 LOCATE 23, 42: PRINT "COMPUTER CHECKING MOVE! " 2150 IF Y$ = "'X'" THEN A = 80 ELSE A = 100: ' X=COMP/PLAYER2 O=PLAYER1 2160 FOR H = 1 TO 37 * 16 2170 IF E(H) = Z THEN E(H) = A: MOVE = FALSE: ' = Player 2/Computer/Player1 2180 NEXT H 2190 FOR H = 0 TO 2 * 80 - Q: ' 3 WAY CENTER PLANES 2200 IF L(H) = Z THEN L(H) = A 2210 NEXT H 2220 FOR H = 0 TO 8 * 22 - Q: ' 3 WAY CORNER DIAGNLS 2230 IF F(H) = Z THEN F(H) = A 2240 NEXT H 2250 IF MOVE THEN RETURN: ' =MOVE ALREADY TAKEN! 2260 'LOCATE 23,42:PRINT"COMPUTER THINKING! " 2270 FOR H = 1 TO 37 * 16 STEP 4: L = 0 2280 IF E(H) = A AND E(H + 1) = A AND E(H + 2) = A AND E(H + 3) = A THEN L = A 2290 'LOCATE 22,42: 'PRINT "H= ";H;" ";D(H);",";D(H+1);",";D(H+2);",";D(H+3);" ";: 'INPUT A$ 2300 IF L > 0 THEN RETURN: '4 IN A ROW 2310 NEXT H 2320 'RETURN 2330 '' NO MORE MOVES? 2340 CAT = TRUE 2350 FOR H = 1 TO 64 2360 IF (E(H) > 0 AND E(H) < 65) THEN CAT = FALSE 2370 NEXT H 2380 IF CAT THEN COLOR 14 + 16: LOCATE 23, 42: PRINT "CAT WON!!! ": INPUT A$: CHAIN "GAME" END IF 2390 RETURN 2400 'DATA PLANES 5000 2410 DATA 1, 2, 3, 4 2420 DATA 5, 6, 7, 8 2430 DATA 9,10,11,12 2440 DATA 13,14,15,16 2450 '' SW - TOP FACE 1ST SHEET 2460 DATA 17,18,19,20 2470 DATA 21,22,23,24 2480 DATA 25,26,27,28 2490 DATA 29,30,31,32 2500 '' SW - TOP FACE 2ND SHEET 2510 DATA 33,34,35,36 2520 DATA 37,38,39,40 2530 DATA 41,42,43,44 2540 DATA 45,46,47,48 2550 '' SW - TOP FACE 3RD SHEET 2560 DATA 49,50,51,52 2570 DATA 53,54,55,56 2580 DATA 57,58,59,60 2590 DATA 61,62,63,64 2600 '' SW - TOP FACE 4TH SHEET = BOTTOM SHEET 2610 DATA 1, 2, 3, 4 2620 DATA 17,18,19,20 2630 DATA 33,34,35,36 2640 DATA 49,50,51,52 2650 '' SW - LEFT FACE 1ST SHEET 2660 DATA 5, 6, 7, 8 2670 DATA 21,22,23,24 2680 DATA 37,38,39,40 2690 DATA 53,54,55,56 2700 '' SW - LEFT FACE 2ND SHEET 2710 DATA 9,10,11,12 2720 DATA 25,26,27,28 2730 DATA 41,42,43,44 2740 DATA 57,58,59,60 2750 '' SW - LEFT FACE 3RD SHEET 2760 DATA 13,14,15,16 2770 DATA 29,30,31,32 2780 DATA 45,46,47,48 2790 DATA 61,62,63,64 2800 '' SW - LEFT FACE 4TH SHEET = RIGHT SHEET 2810 DATA 1, 5, 9,13 2820 DATA 17,21,25,29 2830 DATA 33,37,41,45 2840 DATA 49,53,57,61 2850 '' E - BACK FACE 1ST SHEET 2860 DATA 2, 6,10,14 2870 DATA 18,22,26,30 2880 DATA 34,38,42,46 2890 DATA 50,54,58,62 2900 '' E - BACK FACE 2ND SHEET 2910 DATA 3, 7,11,15 2920 DATA 19,23,27,31 2940 DATA 51,55,59,63 2950 '' E - BACK FACE 3RD SHEET 2960 DATA 4, 8,12,16 2970 DATA 20,24,28,32 2980 DATA 36,40,44,48 2990 DATA 52,56,60,64 3000 '' E - BACK FACE 4TH SHEET = FRONT SHEET 3010 DATA 1, 2, 3, 4 3020 DATA 21,22,23,24 3030 DATA 41,42,43,44 3040 DATA 61,62,63,64 3050 '' SW TP LEFT\BT RIGHT DIAGONAL 3060 DATA 13,14,15,16 3070 DATA 25,26,27,28 3080 DATA 37,38,39,40 3090 DATA 49,50,51,52 3100 '' SW TP RIGHT/BT LEFT DIAGONAL 3110 DATA 1, 5, 9,13 3120 DATA 18,22,26,30 3130 DATA 35,39,43,47 3140 DATA 52,56,60,64 3150 '' EAST TP BACK/BT FRONT DIAGONAL 3160 DATA 4, 8,12,16 3170 DATA 19,23,27,31 3180 DATA 34,38,42,46 3190 DATA 49,53,57,61 3200 '' EAST TP FRONT\BT BACK DIAGONAL 3210 DATA 1, 6,11,16 3220 DATA 17,22,27,32 3230 DATA 33,38,43,48 3240 DATA 49,54,59,64 3250 '' SE VERT DIAGONAL 3260 DATA 13,10, 7, 4 3270 DATA 29,26,23,20 3280 '' 45,42,39,36 3290 DATA 61,58,55,52 3300 '' SW VERT DIAGONAL 3310 DATA 1,22,43,64 3320 DATA 4,23,42,61 3330 DATA 16,27,38,49 3340 DATA 13,26,39,52 3350 '' 4 LONE DIAGONALS 3360 'RETURN 3370 DATA 8, 7, 6, 5, 23,38,53, 24,40,56 3380 DATA 12,11,10, 9, 27,42,57, 28,44,60 3390 DATA 5, 6, 7, 8, 22,39,56, 21,13,53 3400 DATA 9,10,11,12, 26,43,60, 25,17,57 3410 DATA 53,54,55,56, 38,23, 8, 37,21, 5 3420 DATA 57,58,59,60, 42,27,12, 41,25, 9 3430 DATA 56,55,54,53, 39,22, 5, 40,24, 8 3440 DATA 60,59,58,57, 43,26, 9, 44,28,12 3450 '' CIRCULAR 3460 DATA 17,18,19,20, 21,25,29, 22,27,32 3470 DATA 33,34,35,36, 37,41,45, 38,43,48 3480 DATA 29,25,21,17, 30,31,32, 26,23,20 3490 DATA 45,41,37,33, 46,47,48, 42,39,36 3500 DATA 32,31,30,29, 28,24,20, 27,22,17 3510 DATA 48,47,46,45, 44,40,36, 43,38,33 3520 DATA 20,24,28,32, 19,18,17, 23,26,29 3530 DATA 36,40,44,48, 35,34,33, 39,42,45 3540 '' HORZ 3550 DATA 2, 6,10,14, 18,34,50, 22,42,62 3560 DATA 3, 7,11,15, 19,35,51, 23,43,63 3570 DATA 14,10, 6, 2, 30,46,62, 26,38,50 3580 DATA 15,11, 7, 3, 31,47,63, 27,39,51 3590 DATA 62,46,30,14, 59,54,50, 42,22, 2 3600 DATA 63,47,31,15, 60,55,51, 43,23, 3 3610 DATA 50,54,58,62, 34,18, 2, 38,26,14 3620 DATA 51,55,59,63, 35,19, 3, 39,27,15 3630 '' VERT 3640 DATA 1, 5, 9,13, 6,11,16, 2, 3, 4, 18,35,52, 17,33,49, 21,41,61, 22,43,64 3650 DATA 13,14,15,16, 10, 7, 4, 9, 5, 1, 25,37,49, 29,45,61, 30,47,64, 26,39,52 3660 DATA 16,12,8,4, 11,6, 1, 15,14,13, 31,46,61, 32,48,64, 28,40,52, 27,38,49 3670 DATA 4, 3, 2, 1, 7,10,13, 8,12,16, 24,44,64, 20,36,52, 19,34,49, 23,42,61 3680 '' TOP CORNERS 3690 DATA 49,53,57,61, 54,59,64, 50,51,52,34,19, 4, 33,17, 1, 37,25,13, 38,27,16 3700 DATA 61,57,53,49, 41,21, 1, 45,29,13,46,31,16, 62,63,64, 58,55,52, 42,23, 4 3710 DATA 64,63,62,61, 47,41,13, 48,32,16,44,24, 4, 60,56,52, 59,54,49, 43,22, 1 3720 DATA 52,56,60,64, 40,28,16, 36,20, 4,35,18, 1, 51,50,49, 55,58,61, 39,26,13 3730 '' BOTTOM CORNERS 3740 DIM D(19 * 16 + 5): RESTORE: ' ALL PLANES & DIAGONALS 3750 FOR H = 1 TO 19 * 16 3760 READ D(H) 3770 NEXT H 3780 DIM E(37 * 16 + 5): ' ALL LINES OF 4 3790 FOR H = 1 TO 18 * 16 3800 E(H) = D(H) 3810 NEXT H 3820 N = Q: FOR H = 1 TO 18 * 16 STEP 16: ' NUM OF PLANES ==ADD ROTATED 18 PLANES 3830 FOR K = 0 TO 3 3840 FOR J = 1 TO 16 STEP 4 3850 E(18 * 16 + N) = D(H + K + J - Q): N = N + Q 3860 'PRINT E(18*16+N-Q); 3870 NEXT J: 'PRINT 3880 NEXT K: 'PRINT" N= ";N:INPUT U$ 3890 NEXT H: 'PRINT 3900 FOR H = 1 TO 16: ' ==ADD PURE DIAGONALS 3910 E(36 * 16 + H) = D(18 * 16 + H) 3920 'PRINT" ";E(36*16+H); 3930 NEXT H: ' RETURN 3940 DIM L(3 * 8 * 10): FOR H = 0 TO 239 STEP 10: FOR K = 0 TO 9: READ L(H + K): 'PRINT L(H+K);" "; 3950 NEXT K: NEXT H: ' PRINT:NEXT H: INPUT A$ 3960 DIM F(2 * (3 * 7 + 1) * 4): FOR H = 0 TO 175 STEP 22: FOR K = 0 TO 21: READ F(H + K): 'PRINT F(H+K);" "; 3970 NEXT K: NEXT H: '' PRINT:NEXT H: INPUT A$ 3980 RETURN 3990 LOCATE 1, 1: FOR H = 1 TO 37 * 16 STEP 16: FOR K = 0 TO 3: FOR J = 0 TO 3: PRINT E(H + 4 * K + J); 4000 NEXT J: PRINT : NEXT K: PRINT (H - 1) / 16 + 1: INPUT A$: NEXT H 4010 RETURN 4020 'PRINT MOVE 6000 4030 G(Z) = 1: MOVE = TRUE 4040 GOSUB 2130: ' CHECK IF MOVE IS LEGAL?/NEXT COMPUTER MOVE 4050 IF MOVE THEN RETURN: ' BAD MOVE 4060 GOSUB 4360: ' GET COORDS A O B C FOR SCREEN (X,Y) 4070 IF Y$ = "'X'" THEN COLOR BLUE ELSE COLOR RED 4080 LOCATE 3 + C * 5 + A, 20 + B * 6 - C * 5: PRINT Y$: COLOR 15 4090 RETURN 4100 FOR Z = 1 TO 64 4110 'GOSUB 8000 4120 'LOCATE 3+C*5+A,20+B*6-C*5:PRINT Z 4130 NEXT Z 4140 RETURN 4150 'SCREEN GRID 7000 4160 PRINT " 1-----5-----9-----13 " 4170 PRINT " /17---/21---/25---/29 " 4180 PRINT " //33--//37--//41--//45 " 4190 PRINT " ///49-///53-///57-///61 " 4200 PRINT " //// //// //// //// " 4210 PRINT " 2-----6-----10----14// " 4220 PRINT " /18---/22---/26---/30/ " 4230 PRINT " //34--//38--//42--//46 " 4240 PRINT " ///50-///54-///58-///62 " 4250 PRINT " //// //// //// //// " 4260 PRINT " 3-----7-----11----15// " 4270 PRINT " /19---/23---/27---/31/ " 4280 PRINT " //35--//39--//43--//47 " 4290 PRINT " ///51-///55-///59-///63 " 4300 PRINT " //// //// //// //// " 4310 PRINT " 4-----8-----12----16// " 4320 PRINT " 20----24----28----32/ " 4330 PRINT " 36----40----44----48 " 4340 PRINT " 52----56----60----64 " 4350 RETURN 4360 'COORD 8000 4370 A = INT((Z - .5) / 16) 4380 O = Z - 16 * A 4390 B = INT((O - .5) / 4) 4400 C = O - S * B - 1 4410 RETURN 4420 '' SAVE 4430 '' SCREEN 0,0,0 4440 '' SAVE"SPRTC 4450 '' SYSTEM END



RETURN TO TOP
PREVIOUS MENU
RETURN TO PMC MENU
HOME PAGE
Hosted by www.Geocities.ws

1