home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib36b.dsk / HAND.PUZZLE.bas < prev    next >
BASIC Source File  |  2023-02-26  |  9KB  |  118 lines

  1. 10  REM  **************************
  2. 20  REM  *  HAND.PUZZLE           *
  3. 30  REM  *  BY ROBERT DEVINE      *
  4. 40  REM  *  COPYRIGHT (C) 1989    *
  5. 50  REM  *  MINDCRAFT PUBL. CORP. *
  6. 60  REM  *  CONCORD, MA 01742     *
  7. 70  REM  **************************
  8. 80  IF  PEEK(104) < >96  THEN  POKE 103,1: POKE 104,96: POKE 24576,0: PRINT  CHR$(4);"RUN HAND.PUZZLE"
  9. 90  ONERR  GOTO 1180
  10. 100  HOME 
  11. 110  PRINT : PRINT  CHR$(21): GOSUB 860: POKE 216,0: DIM A$(16): GOSUB 1050
  12. 120 G1$ = " ABCDEFGHIJKLMNO":G2$ = "ABCDEFGHIJKLMNOP": FOR X = 1 TO 16:A$(X) = "": NEXT X
  13. 130  HGR :A$ = "HI THERE":VT = 4:HT = 1: GOSUB 1020:A$ = "WHAT IS YOUR NAME ?":VT = 6:HT = 1: GOSUB 1020
  14. 140  VTAB 24: HTAB 16: PRINT "(MAX 9 CHARS)";: VTAB 22: HTAB 16: INPUT N$: IF  LEN(N$) >9  THEN  HOME : PRINT  CHR$(7): GOTO 140
  15. 150 E = 0: GOSUB 1160: IF E = 1  THEN 140
  16. 160  HOME : HGR :A$ = "WOULD YOU LIKE":VT = 2:HT = 0: GOSUB 1020:A$ = "THE INSTRUCTIONS":VT = 4: GOSUB 1020:A$ = N$ +" ?":VT = 6: GOSUB 1020: VTAB 22: HTAB 16: INPUT A$: IF  LEFT$(A$,1) = "N"  THEN 270
  17. 170  HGR2 :A$ = "HAND PUZZLE":VT = 1:HT = 0: GOSUB 1020:A$ = "IS PLAYED ON A":VT = 3:HT = 21: GOSUB 980:A$ = "4 X 4 PLAYING BOARD":VT = 5:HT = .2: GOSUB 980
  18. 180 A$ = "THE LETTERS":VT = 7:HT = 0: GOSUB 980:A$ = "ABCDEFGHIJKLMNOP":VT = 4: GOSUB 1020:A$ = "ARE SCATTERED AROUND THE BOARD AND YOUR":VT = 11: GOSUB 980
  19. 190 A$ = "JOB IS TO PUT THEM IN ORDER":VT = 13: GOSUB 980:A$ = "THERE ARE TWO PUZZLE VARIATIONS":VT = 15: GOSUB 980:A$ = "THAT YOU MAY CHOOSE FROM":VT = 17: GOSUB 980
  20. 200 A$ = "PRESS RETURN TO CONTINUE":VT = 21:HT = 7: GOSUB 980: GET A$: HGR2 :A$ = "PUZZLE ONE":VT = 0:HT = 0: GOSUB 1020:G = 1: GOSUB 900
  21. 210 A$ = "TO MOVE YOU SIMPLY":VT = 5:HT = 0: GOSUB 980:A$ = "TOUCH THE KEY FOR":VT = 7: GOSUB 980:A$ = "ANY LETTER THAT IS":VT = 9: GOSUB 980:A$ = "NEXT TO THE EMPTY":VT = 11: GOSUB 980:A$ = "SPACE AND THAT LETTER":VT = 13: GOSUB 980
  22. 220 A$ = "WILL MOVE INTO THE":VT = 15: GOSUB 980:A$ = "EMPTY SPACE":VT = 17: GOSUB 980:A$ = "PRESS RETURN TO CONTINUE":VT = 22:HT = 7: GOSUB 980: GET A$
  23. 230  HGR2 :A$ = "PUZZLE TWO":VT = 0:HT = 0: GOSUB 1020:G = 2: GOSUB 900:A$ = "TO MOVE YOU MUST":VT = 3:HT = 0: GOSUB 980:A$ = "ROTATE 4 LETTERS IN":VT = 4: GOSUB 980:A$ = "A COUNTERCLOCKWISE":VT = 5: GOSUB 980:A$ = "DIRECTION":VT = 6: GOSUB 980
  24. 240 A$ = "TO DO SO YOU MUST":VT = 8: GOSUB 980:A$ = "SELECT THE TOP LEFT":VT = 9: GOSUB 980:A$ = "LETTER OF THE 4 THAT":VT = 10: GOSUB 980:A$ = "YOU WANT TO ROTATE":VT = 11: GOSUB 980
  25. 250 A$ = "FOR INSTANCE IF YOU":VT = 13: GOSUB 980:A$ = "TOUCHED THE LETTER G":VT = 14: GOSUB 980:A$ = "THE BOARD WOULD CHANGE TO":VT = 15: GOSUB 980
  26. 260 A$ = "A B C D":VT = 17:HT = 5: GOSUB 980:A$ = "E F H L":VT = 18:HT = 5: GOSUB 980:A$ = "I J G K":VT = 19:HT = 5: GOSUB 980:A$ = "M N O P":VT = 20:HT = 5: GOSUB 980:A$ = "PRESS RETURN TO CONTINUE":VT = 22:HT = 7: GOSUB 980: GET A$: PRINT 
  27. 270  HGR2 :T = 0: FOR X = 0 TO 9  STEP 2:T = T +1:A$ = "GOOD LUCK":VT = X:HT = 6: ON T GOSUB 1090,1100,1110,1120,1120: GOSUB 1020: NEXT X: GOSUB 1130
  28. 280  TEXT : HOME : VTAB 10: PRINT "WHICH PUZZLE WILL YOU TRY ?": PRINT : PRINT "1. PUZZLE #1-MOVE ONE LETTER EACH TURN.": PRINT : PRINT "2. PUZZLE #2-ROTATE 4 LETTERS EACH TURN.": PRINT : PRINT "WHICH ? ";: GET G$: IF G$ =  CHR$(27)  THEN  TEXT : HOME : END 
  29. 290 G =  VAL(G$): IF G <1  OR G >2  THEN 280
  30. 300  GOSUB 880
  31. 310  VTAB 22: HTAB 10: INVERSE : PRINT " SETTING UP THE BOARD ": NORMAL 
  32. 320  FOR X = 1 TO 16
  33. 330 A =  INT( RND(1) *16 +65): FOR Y = 1 TO 16: ON (A$(Y)) =  CHR$(A) GOTO 330: NEXT Y
  34. 340 A$(X) =  CHR$(A): NEXT X:TR = 0: IF G = 2  THEN 370
  35. 350  FOR X = 1 TO 16: IF A$(X) = "P"  THEN A$(X) = " "
  36. 360  NEXT X
  37. 370  GOSUB 730: GOSUB 1140
  38. 380  VTAB 22: HTAB 30: PRINT "MOVE "TR: VTAB 22: PRINT "WHAT IS YOUR MOVE, ";N$;" ";: GET M$: GOSUB 1140
  39. 390  IF M$ = "0"  THEN 700
  40. 400 TR = TR +1: VTAB 22: HTAB 30: PRINT "MOVE "TR
  41. 410  FOR X = 1 TO 16: IF M$ = A$(X)  THEN M = X: GOTO 430
  42. 420  NEXT X: GOSUB 760: GOTO 380
  43. 430 T = 0: IF G = 2  AND (M/4 =  INT(M/4)  OR M >11)  THEN  GOSUB 760: GOTO 380
  44. 440  IF G = 2  THEN 780
  45. 450  REM  GAME 1
  46. 460  ON M GOTO 470,480,480,490,500,510,510,520,500,510,510,520,530,540,540,550
  47. 470  GOSUB 560: GOSUB 600: GOTO 640
  48. 480  GOSUB 560: GOSUB 580: GOSUB 600: GOTO 640
  49. 490  GOSUB 580: GOSUB 600: GOTO 640
  50. 500  GOSUB 560: GOSUB 600: GOSUB 620: GOTO 640
  51. 510  GOSUB 560: GOSUB 580: GOSUB 600: GOSUB 620: GOTO 640
  52. 520  GOSUB 580: GOSUB 600: GOSUB 620: GOTO 640
  53. 530  GOSUB 560: GOSUB 620: GOTO 640
  54. 540  GOSUB 560: GOSUB 580: GOSUB 620: GOTO 640
  55. 550  GOSUB 580: GOSUB 620: GOTO 640
  56. 560  IF A$(M +1) = " "  THEN A$(M +1) = M$:A$(M) = " ":T = 1:A = M +1
  57. 570  RETURN 
  58. 580  IF A$(M -1) = " "  THEN A$(M -1) = M$:A$(M) = " ":T = 1:A = M -1
  59. 590  RETURN 
  60. 600  IF A$(M +4) = " "  THEN A$(M +4) = M$:A$(M) = " ":T = 1:A = M +4
  61. 610  RETURN 
  62. 620  IF A$(M -4) = " "  THEN A$(M -4) = M$:A$(M) = " ":T = 1:A = M -4
  63. 630  RETURN 
  64. 640  IF T = 0  THEN  GOSUB 760: GOTO 380
  65. 650  POKE 232,248: POKE 233,9:M = 0: FOR X = 1 TO 4: FOR Y = 1 TO 4:M = M +1: IF A$(M) = " "  THEN  XDRAW  ASC(A$(A)) -51 AT YC(Y),XC(X): GOTO 670
  66. 660  DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  67. 670  NEXT Y,X
  68. 680  FOR X = 1 TO 16: ON (A$(X) < > MID$ (G1$,X,1)) GOTO 380: NEXT X
  69. 690  VTAB 22: HTAB 10: INVERSE : PRINT " >>> YOU WIN !!!! <<< ": NORMAL : GOSUB 1130
  70. 700  GOSUB 1140: VTAB 22: PRINT "DO YOU WANT ANOTHER PUZZLE "N$" ";: INPUT A$
  71. 710  IF A$ = "Y"  OR A$ = "YES"  THEN  FOR X = 1 TO 16:A$(X) = "": NEXT X: GOTO 280
  72. 720  TEXT : HOME : VTAB 12: PRINT "BYE "N$" IT'S BEEN FUN": VTAB 23: END 
  73. 730  POKE 232,248: POKE 233,9:M = 0: FOR X = 1 TO 4: FOR Y = 1 TO 4:M = M +1: IF A$(M) = " "  THEN 750
  74. 740  DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  75. 750  NEXT Y,X: RETURN 
  76. 760  VTAB 22: PRINT  CHR$(7); CHR$(7);: INVERSE : PRINT " ILLEGAL MOVE "N$" !!! TRY AGAIN ": NORMAL :TR = TR -1: GOSUB 1130: GOSUB 1140: RETURN 
  77. 770  REM  GAME 2
  78. 780 M1$ = A$(M):M2$ = A$(M +1):M3$ = A$(M +4):M4$ = A$(M +5)
  79. 790 A = 0: FOR X = 1 TO 4: FOR Y = 1 TO 4:A = A +1: IF A < >M  THEN 840
  80. 800  XDRAW  ASC(A$(M)) -51 AT YC(Y),XC(X):A$(M) = M2$: DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  81. 810  XDRAW  ASC(A$(M +1)) -51 AT YC(Y +1),XC(X):A$(M +1) = M4$: DRAW  ASC(A$(M +1)) -51 AT YC(Y +1),XC(X)
  82. 820  XDRAW  ASC(A$(M +4)) -51 AT YC(Y),XC(X +1):A$(M +4) = M1$: DRAW  ASC(A$(M +4)) -51 AT YC(Y),XC(X +1)
  83. 830  XDRAW  ASC(A$(M +5)) -51 AT YC(Y +1),XC(X +1):A$(M +5) = M3$: DRAW  ASC(A$(M +5)) -51 AT YC(Y +1),XC(X +1):X = 4:Y = 4
  84. 840  NEXT Y,X
  85. 850  FOR X = 1 TO 16: ON (A$(X) < > MID$ (G2$,X,1)) GOTO 380: NEXT X: GOTO 690
  86. 860  PRINT  CHR$(4)"BLOAD BIG.LETTERS": PRINT  CHR$(4)"BLOAD SMALL.LETTERS": SCALE= 1: ROT= 0
  87. 870 XC(1) = 16:XC(2) = 51:XC(3) = 86:XC(4) = 121:YC(1) = 21:YC(2) = 61:YC(3) = 101:YC(4) = 141: RETURN 
  88. 880  HGR : HCOLOR= 3: FOR X = 45 TO 125  STEP 40: HPLOT X,5 TO X,145: NEXT X: FOR X = 40 TO 110  STEP 35: HPLOT 5,X TO 165,X: NEXT X
  89. 890  HCOLOR= 5: FOR X = 0 TO 165  STEP 165: FOR Y = X TO X +5: HPLOT Y,0 TO Y,150: NEXT Y,X: FOR X = 0 TO 145  STEP 145: FOR Y = X TO X +5: HPLOT 0,Y TO 165,Y: NEXT Y,X
  90. 900  HCOLOR= 3: FOR X = 214 TO 242  STEP 14: HPLOT X,2 TO X,50: NEXT X: FOR X = 14 TO 38  STEP 12: HPLOT 200,X TO 256,X: NEXT X
  91. 910  HCOLOR= 5: FOR X = 198 TO 256  STEP 58: FOR Y = X TO X +1: HPLOT Y,0 TO Y,51: NEXT Y,X: FOR X = 0 TO 50  STEP 50: FOR Y = X TO X +1: HPLOT 200,Y TO 256,Y: NEXT Y,X
  92. 920  HCOLOR= 3:A$ = "TO WIN YOU":VT = 8:HT = 28: GOSUB 980:A$ = "MUST PUT THE":VT = 10:HT = 27: GOSUB 980:A$ = "LETTERS IN":VT = 12:HT = 28: GOSUB 980:A$ = "THIS ORDER":VT = 14:HT = 28: GOSUB 980
  93. 930  IF G = 2  THEN 950
  94. 940 A$ = "  A B C":VT = .7:HT = 29.4: GOSUB 980:A$ = "D E F G":VT = 2.2:HT = 29.4: GOSUB 980:A$ = "H I J K":VT = 3.7:HT = 29.4: GOSUB 980:A$ = "L M N O":VT = 5.2:HT = 29.4: GOSUB 980: GOTO 960
  95. 950 A$ = "A B C D":VT = .7:HT = 29.4: GOSUB 980:A$ = "E F G H":VT = 2.2:HT = 29.4: GOSUB 980:A$ = "I J K L":VT = 3.7:HT = 29.4: GOSUB 980:A$ = "M N O P":VT = 5.2:HT = 29.4: GOSUB 980
  96. 960 A$ = "TO GIVE UP":VT = 17:HT = 28: GOSUB 980:A$ = "ENTER A 0":VT = 19:HT = 28: GOSUB 980
  97. 970  RETURN 
  98. 980  POKE 232,0: POKE 233,8:HT = HT *7:VT = VT *8: FOR L = 1 TO  LEN(A$):A =  ASC( MID$ (A$,L,1)) -53
  99. 990  IF A > -6  AND A <5  THEN A = A +6
  100. 1000  ON (A <1) GOTO 1010: DRAW A AT (HT -7) +(L *7),VT:M =  PEEK( -16336) - PEEK( -16336)
  101. 1010  NEXT L: RETURN 
  102. 1020  POKE 232,248: POKE 233,9:HT = HT *13:VT = VT *17: FOR L = 1 TO  LEN(A$):A =  ASC( MID$ (A$,L,1)) -51: ON (A =  -19) GOTO 1040: IF A = 12  THEN A = 10
  103. 1030  DRAW A AT (HT -13) +(L *13),VT:M =  PEEK( -16336) + PEEK( -16336)
  104. 1040  NEXT L: RETURN 
  105. 1050  HGR2 : HCOLOR= 7
  106. 1060 A$ = "HAND PUZZLE":VT = 0:HT = 5: GOSUB 1020:A$ = "WRITTEN BY":VT = 2:HT = 5.5: GOSUB 1020:A$ = "ROBERT DEVINE":VT = 4:HT = 4: GOSUB 1020:A$ = "COPYRIGHT MCMLXXXIX":VT = 6:HT = 1: GOSUB 1020:A$ = "MINDCRAFT CORP":VT = 8:HT = 4: GOSUB 1020
  107. 1070 A$ = "CONCORD MA":VT = 10:HT = 5: GOSUB 1020
  108. 1080  FOR T = 1 TO 4000: NEXT : RETURN 
  109. 1090  HCOLOR= 1: RETURN 
  110. 1100  HCOLOR= 2: RETURN 
  111. 1110  HCOLOR= 5: RETURN 
  112. 1120  HCOLOR= 7: RETURN 
  113. 1130  FOR T = 1 TO 1500: NEXT T: RETURN 
  114. 1140  VTAB 22: PRINT "                                      ": IF M$ =  >"a"  AND M$ <"z"  THEN M$ =  CHR$( ASC(M$) -32)
  115. 1150  RETURN 
  116. 1160  FOR T = 1 TO  LEN(N$): IF  MID$ (N$,T,1) <"A"  OR  MID$ (N$,T,1) >"Z"  THEN E = 1
  117. 1170  NEXT T: RETURN 
  118. 1180  PRINT "CAN'T FIND SHAPE TABLES ON DISK": VTAB 23: END