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