Compucolor.org – Virtual Media

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