This is non-commercial site, its content is based on Atari 8-bit home computer contents and references.
If you feel your rights are violated by showing/using any part of contents of your product represented on this page,
please contact me immediatelly so I can remove it!
|
|
|
-
Entry name:Magic Square
-
Category:Games
-
Publisher/Developer:BELLCOM - Public Domain Library
-
Year:1982
Listing 1
1 REM MAGIC SQUARE 2 REM AUTHOR UNKNOWN 3 REM COPYRIGHT FOR DISSEMINATION BY CUE, INC 1982 4 REM SOFTSWAP (415)363-5472 5 REM 333 MAIN STREET, REDWOOD CITY, 6 REM CA. 94063 10 REM NUMBER SQUARE GAME 11 V0=0:V1=1:V2=2:V3=3:V4=4:V5=5:V6=6:V7=7:V8=8:V9=9:V10=10:V11=11:V12=12:V16=16:V18=18:V20=20 12 AA=1:BB=2:CC=3:DD=4:EE=0:SND2=30:N1=0:N2=0:N3=0:EBD1=0 13 OPEN #1,4,0,"K:":SW=0:R2=0:GOTO 30 15 I=B(XP,YP):GOSUB 4230 16 IF I=16 THEN X1=XP:Y1=YP 17 XIO V18,#6,V0,V0,"S:":X=AX(XP):Y=AY(YP):GOSUB 3000+I*V20:GOSUB 4240:RETURN 20 SUMA(V1)=B(V1,V1)+B(V1,V2)+B(V1,V3)+B(V1,V4):SUMA(V2)=B(V2,V1)+B(V2,V2)+B(V2,V3)+B(V2,V4) 21 SUMA(V3)=B(V3,V1)+B(V3,V2)+B(V3,V3)+B(V3,V4):SUMA(V4)=B(V4,V1)+B(V4,V2)+B(V4,V3)+B(V4,V4) 22 SUMA(V5)=B(V1,V1)+B(V2,V1)+B(V3,V1)+B(V4,V1):SUMA(V6)=B(V1,V2)+B(V2,V2)+B(V3,V2)+B(V4,V2) 23 SUMA(V7)=B(V1,V3)+B(V2,V3)+B(V3,V3)+B(V4,V3):SUMA(V8)=B(V1,V4)+B(V2,V4)+B(V3,V4)+B(V4,V4) 24 SUMA(V9)=B(V1,V1)+B(V2,V2)+B(V3,V3)+B(V4,V4):SUMA(V10)=B(V1,V4)+B(V2,V3)+B(V3,V2)+B(V4,V1) 25 SUM=0:FOR II=V1 TO V10:SUM=SUM+ABS(SUMA(II)-30):NEXT II 26 RETURN 30 DIM B(4,4),ANS$(1),SUMA(10),SUMB(10),NAM$(15),OPT$(5),DIFF$(5) 33 NAM$=" ":OPT$=" ":DIFF$=" ":NAM$=" ":OPT$=" ":DIFF$=" " 40 DIM AX(5),AY(5),XCOR(10),YCOR(10) 42 AX(1)=5:AX(2)=30:AX(3)=55:AX(4)=80:AY(1)=5:AY(2)=24:AY(3)=43:AY(4)=62 44 DIM SOND(24) 45 SOND(1)=108:SOND(2)=108:SOND(3)=108:SOND(4)=81:SOND(5)=53:SOND(6)=60:SOND(7)=64:SOND(8)=72 46 SOND(9)=40:SOND(10)=53:SOND(11)=60:SOND(12)=64:SOND(13)=72:SOND(14)=40:SOND(15)=53:SOND(16)=60 47 SOND(17)=64:SOND(18)=60:SOND(19)=72:SOND(20)=108 51 XCOR(1)=7:XCOR(2)=32:XCOR(3)=57:XCOR(4)=82:XCOR(5)=103:XCOR(6)=103:XCOR(7)=103:XCOR(8)=103:XCOR(9)=114 54 XCOR(10)=118:YCOR(1)=80:YCOR(2)=80:YCOR(3)=80:YCOR(4)=80:YCOR(5)=8:YCOR(6)=27:YCOR(7)=46:YCOR(8)=65 57 YCOR(9)=80:YCOR(10)=1 68 GRAPHICS 0 70 SETCOLOR 4,4,4:SETCOLOR 2,11,6:SETCOLOR 3,12,8:SETCOLOR 1,12,2 71 POKE 752,1:POKE 82,7 72 GOSUB 1100 73 POSITION 11,8:SOUND 1,72,10,10 74 ? #6;"This program is provided" 76 ? #6;"for everyone's enjoyment." 78 ? #6;"No copyright restrictions " 80 ? #6;"are enforced or intended." 82 ? #6;" I wish to acknowledge the" 84 ? #6;"use of the basic Magic Square" 86 ? #6;"algorithm as developed by" 88 ? #6;"Marc I. Leavey, in the June" 90 ? #6;"1981 issue of Microcomputing." 91 ? #6;" " 93 POSITION 4,23 94 ? #6;"Push to go on" 95 POKE 82,2:GOSUB 4240:GET #1,X 150 GOSUB 750 160 IF T=1 THEN 360 210 FOR I=1 TO 4:FOR J=1 TO 4:READ DA:B(I,J)=DA:NEXT J:NEXT I 270 DATA 1,6,15,8,12,11,2,5,10,13,4,3,7,16,9,14 280 I1=4:J1=2:GOTO 430 360 FOR I=1 TO 4:FOR J=1 TO 4:B(I,J)=(I-1)*4+J:NEXT J:NEXT I:I1=4:J1=4 430 R1=20/DD 480 FOR Q=1 TO DD 490 M=INT(1+RND(0)*4) 500 ON M GOTO 510,560,610,660 510 IF I1=1 THEN GOTO 490 512 B(I1,J1)=B(I1-1,J1):B(I1-1,J1)=16:I1=I1-1:GOTO 700 560 IF I1=4 THEN GOTO 490 562 B(I1,J1)=B(I1+1,J1):B(I1+1,J1)=16:I1=I1+1:GOTO 700 610 IF J1=1 THEN GOTO 490 612 B(I1,J1)=B(I1,J1-1):B(I1,J1-1)=16:J1=J1-1:GOTO 700 660 IF J1=4 THEN GOTO 490 662 B(I1,J1)=B(I1,J1+1):B(I1,J1+1)=16:J1=J1+1 700 GOSUB 4210:R2=R2+R1:FOR II=2 TO INT(R2):POSITION 34,II+2:? #6;"" 710 NEXT II 711 NEXT Q 712 GOSUB 4240 720 POSITION 34,22:? #6;"":POSITION 8,21:? #6;"COMPLETE":GET #1,X:GOTO 1500 750 GRAPHICS 1+16 751 SOUND 1,108,10,10 765 IF EBD1=1 THEN N2=0:N3=0:GOTO 811 770 POSITION 4,0:? #6;"magic square":POSITION 3,3:? #6;"THIS MAGIC SQUARE":? #6;"GAME HAS TWO OPTIONS" 776 POSITION 0,7:? #6;".-ARRANGE":? #6;" 15 NUMBERS IN":? #6;" SEQUENTIAL ORDER" 782 POSITION 0,12:? #6;".-ARRANGE 15":? #6;" NUMBERS SO THAT":? #6;" 4 ROWS, 4 COLUMNS" 794 ? #6;" AND 2 DIAGONALS":POSITION 2,16:? #6;"EACH ADD UP TO 30":POSITION 2,19:? #6;"requires joystick" 806 GOSUB 4240 807 POSITION 0,21:? #6;" HIT RETURN TO GO ON":GET #1,X 811 GOSUB 4240:? #6;"" 812 POSITION 4,1:? #6;"magic square":POSITION 3,5:? #6;"":POSITION 6,6:? #6;"" 820 POSITION 0,8:? #6;" ";NAM$:POSITION 6,9:? #6;"^^^^^^^^^^^^^":POSITION 3,10:? #6;"" 831 POSITION 8,13:? #6;"" 832 POSITION 0,12:? #6;" ";OPT$:POSITION 3,14:? #6;"":POSITION 12,17:? #6;"" 844 POSITION 0,16:? #6;" ";DIFF$:POSITION 3,18:? #6;"" 856 POSITION 0,22:? #6;"hit to go on" 858 IF EBD1=1 THEN POSITION 8,13:? #6;"^^^":EBD1=0 860 IF N1=1 THEN GOTO 880 863 TRAP 863:GET #1,X:IF X<>126 THEN 870 864 IF LEN(NAM$)=1 THEN 820 865 NAM$=NAM$(1,LEN(NAM$)-1):POSITION 0,8:? #6;" ":GOTO 820 870 IF X=155 THEN N1=1:POSITION 8,13:? #6;"^^^":GOTO 880 871 IF X=32 THEN GOTO 873 872 IF X<65 OR X>90 THEN GOTO 863 873 IF LEN(NAM$)=14 THEN GOTO 863 874 NAM$(LEN(NAM$)+1)=CHR$(X) 875 GOSUB 4220:GOSUB 4240 876 GOTO 820 880 IF N2=1 THEN GOTO 904 884 TRAP 884:GET #1,X 886 IF X<>126 THEN GOTO 892 887 IF LEN(OPT$)=1 THEN 890 888 OPT$=OPT$(1,LEN(OPT$)-1) 890 POSITION 0,12:? #6;" ":GOTO 832 892 IF X=155 THEN GOTO 902 894 IF X=32 THEN GOTO 897 896 IF X<65 OR X>90 THEN GOTO 884 897 IF LEN(OPT$)=4 THEN GOTO 884 898 OPT$(LEN(OPT$)+1)=CHR$(X) 899 GOSUB 4220:GOSUB 4240 900 GOTO 832 902 N2=1 903 POSITION 12,17:? #6;"^^^" 904 IF N3=1 THEN GOTO 926 908 TRAP 908:GET #1,X 909 DIFF$(1,1)=" " 910 IF X<>126 THEN GOTO 916 911 IF LEN(DIFF$)=1 THEN 914 912 DIFF$=DIFF$(1,LEN(DIFF$)-1) 914 POSITION 0,16:? #6;" ":GOTO 844 916 IF X=155 THEN GOTO 924 917 IF X=32 THEN GOTO 919 918 IF X<48 OR X>58 THEN GOTO 908 919 IF LEN(DIFF$)=4 THEN GOTO 908 920 DIFF$(LEN(DIFF$)+1)=CHR$(X) 921 IF VAL(DIFF$)>500 THEN 912 922 GOSUB 4220:GOSUB 4240 923 GOTO 844 924 N3=1 926 DD=VAL(DIFF$) 929 IF OPT$(2,2)="S" THEN T=1:GOTO 932 930 T=2 932 TRAP 40000:GRAPHICS 0 934 SETCOLOR 4,4,4:SETCOLOR 2,11,6:SETCOLOR 1,12,2:SETCOLOR 3,8,4:POKE 752,1 950 GOSUB 1100 951 IF T=1 THEN 1000 953 SOUND 1,128,10,10 954 POSITION 3,5 956 ? #6;" This game is played by" 958 ? #6;"arranging 15 numbers in a" 960 ? #6;"4X4 matrix so that the 4" 962 ? #6;"rows, 4 columns, and 2 " 964 ? #6;"diagonals each add up to" 966 ? #6;"30. Using the joystick in" 968 ? #6;"the first from left port," 969 ? #6;"numbers can be moved into" 970 ? #6;"the zero square(identified" 971 ? #6;"by a small '0'). Pushing" 972 ? #6;"the trigger (and holding" 973 ? #6;"it down) will produce" 974 ? #6;"helpful data-but only once" 975 ? #6;"per move. The program is" 976 ? #6;"generating the matrix." 977 ? #6;"Push when the count-" 978 ? #6;"down on the right is done." 979 GOSUB 4240 980 GOSUB 990:RETURN 990 FOR I=1 TO 20:POSITION 33,I+3 991 IF I=20 THEN ? #6;" -GO":GOTO 993 992 ? #6;" ";I-20 993 NEXT I 994 POSITION 33,3:? #6;"":RETURN 1000 POSITION 3,6 1001 SOUND 1,128,10,10 1002 ? #6;" This game is played by" 1004 ? #6;"arranging 15 numbers in" 1006 ? #6;"sequential order on a 4x4" 1008 ? #6;"matrix. Using the joy-" 1010 ? #6;"stick in the first port" 1012 ? #6;"from the left, move num-" 1014 ? #6;"bers into the blank square." 1015 ? #6;"Arrange the numbers top to" 1016 ? #6;"bottom and left to right." 1017 ? #6;"The program is now calcu-" 1018 ? #6;"lating the matrix. The" 1019 ? #6;"trigger has no effect. Push" 1020 ? #6;"the key when the" 1022 ? #6;"countdown on the right is" 1024 ? #6;"complete." 1025 GOSUB 4240 1026 GOSUB 990:RETURN 1100 POSITION 4,1:? #6;" " 1101 POSITION 4,2:? #6;" " 1102 POSITION 4,3:? #6;" ":RETURN 1500 GRAPHICS 7+16:POKE 765,3:SETCOLOR 0,5,2:SETCOLOR 1,6,4:SETCOLOR 2,9,8:SETCOLOR 3,12,0 1550 SETCOLOR 4,4,8:C=0:X1=0:Y1=0:COLOR AA 1602 PLOT 1,1:DRAWTO 26,1:DRAWTO 26,77:DRAWTO 51,77:DRAWTO 51,1:DRAWTO 76,1:DRAWTO 76,77:DRAWTO 101,77 1604 DRAWTO 101,58:DRAWTO 76,58:POSITION 76,77:XP=V4:YP=V4:GOSUB 15 1650 PLOT 76,58:DRAWTO 26,58:POSITION 26,77:XP=V2:YP=V4:GOSUB 15 1670 PLOT 26,58:DRAWTO 1,58:DRAWTO 1,39:PLOT 26,39:DRAWTO 1,39:POSITION 1,58:XP=V1:YP=V3:GOSUB 15 1710 PLOT 51,39:DRAWTO 26,39:POSITION 26,58:XP=V2:YP=V3:GOSUB 15 1830 PLOT 76,39:DRAWTO 51,39:POSITION 51,58:XP=V3:YP=V3:GOSUB 15 1865 PLOT 76,39:DRAWTO 101,39:DRAWTO 101,20:DRAWTO 76,20:POSITION 76,39:XP=V4:YP=V2:GOSUB 15 1910 PLOT 76,20:DRAWTO 51,20:POSITION 51,39:XP=V3:YP=V2:GOSUB 15 1945 PLOT 51,20:DRAWTO 26,20:POSITION 26,39:XP=V2:YP=V2:GOSUB 15 1980 PLOT 26,20:DRAWTO 1,20:DRAWTO 1,1:POSITION 1,20:XP=V1:YP=V1:GOSUB 15 2020 PLOT 51,1:DRAWTO 26,1:POSITION 26,20:XP=V2:YP=V1:GOSUB 15 2052 PLOT 76,1:DRAWTO 51,1:POSITION 51,20:XP=V3:YP=V1:GOSUB 15 2080 PLOT 101,20:DRAWTO 101,1:DRAWTO 76,1:POSITION 76,20:XP=V4:YP=V1:GOSUB 15 2120 PLOT 101,58:DRAWTO 101,39:DRAWTO 76,39:POSITION 76,58:XP=V4:YP=V3:GOSUB 15 2155 PLOT 76,77:DRAWTO 51,77:PLOT 76,58:DRAWTO 51,58:POSITION 51,77:XP=V3:YP=V4:GOSUB 15 2190 PLOT 26,77:DRAWTO 1,77:DRAWTO 1,58:PLOT 26,58:DRAWTO 1,58:POSITION 1,77:XP=V1:YP=V4:GOSUB 15 2240 PLOT 1,39:DRAWTO 1,20:PLOT 26,20:DRAWTO 1,20:POSITION 1,39:XP=V1:YP=V2:GOSUB 15 2283 GOSUB 4240 2284 GOSUB 4840:GOSUB 20:DIR=5:SEC=0 2285 POKE 18,0:POKE 19,0:POKE 20,0 2300 IF SEC=2 THEN 2311 2303 IF T=1 THEN 2311 2305 IF STRIG(0)=0 THEN GOTO 4000 2311 RED=0:POKE 77,0 2315 IF HNT<>1 THEN GOTO 2319 2316 COLOR EE:GOSUB 4705:HNT=0 2317 GOSUB 4800:GOSUB 4100 2319 DIR=5:STK=STICK(0) 2320 IF STK=15 THEN 2700 2322 SEC=0 2325 IF STK<>11 THEN 2400 2336 IF X1=4 THEN 2400 2337 SW=SW+1 2338 SOUND 1,72,10,10 2339 I=B(X1+1,Y1) 2342 COLOR CC 2345 X=AX(X1+1):Y=AY(Y1) 2348 GOSUB 3000+I*20 2351 I=16:X=AX(X1) 2354 GOSUB 3000+I*20 2357 COLOR AA 2360 X=AX(X1+1) 2363 GOSUB 3000+I*20 2366 I=B(X1+1,Y1) 2369 X=AX(X1) 2372 GOSUB 3000+I*20 2375 B(X1,Y1)=I 2378 B(X1+1,Y1)=16 2381 X1=X1+1 2382 GOSUB 4240 2384 GOSUB 3400:REM *CALCULATE SUMS* 2400 IF STK<>14 THEN 2500 2425 IF Y1=4 THEN 2500 2427 SW=SW+1 2428 SOUND 1,91,10,10 2430 I=B(X1,Y1+1) 2433 COLOR CC 2436 X=AX(X1):Y=AY(Y1+1) 2439 GOSUB 3000+I*20 2442 I=16:Y=AY(Y1) 2445 GOSUB 3000+I*20 2448 COLOR AA 2451 Y=AY(Y1+1) 2454 GOSUB 3000+I*20 2457 I=B(X1,Y1+1) 2460 Y=AY(Y1) 2463 GOSUB 3000+I*20 2466 B(X1,Y1)=I 2469 B(X1,Y1+1)=16 2472 Y1=Y1+1 2473 GOSUB 4240 2475 GOSUB 3400:REM *CALCULATE SUMS* 2500 IF STK<>7 THEN 2600 2525 IF X1=1 THEN 2600 2527 SW=SW+1 2528 SOUND 1,108,10,10 2530 I=B(X1-1,Y1) 2533 COLOR CC 2536 X=AX(X1-1):Y=AY(Y1) 2539 GOSUB 3000+I*20 2542 I=16:X=AX(X1) 2545 GOSUB 3000+I*20 2548 COLOR AA 2551 X=AX(X1-1) 2554 GOSUB 3000+I*20 2557 I=B(X1-1,Y1) 2560 X=AX(X1) 2563 GOSUB 3000+I*20 2566 B(X1,Y1)=I 2569 B(X1-1,Y1)=16 2572 X1=X1-1 2573 GOSUB 4240 2575 GOSUB 3400:REM *CALCULATE SUM* 2600 IF STK<>13 THEN GOTO 2700 2625 IF Y1=1 THEN 2700 2627 SW=SW+1 2628 SOUND 1,128,10,10 2630 I=B(X1,Y1-1) 2633 COLOR CC 2636 X=AX(X1):Y=AY(Y1-1) 2639 GOSUB 3000+I*20 2642 I=16:Y=AY(Y1) 2645 GOSUB 3000+I*20 2648 COLOR AA 2651 Y=AY(Y1-1) 2654 GOSUB 3000+I*20 2657 I=B(X1,Y1-1) 2660 Y=AY(Y1) 2663 GOSUB 3000+I*20 2666 B(X1,Y1)=I 2669 B(X1,Y1-1)=16 2672 Y1=Y1-1 2673 GOSUB 4240 2675 GOSUB 3400 2700 GOTO 2300 2702 GOTO 2300 3020 PLOT X+6,Y+3 3021 DRAWTO X+9,Y:DRAWTO X+9,Y+10:PLOT X+6,Y+10:DRAWTO X+12,Y+10:RETURN 3040 PLOT X+6,Y+2 3041 DRAWTO X+8,Y:DRAWTO X+10,Y:DRAWTO X+12,Y+2:DRAWTO X+12,Y+4:DRAWTO X+6,Y+7:DRAWTO X+6,Y+10 3047 DRAWTO X+12,Y+10:RETURN 3060 PLOT X+6,Y 3061 DRAWTO X+12,Y:DRAWTO X+7,Y+3:DRAWTO X+12,Y+6:DRAWTO X+12,Y+9:DRAWTO X+11,Y+10 3066 DRAWTO X+7,Y+10:DRAWTO X+6,Y+9:RETURN 3080 PLOT X+12,Y+7 3081 DRAWTO X+6,Y+7:DRAWTO X+10,Y:DRAWTO X+10,Y+10:RETURN 3100 PLOT X+12,Y 3101 DRAWTO X+6,Y:DRAWTO X+6,Y+3:DRAWTO X+12,Y+5:DRAWTO X+12,Y+8:DRAWTO X+10,Y+10 3106 DRAWTO X+8,Y+10:DRAWTO X+6,Y+8:RETURN 3120 PLOT X+11,Y 3121 DRAWTO X+9,Y:DRAWTO X+6,Y+3:DRAWTO X+6,Y+8:DRAWTO X+8,Y+10:DRAWTO X+10,Y+10:DRAWTO X+10,Y+10:DRAWTO X+12,Y+8:DRAWTO X+12,Y+6 3129 DRAWTO X+10,Y+4:DRAWTO X+8,Y+4:DRAWTO X+6,Y+6:RETURN 3140 PLOT X+6,Y 3141 DRAWTO X+12,Y:DRAWTO X+7,Y+10:RETURN 3160 PLOT X+8,Y+5 3161 DRAWTO X+6,Y+3:DRAWTO X+6,Y+2:DRAWTO X+8,Y:DRAWTO X+10,Y:DRAWTO X+12,Y+2:DRAWTO X+12,Y+3 3167 DRAWTO X+10,Y+5:DRAWTO X+8,Y+5:DRAWTO X+6,Y+7:DRAWTO X+6,Y+8:DRAWTO X+8,Y+10:DRAWTO X+10,Y+10:DRAWTO X+12,Y+8:DRAWTO X+12,Y+7 3175 DRAWTO X+8,Y+5:RETURN 3180 PLOT X+7,Y+10 3181 DRAWTO X+9,Y+10:DRAWTO X+12,Y+7:DRAWTO X+12,Y+2:DRAWTO X+10,Y:DRAWTO X+8,Y:DRAWTO X+6,Y+2:DRAWTO X+6,Y+4:DRAWTO X+8,Y+6 3189 DRAWTO X+10,Y+6:DRAWTO X+12,Y+4:RETURN 3200 PLOT X,Y+3 3201 DRAWTO X+3,Y:DRAWTO X+3,Y+10:PLOT X,Y+10:DRAWTO X+6,Y+10:PLOT X+10,Y+2:DRAWTO X+12,Y:DRAWTO X+14,Y:DRAWTO X+16,Y+2 3209 DRAWTO X+16,Y+8:DRAWTO X+14,Y+10:DRAWTO X+12,Y+10:DRAWTO X+10,Y+8:DRAWTO X+10,Y+3:RETURN 3220 XSAVE=X:X=X-6 3221 GOSUB 3020:X=X+10:GOSUB 3020:X=XSAVE:RETURN 3240 XSAVE=X:X=X-6 3241 GOSUB 3020:X=X+10:GOSUB 3040:X=XSAVE:RETURN 3260 XSAVE=X:X=X-6 3261 GOSUB 3020:X=X+10:GOSUB 3060:X=XSAVE:RETURN 3280 XSAVE=X:X=X-6 3281 GOSUB 3020:X=X+10:GOSUB 3080:X=XSAVE:RETURN 3300 XSAVE=X:X=X-6 3301 GOSUB 3020:X=X+10:GOSUB 3100:X=XSAVE:RETURN 3320 IF T=1 THEN 3329 3321 PLOT X+12,Y 3322 DRAWTO X+12,Y+2:DRAWTO X+13,Y+3:DRAWTO X+14,Y+3:DRAWTO X+15,Y+2:DRAWTO X+15,Y:DRAWTO X+14,Y-1:DRAWTO X+13,Y-1 3329 C=1:RETURN 3400 IF T=2 THEN 3410 3401 CCC=0 3402 FOR I=1 TO 4:FOR J=1 TO 4 3403 IF B(I,J)<CCC THEN POP:RETURN 3404 CCC=B(I,J) 3405 NEXT J:NEXT I 3406 GOTO 3432 3410 B(X1,Y1)=0:GOSUB 20 3420 IF SUM=0 THEN GOTO 3432 3425 B(X1,Y1)=16 3430 RETURN 3432 COLOR AA 3433 PLOT 109,39:DRAWTO 109,71:DRAWTO 159,71:DRAWTO 159,39:DRAWTO 109,39:A=0:GOSUB 3450:GOSUB 6400 3434 FOR J=1 TO 16 STEP 5:FOR I=1 TO 3:SETCOLOR 2,J+2,6:SOUND 1,SOND(I+J-1),10,10 3436 FOR W=1 TO 8:NEXT W:SOUND 1,0,0,0 3439 A=INT(RND(0)*3+1):COLOR A:PLOT 110+I,70:DRAWTO 110+I*2,40:PLOT 160-I,70:DRAWTO 160-I*2,40:NEXT I 3440 FOR I=5 TO 22:A=INT(RND(0)*3+1):COLOR A:PLOT 110+I,70:DRAWTO 110+INT(I*34/25),60 3441 IF I=5 THEN SOUND 1,SOND(J+3),10,10 3442 IF I=14 THEN SOUND 1,SOND(J+4),10,10 3443 PLOT 110+INT(I*40/25),50:DRAWTO 110+I*2,40:PLOT 158-I,70:DRAWTO 158-INT(I*34/25),60 3444 PLOT 158-INT(I*40/25),50:DRAWTO 158-I*2,40:NEXT I:SOUND 1,0,0,0:NEXT J 3445 FOR W=1 TO 70:NEXT W:GOSUB 4240:GOTO 6000 3450 PLOT 117,52:DRAWTO 118,57:DRAWTO 119,54:DRAWTO 120,57:DRAWTO 121,52 3452 X=123:Y=52:GOSUB 4961 3454 X=129:GOSUB 3490 3456 X=135:GOSUB 3490 3458 X=141:GOSUB 4966 3460 X=147:GOSUB 4963:RETURN 3490 PLOT X,Y+5:DRAWTO X,Y:DRAWTO X+4,Y+5:DRAWTO X+4,Y:RETURN 3498 RETURN 3500 RETURN 3600 FOR W=1 TO 10:NEXT W 3601 GOTO 2300 4000 IF RED=1 THEN GOTO 4010 4002 SEC=2 4003 GOSUB 4300:RED=1 4010 IF BLK=0 THEN BLK=1:COLOR AA:GOTO 4030 4020 COLOR EE:BLK=0 4030 GOSUB 4100 4032 IF STRIG(0)=0 THEN GOTO 4000 4034 GOTO 2305 4100 ON DIR GOTO 4110,4130,4150,4170,4180 4110 PLOT 133,52:DRAWTO 133,56:DRAWTO 147,56:DRAWTO 147,58:DRAWTO 151,54:DRAWTO 147,50:DRAWTO 147,52:DRAWTO 133,52:GOTO 4190 4130 PLOT 141,60:DRAWTO 137,56:DRAWTO 139,56:DRAWTO 139,44:DRAWTO 143,44:DRAWTO 143,56:DRAWTO 145,56:DRAWTO 141,60:GOTO 4190 4150 PLOT 131,54:DRAWTO 135,50:DRAWTO 135,52:DRAWTO 149,52:DRAWTO 149,56:DRAWTO 135,56:DRAWTO 135,58:DRAWTO 131,54:GOTO 4190 4170 PLOT 139,58:DRAWTO 139,44:DRAWTO 137,44:DRAWTO 141,40:DRAWTO 145,44:DRAWTO 143,44:DRAWTO 143,58:DRAWTO 139,58 4175 GOTO 4190 4180 PLOT 136,63:DRAWTO 136,57:DRAWTO 140,63:DRAWTO 140,57:PLOT 142,57:DRAWTO 142,63:DRAWTO 146,63:DRAWTO 146,57:DRAWTO 142,57 4190 RETURN 4210 IF SND<>0 THEN 4216 4212 SND1=INT(RND(0)*40)+25:SOUND 1,SND1,10,10:RETURN 4216 SOUND 1,SND,10,10:SND=0:RETURN 4220 IF SND<>0 THEN 4226 4222 SND1=INT(RND(0)*40)+25:SOUND 2,SND1,10,10:RETURN 4226 SOUND 2,SND,10,10:SND=0:RETURN 4230 SND2=SND2+3:IF SND2>120 THEN SND2=40 4232 SOUND 1,SND2,10,10:RETURN 4240 SOUND 1,0,0,0:SOUND 2,0,0,0:RETURN 4300 B(X1,Y1)=0 4302 SUMB(1)=B(1,1)+B(1,2)+B(1,3)+B(1,4) 4304 SUMB(2)=B(2,1)+B(2,2)+B(2,3)+B(2,4) 4305 SUMB(3)=B(3,1)+B(3,2)+B(3,3)+B(3,4) 4306 SUMB(4)=B(4,1)+B(4,2)+B(4,3)+B(4,4) 4308 SUMB(5)=B(1,1)+B(2,1)+B(3,1)+B(4,1) 4310 SUMB(6)=B(1,2)+B(2,2)+B(3,2)+B(4,2) 4312 SUMB(7)=B(1,3)+B(2,3)+B(3,3)+B(4,3) 4314 SUMB(8)=B(1,4)+B(2,4)+B(3,4)+B(4,4) 4316 SUMB(9)=B(1,1)+B(2,2)+B(3,3)+B(4,4) 4318 SUMB(10)=B(1,4)+B(2,3)+B(3,2)+B(4,1) 4340 GOSUB V20:SUMS1=SUM 4350 IF X1=V4 THEN GOTO 4400 4355 B(X1,Y1)=B(X1+V1,Y1) 4360 B(X1+V1,Y1)=0 4365 GOSUB V20 4375 IF SUM>=SUMS1 THEN 4385 4380 DIR=V3:SUMS1=SUM 4385 B(X1+V1,Y1)=B(X1,Y1) 4390 B(X1,Y1)=V0 4400 FOR I=V1 TO V10 4401 TONES=INT(SUMB(I)) 4402 TENS=INT(SUMB(I)/10) 4403 IF TONES<V10 THEN GOTO 4405 4404 TONES=TONES-V10:GOTO 4403 4405 COLOR AA 4406 X=XCOR(I)+V6:Y=YCOR(I) 4407 GOSUB 5000+TONES*V20 4408 IF TENS=V0 THEN GOTO 4412 4409 X=XCOR(I):Y=YCOR(I) 4410 GOSUB 5000+TENS*20 4412 NEXT I 4430 IF X1=V1 THEN GOTO 4500 4435 B(X1,Y1)=B(X1-V1,Y1) 4440 B(X1-V1,Y1)=0 4445 GOSUB V20 4455 IF SUM>=SUMS1 THEN 4465 4460 DIR=V1:SUMS1=SUM 4465 B(X1-V1,Y1)=B(X1,Y1) 4490 B(X1,Y1)=V0 4500 GOTO 4530 4530 IF Y1=V4 THEN GOTO 4600 4535 B(X1,Y1)=B(X1,Y1+V1) 4540 B(X1,Y1+V1)=0 4545 GOSUB V20 4555 IF SUM>=SUMS1 THEN 4565 4560 DIR=V4:SUMS1=SUM 4565 B(X1,Y1+V1)=B(X1,Y1) 4590 B(X1,Y1)=V0 4600 GOTO 4630 4630 IF Y1=V1 THEN GOTO 4700 4635 B(X1,Y1)=B(X1,Y1-V1) 4640 B(X1,Y1-V1)=0 4645 GOSUB V20 4655 IF SUM>=SUMS1 THEN 4665 4660 DIR=V2:SUMS1=SUM 4665 B(X1,Y1-V1)=B(X1,Y1) 4700 B(X1,Y1)=V16:COLOR AA 4705 PLOT 130,65:DRAWTO 130,71:PLOT 130,68:DRAWTO 134,68:PLOT 134,65:DRAWTO 134,71 4728 PLOT 136,65:DRAWTO 140,65:PLOT 136,71:DRAWTO 140,71:PLOT 138,65:DRAWTO 138,71:PLOT 142,71 4742 DRAWTO 142,65:DRAWTO 146,71:DRAWTO 146,65:PLOT 148,65:DRAWTO 152,65:PLOT 150,65:DRAWTO 150,71 4756 HNT=V1:RETURN 4800 FOR I=1 TO 10 4801 TONES=SUMB(I) 4802 TENS=INT(SUMB(I)/10) 4804 IF TONES<10 THEN GOTO 4808 4806 TONES=TONES-10:GOTO 4804 4808 X=XCOR(I)+6:Y=YCOR(I) 4810 GOSUB 5000+TONES*V20 4812 IF TENS=0 THEN GOTO 4818 4814 X=XCOR(I):Y=YCOR(I) 4816 GOSUB 5000+TENS*20 4818 NEXT I 4820 RETURN 4840 PLOT 115,19:DRAWTO 115,35:DRAWTO 155,35:DRAWTO 155,19:DRAWTO 115,19:POSITION 115,35:POKE 765,2 4856 XIO 18,#6,0,0,"S:" 4858 COLOR 4 4860 PLOT 121,26:DRAWTO 121,21:DRAWTO 123,23:DRAWTO 125,21:DRAWTO 125,26:PLOT 127,26:DRAWTO 128,21 4873 DRAWTO 130,21:DRAWTO 131,26:PLOT 128,24:DRAWTO 130,24:PLOT 137,22:DRAWTO 136,21:DRAWTO 134,21 4882 DRAWTO 133,22:DRAWTO 133,25:DRAWTO 134,26:DRAWTO 136,26:DRAWTO 137,25:DRAWTO 137,24:DRAWTO 135,24 4883 X=139:Y=21:GOSUB 4961 4897 PLOT 149,22:DRAWTO 148,21:DRAWTO 146,21:DRAWTO 145,22:DRAWTO 145,25:DRAWTO 146,26:DRAWTO 148,26 4905 DRAWTO 149,25:PLOT 122,28:DRAWTO 121,28:DRAWTO 119,28:DRAWTO 118,29:DRAWTO 119,30:DRAWTO 121,30 4913 DRAWTO 122,31:DRAWTO 122,32:DRAWTO 121,33:DRAWTO 119,33:DRAWTO 118,32:PLOT 125,28:DRAWTO 124,29 4921 DRAWTO 124,32:DRAWTO 125,33:DRAWTO 127,33:DRAWTO 128,32:DRAWTO 128,29:DRAWTO 127,28:DRAWTO 125,28 4928 PLOT 127,32:DRAWTO 128,33:PLOT 130,28:DRAWTO 130,32:DRAWTO 131,33:DRAWTO 133,33:DRAWTO 134,32 4936 DRAWTO 134,28:DRAWTO 134,33:PLOT 136,33:DRAWTO 137,28:DRAWTO 139,28:DRAWTO 140,33:PLOT 137,31 4943 DRAWTO 139,31 4944 X=142:Y=28:GOSUB 4963 4953 X=148:Y=28:GOSUB 4966 4960 RETURN 4961 PLOT X,Y:DRAWTO X+4,Y:PLOT X,Y+5:DRAWTO X+4,Y+5:PLOT X+2,Y:DRAWTO X+2,Y+5:RETURN 4963 PLOT X,Y+5:DRAWTO X,Y:DRAWTO X+3,Y:DRAWTO X+4,Y+1:DRAWTO X+4,Y+2:DRAWTO X+3,Y+3:DRAWTO X,Y+3 4964 PLOT X+1,Y+3:DRAWTO X+3,Y+5:RETURN 4966 PLOT X+4,Y:DRAWTO X,Y:DRAWTO X,Y+5:DRAWTO X+4,Y+5:PLOT X,Y+3:DRAWTO X+3,Y+3:RETURN 4999 RETURN 5000 PLOT X+1,Y:DRAWTO X,Y+1:DRAWTO X,Y+4:DRAWTO X+1,Y+5:DRAWTO X+3,Y+5:DRAWTO X+4,Y+4:DRAWTO X+4,Y+1 5014 DRAWTO X+3,Y:DRAWTO X+1,Y:RETURN 5020 PLOT X,Y+2:DRAWTO X+2,Y:DRAWTO X+2,Y+5:PLOT X,Y+5:DRAWTO X+4,Y+5:RETURN 5040 PLOT X,Y+1:DRAWTO X+1,Y:DRAWTO X+3,Y:DRAWTO X+4,Y+1:DRAWTO X+4,Y+2:DRAWTO X,Y+4 5052 DRAWTO X,Y+5:DRAWTO X+4,Y+5:RETURN 5060 PLOT X,Y:DRAWTO X+4,Y:DRAWTO X+2,Y+1:DRAWTO X+4,Y+2:DRAWTO X+4,Y+4 5070 DRAWTO X+3,Y+5:DRAWTO X+1,Y+5:DRAWTO X,Y+4:RETURN 5080 PLOT X+4,Y+3:DRAWTO X,Y+3:DRAWTO X+3,Y:DRAWTO X+3,Y+5:RETURN 5100 PLOT X+4,Y:DRAWTO X,Y:DRAWTO X,Y+2:DRAWTO X+3,Y+2:DRAWTO X+4,Y+3:DRAWTO X+4,Y+4 5112 DRAWTO X+3,Y+5:DRAWTO X+1,Y+5:DRAWTO X,Y+4:RETURN 5120 PLOT X+3,Y:DRAWTO X+1,Y:DRAWTO X,Y+1:DRAWTO X,Y+4:DRAWTO X+1,Y+5:DRAWTO X+3,Y+5:DRAWTO X+4,Y+4 5134 DRAWTO X+4,Y+3:DRAWTO X+3,Y+2:DRAWTO X+1,Y+2:DRAWTO X,Y+3:RETURN 5140 PLOT X,Y:DRAWTO X+4,Y:DRAWTO X+1,Y+5:RETURN 5160 PLOT X+1,Y+2:DRAWTO X,Y+1:DRAWTO X+1,Y:DRAWTO X+3,Y:DRAWTO X+4,Y+1:DRAWTO X+3,Y+2:DRAWTO X+1,Y+2:DRAWTO X,Y+4 5173 DRAWTO X+1,Y+5:DRAWTO X+3,Y+5:DRAWTO X+4,Y+4:DRAWTO X+3,Y+2:RETURN 5180 PLOT X+1,Y+5:DRAWTO X+2,Y+5:DRAWTO X+4,Y+3:DRAWTO X+4,Y+1:DRAWTO X+3,Y:DRAWTO X+1,Y:DRAWTO X,Y+1 5194 DRAWTO X,Y+2:DRAWTO X+1,Y+3:DRAWTO X+3,Y+3:DRAWTO X+4,Y+2:RETURN 6000 GRAPHICS 0 6005 SETCOLOR 4,3,6:SETCOLOR 2,14,6:SETCOLOR 1,12,2:POKE 752,1:GOSUB 1100:POKE 82,5:GOSUB 4220 6035 ? #6;" " 6040 ? #6;" Congratulations ";NAM$ 6050 ? #6;"You just solved the Magic" 6060 ? #6;"Square game." 6070 ? #6;" " 6080 ? #6;"It took you ";SW;" moves." 6082 ? #6;"The time to solve the Magic" 6084 ? #6;"Square was ";HRS;" hrs, ";MIN;" mins" 6086 ? #6;"and ";SEC;" secs." 6087 ? #6;" " 6088 ? #6;"The difficulty was ";DIFF$ 6090 POSITION 6,22 6200 ? #6;"Push to play again" 6201 ? #6;" Push any other key to end" 6205 POKE 82,2:GOSUB 4240:GET #1,X 6206 IF X<>155 THEN 6500 6207 OPT$=" ":OPT$=" ":DIFF$=" ":DIFF$=" ":EBD1=1:SND2=30:R2=0:SW=0:RESTORE:GOTO 150 6400 TIME=(PEEK(18)*256+PEEK(19)+PEEK(20)/256)*4.28571428 6410 HRS=INT(TIME/3600) 6420 MIN1=(TIME/3600-INT(TIME/3600))*3600 6430 MIN=INT(MIN1/60) 6440 SEC1=(MIN1/60-INT(MIN1/60))*60 6450 SEC=INT(SEC1) 6499 RETURN 6500 GRAPHICS 0:RUN "D:MENU"
References
Listing downloads
Downloads
Copyright holder
