home *** CD-ROM | disk | FTP | other *** search
/ AppleDisk Magazine Miscellaneous Programs / AppleDisk_Misc_Programs_1.dsk / PUZZLE.bas < prev    next >
Encoding:
BASIC Source File  |  1987-01-01  |  8.9 KB  |  120 lines

  1. 10  REM   ***********************
  2. 20  REM   *        PUZZLE       *
  3. 30  REM   *  BY ROBERT DEVINE   *
  4. 40  REM   * COPYRIGHT (C) 1989  *
  5. 50  REM   * BY GRUPPO EDIT. JCE *
  6. 60  REM   *  & MICROSPARC, INC. *
  7. 70  REM   ***********************
  8. 80  IF  PEEK(104) < >96  THEN  POKE 103,1: POKE 104,96: POKE 24576,0: PRINT  CHR$(4);"RUN 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$ = "CIAO":VT = 4:HT = 1: GOSUB 1020:A$ = "IL TUO NOME ?":VT = 6:HT = 1: GOSUB 1020
  14. 140  VTAB 24: HTAB 16: PRINT "(MAX 9 CAR)";: 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$ = "VUOI":VT = 2:HT = 0: GOSUB 1020:A$ = "LE ISTRUZIONI":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$ = "IL PUZZLE":VT = 1:HT = 0: GOSUB 1020:A$ = "SI COMPONE DI":VT = 3:HT = 21: GOSUB 980:A$ = "UN QUADRATO DI 4 X 4 ":VT = 5:HT = .2: GOSUB 980
  18. 180 A$ = "LE LETTERE":VT = 7:HT = 0: GOSUB 980:A$ = "ABCDEFGHIJKLMNOP":VT = 4: GOSUB 1020:A$ = "SONO SPARPAGLIATE NEL QUADRATO E":VT = 11: GOSUB 980
  19. 190 A$ = "TU DEVI  RIMETTERLE IN":VT = 13: GOSUB 980:A$ = "ORDINE. CI SONO DUE PUZZLE DIVERSI":VT = 15: GOSUB 980:A$ = "E TU PUOI SCEGLIERE TRA":VT = 17: GOSUB 980
  20. 200 A$ = "PREMI RETURN PER CONTINUARE":VT = 21:HT = 7: GOSUB 980: GET A$: HGR2 :A$ = "PUZZLE UNO":VT = 0:HT = 0: GOSUB 1020:G = 1: GOSUB 900
  21. 210 A$ = "PER MUOVERE PREMI":VT = 5:HT = 0: GOSUB 980:A$ = "IL TASTO DELLA LETTERA":VT = 7: GOSUB 980:A$ = "VICINA AD":VT = 9: GOSUB 980:A$ = "UNA CASELLA":VT = 11: GOSUB 980:A$ = "VUOTA E LA LETTERA":VT = 13: GOSUB 980
  22. 220 A$ = "VIENE SPOSTATA NELLO":VT = 15: GOSUB 980:A$ = "SPAZIO VUOTO":VT = 17: GOSUB 980:A$ = "PREMI RETURN PER CONTINUARE":VT = 22:HT = 7: GOSUB 980: GET A$
  23. 230  HGR2 :A$ = "PUZZLE DUE":VT = 0:HT = 0: GOSUB 1020:G = 2: GOSUB 900:A$ = "PER MUOVERE DEVI":VT = 3:HT = 0: GOSUB 980:A$ = "RUOTARE 4 LETTERE IN":VT = 4: GOSUB 980:A$ = "SENSO ANTIORARIO"
  24. 235 VT = 5: GOSUB 980
  25. 240 A$ = "PER FAR QUESTO":VT = 8: GOSUB 980:A$ = "SCEGLI LA LETTERA":VT = 9: GOSUB 980:A$ = "IN ALTO A SINISTRA DELLE":VT = 10: GOSUB 980:A$ = "4 CHE VUOI RUOTARE":VT = 11: GOSUB 980
  26. 250 A$ = "PER ESEMPIO SE SCEGLI":VT = 13: GOSUB 980:A$ = "LA LETTERA G":VT = 14: GOSUB 980:A$ = "IL QUADRATO CAMBIA IN":VT = 15: GOSUB 980
  27. 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
  28. 265 A$ = "M N O P":VT = 20:HT = 5: GOSUB 980:A$ = "PREMI RETURN PER CONTINUARE":VT = 22:HT = 7: GOSUB 980: GET A$: PRINT 
  29. 270  HGR2 :T = 0: FOR X = 0 TO 9  STEP 2:T = T +1:A$ = "BUONA FORTUNA":VT = X:HT = 6: ON T GOSUB 1090,1100,1110,1120,1120: GOSUB 1020: NEXT X: GOSUB 1130
  30. 280  TEXT : HOME : VTAB 10: PRINT "QUALE PUZZLE SCEGLI ?": PRINT : PRINT "1.PUZZLE N.1-MUOVI UNA LETTERA PER VOLTA": PRINT 
  31. 285  PRINT "2.PUZZLE N.2-RUOTI 4 LETTERE ALLA VOLTA.": PRINT : PRINT "SCEGLI ";: GET G$: IF G$ =  CHR$(27)  THEN  TEXT : HOME : END 
  32. 290 G =  VAL(G$): IF G <1  OR G >2  THEN 280
  33. 300  GOSUB 880
  34. 310  VTAB 22: HTAB 10: INVERSE : PRINT " INIZIA A GIOCARE ": NORMAL 
  35. 320  FOR X = 1 TO 16
  36. 330 A =  INT( RND(1) *16 +65): FOR Y = 1 TO 16: ON (A$(Y)) =  CHR$(A) GOTO 330: NEXT Y
  37. 340 A$(X) =  CHR$(A): NEXT X:TR = 0: IF G = 2  THEN 370
  38. 350  FOR X = 1 TO 16: IF A$(X) = "P"  THEN A$(X) = " "
  39. 360  NEXT X
  40. 370  GOSUB 730: GOSUB 1140
  41. 380  VTAB 22: HTAB 33: PRINT "MUOVI "TR: VTAB 22: PRINT "QUAL'E' LA TUA MOSSA, ";N$;" ";: GET M$: GOSUB 1140
  42. 390  IF M$ = "0"  THEN 700
  43. 400 TR = TR +1: VTAB 22: HTAB 33: PRINT "MUOVI "TR
  44. 410  FOR X = 1 TO 16: IF M$ = A$(X)  THEN M = X: GOTO 430
  45. 420  NEXT X: GOSUB 760: GOTO 380
  46. 430 T = 0: IF G = 2  AND (M/4 =  INT(M/4)  OR M >11)  THEN  GOSUB 760: GOTO 380
  47. 440  IF G = 2  THEN 780
  48. 450  REM   GAME 1
  49. 460  ON M GOTO 470,480,480,490,500,510,510,520,500,510,510,520,530,540,540,550
  50. 470  GOSUB 560: GOSUB 600: GOTO 640
  51. 480  GOSUB 560: GOSUB 580: GOSUB 600: GOTO 640
  52. 490  GOSUB 580: GOSUB 600: GOTO 640
  53. 500  GOSUB 560: GOSUB 600: GOSUB 620: GOTO 640
  54. 510  GOSUB 560: GOSUB 580: GOSUB 600: GOSUB 620: GOTO 640
  55. 520  GOSUB 580: GOSUB 600: GOSUB 620: GOTO 640
  56. 530  GOSUB 560: GOSUB 620: GOTO 640
  57. 540  GOSUB 560: GOSUB 580: GOSUB 620: GOTO 640
  58. 550  GOSUB 580: GOSUB 620: GOTO 640
  59. 560  IF A$(M +1) = " "  THEN A$(M +1) = M$:A$(M) = " ":T = 1:A = M +1
  60. 570  RETURN 
  61. 580  IF A$(M -1) = " "  THEN A$(M -1) = M$:A$(M) = " ":T = 1:A = M -1
  62. 590  RETURN 
  63. 600  IF A$(M +4) = " "  THEN A$(M +4) = M$:A$(M) = " ":T = 1:A = M +4
  64. 610  RETURN 
  65. 620  IF A$(M -4) = " "  THEN A$(M -4) = M$:A$(M) = " ":T = 1:A = M -4
  66. 630  RETURN 
  67. 640  IF T = 0  THEN  GOSUB 760: GOTO 380
  68. 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
  69. 660  DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  70. 670  NEXT Y,X
  71. 680  FOR X = 1 TO 16: ON (A$(X) < > MID$ (G1$,X,1)) GOTO 380: NEXT X
  72. 690  VTAB 22: HTAB 10: INVERSE : PRINT " >>> HAI VINTO !!!! <<< ": NORMAL : GOSUB 1130
  73. 700  GOSUB 1140: VTAB 22: PRINT "VUOI UN ALTRO PUZZLE "N$" ";: INPUT A$
  74. 710  IF A$ = "S"  OR A$ = "SI"  THEN  FOR X = 1 TO 16:A$(X) = "": NEXT X: GOTO 280
  75. 720  TEXT : HOME : VTAB 12: PRINT "BYE "N$" E' STATO FACILE": VTAB 23: END 
  76. 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
  77. 740  DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  78. 750  NEXT Y,X: RETURN 
  79. 760  VTAB 22: PRINT  CHR$(7); CHR$(7);: INVERSE : PRINT " MOSSA NON VALIDA "N$" !!! RIPROVA  ": NORMAL :TR = TR -1: GOSUB 1130: GOSUB 1140: RETURN 
  80. 770  REM   GAME 2
  81. 780 M1$ = A$(M):M2$ = A$(M +1):M3$ = A$(M +4):M4$ = A$(M +5)
  82. 790 A = 0: FOR X = 1 TO 4: FOR Y = 1 TO 4:A = A +1: IF A < >M  THEN 840
  83. 800  XDRAW  ASC(A$(M)) -51 AT YC(Y),XC(X):A$(M) = M2$: DRAW  ASC(A$(M)) -51 AT YC(Y),XC(X)
  84. 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)
  85. 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)
  86. 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
  87. 840  NEXT Y,X
  88. 850  FOR X = 1 TO 16: ON (A$(X) < > MID$ (G2$,X,1)) GOTO 380: NEXT X: GOTO 690
  89. 860  PRINT  CHR$(4)"BLOAD BIG.LETTERS": PRINT  CHR$(4)"BLOAD SMALL.LETTERS": SCALE= 1: ROT= 0
  90. 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 
  91. 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
  92. 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
  93. 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
  94. 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
  95. 920  HCOLOR= 3:A$ = "PER VINCERE":VT = 8:HT = 28: GOSUB 980:A$ = "DEVI METTERE":VT = 10:HT = 27: GOSUB 980:A$ = "LE LETTERE IN":VT = 12:HT = 27: GOSUB 980:A$ = "QUESTO ORDINE":VT = 14:HT = 27: GOSUB 980
  96. 930  IF G = 2  THEN 950
  97. 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
  98. 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
  99. 960 A$ = "PER FINIRE":VT = 17:HT = 28: GOSUB 980:A$ = "SCEGLI 0":VT = 19:HT = 28: GOSUB 980
  100. 970  RETURN 
  101. 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
  102. 990  IF A > -6  AND A <5  THEN A = A +6
  103. 1000  ON (A <1) GOTO 1010: DRAW A AT (HT -7) +(L *7),VT:M =  PEEK( -16336) - PEEK( -16336)
  104. 1010  NEXT L: RETURN 
  105. 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
  106. 1030  DRAW A AT (HT -13) +(L *13),VT:M =  PEEK( -16336) + PEEK( -16336)
  107. 1040  NEXT L: RETURN 
  108. 1050  HGR2 : HCOLOR= 7
  109. 1060 A$ = "PUZZLE":VT = 0:HT = 7: GOSUB 1020:A$ = "SCRITTO DA":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$ = "BY APPLEDISK":VT = 8:HT = 4: GOSUB 1020
  110. 1080  FOR T = 1 TO 4000: NEXT : RETURN 
  111. 1090  HCOLOR= 1: RETURN 
  112. 1100  HCOLOR= 2: RETURN 
  113. 1110  HCOLOR= 5: RETURN 
  114. 1120  HCOLOR= 7: RETURN 
  115. 1130  FOR T = 1 TO 1500: NEXT T: RETURN 
  116. 1140  VTAB 22: PRINT "                                      ": IF M$ =  >"a"  AND M$ <"z"  THEN M$ =  CHR$( ASC(M$) -32)
  117. 1150  RETURN 
  118. 1160  FOR T = 1 TO  LEN(N$): IF  MID$ (N$,T,1) <"A"  OR  MID$ (N$,T,1) >"Z"  THEN E = 1
  119. 1170  NEXT T: RETURN 
  120. 1180  PRINT "I FILE DELLE FIGURE NON SONO SUL DISCO": VTAB 23: END