Listing of file='15PUZZ.BAS;01' on disk='vmedia/shoot-sector.ccvf'
90 REM COPYRIGHT (C) 1979 BY COMPUCOLOR CORPORATION 100 REM ADAPTED 1979 BY DON MILLER 110 CLEAR 300:PLOT 6,2,12,27,24,15 120 DIM SS(16),ST(16),S(4,4),SV(16),L(16,4),K(16,2),SX(16) 130 PLOT 6,1,3,25,0:PRINT "THE 15 PUZZLE" 140 FOR I= 1TO 16:ST(I)= 0:NEXT I 150 GOTO 160 160 GOSUB 690 170 GOSUB 360 180 PLOT 6,6,3,18,31:PRINT "I'M JUST A CALCULATIN' FOOL!" 190 GOSUB 1630 200 GOSUB 1840:IF SW= 1THEN FOR I= 1TO 16:ST(I)= 0:NEXT I:GOTO 190 210 PLOT 6,6,8,28,11 220 GOSUB 2050 230 GOSUB 2100 240 PLOT 6,6,15,3,1,6:PRINT " " 250 PLOT 3,1,6 260 INPUT "MOVE ? ";Q 270 IF Q= - 9THEN 2750 280 IF Q< 1OR Q> 15THEN PLOT 6,65,3,1,6:PRINT "ILLEGAL":FOR II= 0TO 500:NEXT II:GOTO 240 290 SW= 0:GOSUB 2220 300 IF SW= 1THEN SW= 0:Q= 0:GOTO 280 310 PC= PC+ 1 320 GOSUB 2330 330 GOSUB 2700 340 GOTO 240 350 PLOT 6,6,15,3,1,6:PRINT " ":PLOT 3,1,6:PRINT "MOVE ?"Q:RETURN 360 IF OM= 1THEN 180 370 OM= 1 380 DIM Q1(33) 390 PLOT 6,70,15,3,1,6:INPUT "DEMO?";Q$ 400 IF LEFT$ (Q$,1)< > "Y"THEN 360 410 GOSUB 2960:GOSUB 2050 420 GOSUB 2100 430 FOR OO= 1TO 7 440 FOR O1= 1TO 11 450 Q= Q1(O1) 460 GOSUB 350 470 GOSUB 2330 480 NEXT O1 490 NEXT OO 500 FOR O1= 12TO 26 510 Q= Q1(O1) 520 GOSUB 350 530 GOSUB 2330 540 NEXT O1 550 FOR OO= 1TO 2 560 FOR O1= 27TO 33 570 Q= Q1(O1) 580 GOSUB 350 590 GOSUB 2330 600 NEXT O1 610 NEXT OO 620 PLOT 6,70,3,53,0:PRINT "106 MOVES" 630 FOR II= 0TO 1000:NEXT II 640 PLOT 6,2,12,15:GOSUB 690:GOTO 180 650 PLOT 6,70,3,53,0:PRINT PC" MOVES" 660 PLOT 6,2,27,11,15 670 PLOT 12,1 680 END 690 REM BUILD SCREEN 700 GOSUB 710:GOTO 760 710 PLOT 6,4 720 PLOT 2,0,99,242,0,106,21,106,21,99,0,99,255 730 PLOT 2,0,6,242,0,17,21,17,21,6,0,6,255 740 PLOT 2,104,6,242,104,89,127,89,127,6,104,6,255 750 RETURN 760 PLOT 6,25 770 FOR Y= 1TO 3 780 PLOT 3,12,Y 790 PRINT "````````````````````````````````````````" 800 NEXT Y 810 FOR Y= 28TO 30 820 PLOT 3,12,Y 830 PRINT "````````````````````````````````````````" 840 NEXT Y 850 PLOT 27,10 860 FOR X= 12TO 15 870 PLOT 3,X,4 880 PRINT "````````````````````````" 890 NEXT X 900 FOR X= 48TO 51 910 PLOT 3,X,4 920 PRINT "````````````````````````" 930 NEXT X 940 PLOT 27,24 950 PLOT 6,70,3,18,12:INPUT "TO BEGIN, HIT RETURN, TWICE";Q 960 POKE 33278,0 970 SY= RND (1):IF PEEK (33278)= 0THEN 970 980 L(1,1)= 2:L(1,2)= 5:L(1,3)= 0:L(1,4)= 0 990 L(2,1)= 1:L(2,2)= 6:L(2,3)= 3:L(2,4)= 0 1000 L(3,1)= 2:L(3,2)= 7:L(3,3)= 4:L(3,4)= 0 1010 L(4,1)= 3:L(4,2)= 8:L(4,3)= 0:L(4,4)= 0 1020 L(5,1)= 1:L(5,2)= 6:L(5,3)= 9:L(5,4)= 0 1030 L(6,1)= 2:L(6,2)= 5:L(6,3)= 10:L(6,4)= 7 1040 L(7,1)= 3:L(7,2)= 6:L(7,3)= 11:L(7,4)= 8 1050 L(8,1)= 4:L(8,2)= 7:L(8,3)= 12:L(8,4)= 0 1060 L(9,1)= 5:L(9,2)= 10:L(9,3)= 13:L(9,4)= 0 1070 L(10,1)= 6:L(10,2)= 9:L(10,3)= 14:L(10,4)= 11 1080 L(11,1)= 7:L(11,2)= 10:L(11,3)= 15:L(11,4)= 12 1090 L(12,1)= 8:L(12,2)= 11:L(12,3)= 16:L(12,4)= 0 1100 L(13,1)= 9:L(13,2)= 14:L(13,3)= 0:L(13,4)= 0 1110 L(14,1)= 13:L(14,2)= 10:L(14,3)= 15:L(14,4)= 0 1120 L(15,1)= 14:L(15,2)= 11:L(15,3)= 16:L(15,4)= 0 1130 L(16,1)= 15:L(16,2)= 12:L(16,3)= 0:L(16,4)= 0 1140 K(1,1)= 16:K(1,2)= 4:K(2,1)= 24:K(2,2)= 4:K(3,1)= 32:K(3,2)= 4:K(4,1)= 40:K(4,2)= 4 1150 K(5,1)= 16:K(5,2)= 10:K(6,1)= 24:K(6,2)= 10:K(7,1)= 32:K(7,2)= 10:K(8,1)= 40:K(8,2)= 10 1160 K(9,1)= 16:K(9,2)= 16:K(10,1)= 24:K(10,2)= 16:K(11,1)= 32:K(11,2)= 16:K(12,1)= 40:K(12,2)= 16 1170 K(13,1)= 16:K(13,2)= 22:K(14,1)= 24:K(14,2)= 22:K(15,1)= 32:K(15,2)= 22:K(16,1)= 40:K(16,2)= 22 1180 FOR YO= 0TO 3 1190 CP= CO 1200 FOR XO= 0TO 3 1210 CP= CO:IF CP= 9THEN CO= 63:GOTO 1270 1220 IF CP= 63THEN CO= 36:GOTO 1270 1230 IF CP= 36THEN CO= 45:GOTO 1270 1240 IF CP= 45THEN CO= 18:GOTO 1270 1250 CO= 9 1260 CP= CO 1270 PLOT 6,CO:GOSUB 1550 1280 NEXT XO 1290 NEXT YO 1300 PLOT 6,2:XO= 3:YO= 3:GOSUB 1550 1310 SV(16)= 0 1320 PLOT 6,3 1330 PLOT 3,53,10:PRINT "THIS IS A " 1340 PLOT 3,53,11:PRINT "COMPUTER " 1350 PLOT 3,53,12:PRINT "VERSION OF" 1360 PLOT 3,53,13:PRINT "HAND HELD " 1370 PLOT 3,53,14:PRINT "PUZZLE-THE" 1380 PLOT 3,53,15:PRINT "15 PUZZLE." 1390 PLOT 3,53,17:PRINT "THE OBJECT" 1400 PLOT 3,53,18:PRINT "IS TO MOVE" 1410 PLOT 3,53,19:PRINT "THE BLOCKS" 1420 PLOT 3,53,20:PRINT "TO FORM A " 1430 PLOT 3,53,21:PRINT "DEFINITE " 1440 PLOT 3,53,22:PRINT "PATTERN, " 1450 PLOT 3,53,23:PRINT "SUCH AS " 1460 PLOT 3,53,24:PRINT "1-4,5-8, " 1470 PLOT 3,53,25:PRINT "9-12,13-15" 1480 PLOT 3,53,27:PRINT "MOVE ONLY " 1490 PLOT 3,53,28:PRINT "TO SPACE " 1500 PLOT 3,53,29:PRINT "ADJACENT !" 1510 PLOT 6,4 1520 PLOT 3,1,28:PRINT "TO QUIT: " 1530 PLOT 3,1,29:PRINT "ENTER -9" 1540 RETURN 1550 FOR YY= 4TO 9 1560 PLOT 3,16+ 8* XO,YY+ 6* YO 1570 PRINT " " 1580 NEXT YY 1590 FOR YY= 6TO 7 1600 PLOT 6,0,3,18+ 8* XO,YY+ 6* YO:PRINT " " 1610 NEXT YY 1620 RETURN 1630 REM 1640 CP= 18 1650 FOR IB= 1TO 16:SX(IB)= 0:NEXT IB 1660 FOR I= 1TO 15 1670 R= INT (15* RND (1)+ 1):ST(I)= R 1680 IF SX(R)= 1THEN 1670 1690 SX(R)= 1 1700 NEXT I 1710 ST(16)= 16 1720 CP= 18 1730 FOR I= 1TO 16 1740 IQ= ST(I) 1750 IF CP= 18THEN SV(IQ)= 9 1760 IF CP= 9THEN SV(IQ)= 63 1770 IF CP= 63THEN SV(IQ)= 36 1780 IF CP= 36THEN SV(IQ)= 45 1790 IF CP= 45THEN SV(IQ)= 18 1800 CP= SV(IQ) 1810 NEXT I 1820 FOR I= 1TO 15:Q= ST(I):KX= K(I,1):KY= K(I,2):GOSUB 2820:NEXT I 1830 RETURN 1840 REM 1850 SW= 0 1860 S(1,1)= ST(1):S(1,2)= ST(2):S(1,3)= ST(3):S(1,4)= ST(4):S(2,1)= ST(5) 1870 S(2,2)= ST(6):S(2,3)= ST(7):S(2,4)= ST(8):S(3,1)= ST(9):S(3,2)= ST(10) 1880 S(3,3)= ST(11):S(3,4)= ST(12):S(4,1)= ST(13):S(4,2)= ST(14):S(4,3)= ST(15):S(4,4)= ST(16) 1890 T= 0 1900 FOR I= 1TO 4 1910 FOR J= 1TO 4 1920 FOR K= 1TO 4 1930 FOR L= 1TO 4 1940 IF S(I,J)> S(K,L)THEN 1980 1950 NEXT L 1960 NEXT K 1970 GOTO 1990 1980 T= T+ 1 1990 S(I,J)= 16 2000 NEXT J 2010 NEXT I 2020 IF T- 2* INT (T/ 2)= 0THEN 2040 2030 SW= 1 2040 RETURN 2050 REM 2060 FOR I= 1TO 16 2070 SS(I)= ST(I) 2080 NEXT I 2090 RETURN 2100 REM 2110 XX= 0:YY= 0 2120 FOR I= 1TO 16 2130 PLOT 6,6,14 2140 PLOT 3,19+ XX* 8,6+ YY* 6 2150 PRINT " " 2160 PLOT 3,19+ XX* 8,6+ YY* 6 2170 IF SS(I)= 16THEN 2190 2180 PRINT RIGHT$ ((STR$ (SS(I))),2) 2190 XX= XX+ 1:IF XX> 3THEN XX= 0:YY= YY+ 1 2200 NEXT I 2210 PLOT 15:RETURN 2220 REM 2230 FOR I= 1TO 16 2240 IF SS(I)= 16THEN V1= I 2250 IF SS(I)= QTHEN V2= I 2260 NEXT I 2270 SW= 1 2280 FOR I= 1TO 4 2290 IF L(V1,I)= V2THEN SW= 0 2300 NEXT I 2310 RETURN 2320 RETURN 2330 REM 2340 GOTO 2540 2350 FOR I= 1TO 16 2360 IF SS(I)= 16THEN 2390 2370 NEXT I 2380 END 2390 U1= SS(I) 2400 PLOT 6,SV(Q) 2410 KX= K(I,1):KY= K(I,2) 2420 X1= KX:Y1= KY 2430 FOR II= 0TO 5 2440 PLOT 3,X1,Y1+ II:PRINT " " 2450 NEXT II 2460 PLOT 6,0 2470 PLOT 3,X1+ 2,Y1+ 3,14:PRINT " " 2480 PLOT 6,6 2490 PLOT 3,X1+ 3,Y1+ 3:PRINT RIGHT$ ((STR$ (Q)),2) 2500 GOSUB 2820 2510 I8= I 2520 I= I5 2530 GOTO 2670 2540 FOR I= 1TO 16 2550 IF SS(I)= QTHEN 2580 2560 NEXT I 2570 END 2580 U2= SS(I) 2590 I5= I 2600 KX= K(I,1):KY= K(I,2) 2610 X1= KX:Y1= KY 2620 PLOT 6,0 2630 FOR II= 0TO 5 2640 PLOT 3,X1,Y1+ II:PRINT " " 2650 NEXT II 2660 GOTO 2350 2670 SS(I)= 16:SS(I8)= Q 2680 RETURN 2690 RETURN 2700 REM 2710 FOR I= 1TO 15 2720 IF SS(I)< > ITHEN 2810 2730 NEXT I 2740 PLOT 6,70,15,3,1,6:PRINT "IN ORDER !" 2750 FOR II= 0TO 500:NEXT II 2760 PLOT 6,65,3,1,8:INPUT "AGAIN ? ";Q$ 2770 IF LEFT$ (Q$,1)< > "Y"THEN 650 2780 PLOT 6,70,3,53,0:PRINT PC" MOVES":FOR I= 0TO 999:NEXT I 2790 PLOT 6,2,12,27,24,15 2800 GOTO 130 2810 RETURN 2820 REM 2830 CO= SV(Q)- SV(Q)/ 9 2840 PLOT 6,CO 2850 PLOT 3,KX+ 1,KY:PRINT "eeeeee" 2860 PLOT 3,KX+ 1,KY+ 5:PRINT "" 2870 FOR YY= 0TO 3 2880 PLOT 3,KX,KY+ 1+ YY:PRINT "a" 2890 PLOT 3,KX+ 7,KY+ 1+ YY:PRINT "b" 2900 NEXT YY 2910 PLOT 3,KX,KY:PRINT "n" 2920 PLOT 3,KX,KY+ 5:PRINT "l" 2930 PLOT 3,KX+ 7,KY:PRINT "o" 2940 PLOT 3,KX+ 7,KY+ 5:PRINT "m" 2950 RETURN 2960 REM 2970 FOR I= 1TO 15 2980 READ AA 2990 ST(I)= AA 3000 NEXT I 3010 DATA 8,11,9,12,4,2,6,14,3,15,10,13,7,1,5 3020 FOR I= 1TO 33 3030 READ AB 3040 Q1(I)= AB 3050 NEXT I 3060 GOTO 1710 3070 DATA 5,1,7,3,4,8,11,9,12,14,13 3080 DATA 5,1,2,6,7,3,4,8,10,9,12,15,13,14,15 3090 DATA 15,14,13,9,10,11,12