30 FOR Y = 0 TO YP -SY STEP SY: FOR X = 0 TO XP -SX STEP SX: XDRAW SH(SN,D) AT P(SN,0) +X *Z,P(SN,1) +Y *Z:SO = PEEK(S) + PEEK(S): DRAW SH(SN,D) AT P(SN,0) +(SX +X) *Z,P(SN,1) +(SY +Y) *Z: NEXT : NEXT
440 DIM P(BN,W),X(BN),Y(BN),BL(W),N(NS),T(W),S(BN,W),SH(NS,3)
450 HGR : TEXT : HOME
460 VTAB 6: HTAB 12: INVERSE : PRINT "*** SCRAMBLE ***": VTAB 10: HTAB 19: NORMAL : PRINT "BY": VTAB 14: HTAB 9: PRINT "DONALD W MILLER JR MD": VTAB 16: HTAB 15: PRINT "SEPT, 1981"
470 POKE 232,72: POKE 233,138
480 PRINT D$"BLOAD TILES,A$8A48"
490 I = 0
500 FOR X = XS TO XE STEP XD: FOR Y = YS TO YE STEP YD:I = I +W:X(I) = X:Y(I) = Y: NEXT : NEXT
510 BL(0) = 158:BL(1) = 89
520 FOR N = W TO NS:N(N) = N: NEXT
530 FOR I = W TO NS:A = INT( RND(W) *NS +W):B = INT( RND(W) *NS +W):T = N(A):N(A) = N(B):N(B) = T: NEXT
535 HOME : VTAB 9: HTAB 1: PRINT "DO YOU NEED INSTRUCTIONS ? (Y/N) ";: GET AN$: IF AN$ = "Y" THEN GOSUB 700
540 HOME : VTAB 6: PRINT "WHAT LEVEL OF DIFFICULTY ? ": PRINT : PRINT : PRINT " 1. CHILD'S PLAY": PRINT : PRINT " 2. MODERATELY DIFFICULT": PRINT : PRINT " 3. FOR VERY PATIENT PEOPLE ONLY !"
560 VTAB 6: HTAB 28: GET D$:D = VAL(D$): IF D <1 OR D >3 THEN 560
570 HOME
580 FOR I = W TO NS: IF I >F *D THEN SH(I,D) = BN: GOTO 600
590 SH(I,D) = I
600 NEXT
610 HGR : SCALE= 1: ROT= 0: HCOLOR= 3
620 I = 1
630 FOR X = 5 TO 257 STEP 18:S(I,0) = X:S(I,1) = 20: DRAW SH(I,D) AT X,20:SO = PEEK(S) + PEEK(S):I = I +1: NEXT
640 FOR I = 1 TO 1000: NEXT
650 FOR I = W TO NS:P(I,0) = X(N(I)):P(I,1) = Y(N(I)): XDRAW SH(I,D) AT S(I,0),S(I,1): DRAW SH(I,D) AT P(I,0),P(I,1):SO = PEEK(S) + PEEK(S) + PEEK(S) + PEEK(S): FOR N = 1 TO 50: NEXT : NEXT
660 HCOLOR= 1: HPLOT 105,47 TO 175,47 TO 175,102 TO 105,102 TO 105,47: HPLOT 103,46 TO 177,46 TO 177,103 TO 103,103 TO 103,46: HCOLOR= 3
670 PRINT B$;:NM = 0: GOTO 70
700 TEXT : HOME : INVERSE : VTAB 1: HTAB 14: PRINT "INSTRUCTIONS": NORMAL
702 VTAB 4: HTAB 1: PRINT "1. TO MOVE A NUMBERED TILE, SIMPLY ENTER THE TILE NUMBER AND PRESS <RETURN>"
704 PRINT : PRINT "2. TO MOVE A BLANK TILE, ENTER 'B'.. PLUS.... THE DIRECTION THE BLANK SHOULD MOVE ('U' FOR UP, 'D' FOR DOWN, 'R' FOR RIGHT, AND 'L' FOR LEFT) AND THEN PRESS <RETURN>"
706 PRINT : PRINT "3. TO START A NEW PUZZLE, ENTER 'Q' AND <RETURN>": PRINT : PRINT "4. TO EXIT THE PROGRAM, ENTER 'Z' AND <RETURN>": PRINT : PRINT "5. TO SEE THESE INSTRUCTIONS, ENTER 'I' AND <RETURN> ANYTIME"
712 PRINT : PRINT : HTAB 6: PRINT "(PRESS ANY KEY TO CONTINUE)";: GET AN$: RETURN