home *** CD-ROM | disk | FTP | other *** search
/ AppleDisk 6 / AppleDisk_006.dsk / SOLITARIO.bas < prev    next >
Encoding:
BASIC Source File  |  1986-01-01  |  14.2 KB  |  281 lines

  1. 1  REM ********************
  2. 2  REM *                  *
  3. 3  REM *   IL SOLITARIO   *
  4. 4  REM *                  *
  5. 5  REM ********************
  6. 8  HOME : VTAB 1: PRINT : PRINT 
  7. 10  FOR X = 0 TO 17: READ Y: POKE 6144 +X,Y: NEXT 
  8. 12  IF  PEEK(104) = 64  THEN 20
  9. 16  VTAB 10: HTAB 10: PRINT "UN MOMENTO, PREGO..."
  10. 18  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4)"RUN SOLITARIO"
  11. 20  IF  PEEK( -1101) < >6  THEN V$ = "00165103133074165104133075160004177074240015201127176008201097144004041223145074200208237160000177074170200177074134074133075177074208219096": FOR A = 768 TO 813:V =  VAL( MID$ (V$,3 *(A -767),3)): POKE A,V: NEXT : CALL 768
  12. 22  HGR : TEXT : HOME 
  13. 25  VTAB 10: HTAB 10: PRINT "UN MOMENTO ANCORA..."
  14. 30  IF  PEEK(3072) < >25  THEN  PRINT  CHR$(4)"BLOAD CARTE,A$C00"
  15. 40 CLKEY% =  -16368:KSCAN% =  -16384:Q$ =  CHR$(34)
  16. 50  HOME : GOSUB 600
  17. 60  DIM A$(32)
  18. 70  REM  ISTRUZIONI
  19. 80 A$(1) = "PER QUESTO SOLITARIO VENGONO USATE"
  20. 90 A$(2) = "52 CARTE DISPOSTE IN QUATTRO FILE"
  21. 100 A$(3) = "DA 13 CARTE OGNUNA. A STESURA"
  22. 110 A$(4) = "UTLIMATA VENGONO TOLTI I 4 ASSI."
  23. 120 A$(5) = "LO SCOPO E' QUELLO DI SISTEMARE"
  24. 130 A$(6) = "LE CARTE IN MODO DA AVERE PER OGNI
  25. 140 A$(7) = "FILA UN SINGOLO SEME IN ORDINE"
  26. 150 A$(8) = "ASCENDENTE A PARTIRE DAL 2."
  27. 160 A$(9) = "LE CARTE VANNO SPOSTATE UTILIZZANDO"
  28. 170 A$(10) = "GLI SPAZI LASCIATI DAGLI ASSI"
  29. 180 A$(11) = "SEGUENDO QUESTE REGOLE: UNA CARTA"
  30. 190 A$(12) = "PUO' ESSERE SPOSTATA SOLO SE E'"
  31. 200 A$(13) = "DELLO STESSO SEME DELLA CARTA A"
  32. 210 A$(14) = "SINISTRA DELLO SPAZIO E SOLO SE"
  33. 220 A$(15) = "E' DI VALORE PIU' ALTO DI QUELLA"
  34. 230 A$(16) = "A SINISTRA DELLO SPAZIO. NEGLI SPAZI"
  35. 240 A$(17) = "ALL'ESTREMA SINISTRA DI OGNI FILA E'"
  36. 250 A$(18) = "CONSENTITO INSERIRE SOLO LE CARTE"
  37. 260 A$(19) = "CON VALORE 2. NESSUNA CARTA PUO'"
  38. 270 A$(20) = "ESSERE MESSA ALLA DESTRA DI UN RE."
  39. 280 A$(21) = "QUESTI SPAZI SONO CHIAMATI RE BLOCCATI."
  40. 290 A$(22) = "QUANDO TUTTI E QUATTRO I RE SARANNO"
  41. 300 A$(23) = "BLOCCATI NON SI AVRA' PIU' POSSIBILITA'"
  42. 310 A$(24) = "DI MOVIMENTO E LA PROVA SARA' FINITA."
  43. 320 A$(25) = "LE CARTE CHE NON FANNO PARTE DI UNA":A$(26) = "SEQUENZA CHE INIZIA CON 2 NELL'ESTREMA":A$(27) = "SINISTRA VERRANNO RIMESCOLATE. IL GIOCO"
  44. 330 A$(28) = "CONTINUA FINO A QUANDO TUTTE LE FILE":A$(29) = "NON SARANNO SISTEMATE. CHI RIUSCIRA' A"
  45. 340 A$(30) = "TERMINARE IL SOLITARIO IN MENO DI 3":A$(31) = "PROVE, GUADAGNERA' IL TITOLO DI":A$(32) = "CAMPIONE DEL SOLITARIO."
  46. 500  FOR PP = 1 TO 7: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
  47. 510  FOR PP = 8 TO 14: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
  48. 520  FOR PP = 15 TO 20: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
  49. 530  FOR PP = 21 TO 27: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
  50. 540  FOR PP = 28 TO 32: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
  51. 560  HOME : VTAB (14): POKE CLKEY%,0: PRINT "VUOI STAMPARE QUESTE REGOLE?";: GET PG$: PRINT : IF PG$ = "s"  OR PG$ = "S"  THEN  HOME : PR# 1: FOR P = 1 TO 32: PRINT A$(P): PRINT : NEXT P: PR# 0: HOME 
  52. 580  RUN 40
  53. 590  END 
  54. 600  TEXT :ZZ$ = "IL SOLITARIO": HOME : INVERSE : PRINT  SPC( 41): HTAB 40: PRINT  SPC( 2): HTAB 40: PRINT  SPC( 2): HTAB 40: PRINT  SPC( 2): HTAB 40: PRINT  SPC( 2): HTAB 40: PRINT  SPC( 41): NORMAL 
  55. 610  VTAB 3: HTAB 8: PRINT "EDITRONICA SRL- PRESENTA:": VTAB 5: HTAB 20 - INT( LEN(ZZ$)/2)
  56. 620  PRINT ZZ$: POKE 34,8: HOME 
  57. 640  INVERSE 
  58. 650 LC% = LC% +1: IF LC% = 1  THEN  VTAB 23: HTAB 1: PRINT " PREMERE [R] PER VEDERE LE REGOLE O   "
  59. 660  VTAB 24: PRINT "[ESC] FINE O [RETURN] PER CONTINUARE. ";
  60. 670  NORMAL : POKE CLKEY%,0: WAIT  -16384,128
  61. 680 P =  PEEK(KSCAN%)
  62. 690  IF P = 155  THEN  POKE CLKEY%,0: HOME : VTAB 13: PRINT  SPC( 12)"UN MOMENTO, PREGO...": VTAB 15: PRINT "STO RITORNANDO AL MENU DI APPLEDISK...": POKE 104,8: PRINT  CHR$(13);: PRINT  CHR$(4);"RUN HELLO2"
  63. 710  IF P = 210  OR P = 242  THEN  HOME : POKE CLKEY%,0: RETURN 
  64. 720  IF P < >141  THEN 670
  65. 730  POP : POKE CLKEY%,0: HOME : GOTO 8000
  66. 740  END 
  67. 750  INVERSE 
  68. 760  VTAB 24: PRINT "[ESC] FINE O [RETURN] PER RIVEDERE ";
  69. 770  NORMAL : POKE CLKEY%,0: WAIT  -16384,128
  70. 780 P =  PEEK(KSCAN%)
  71. 790  IF P = 155  THEN  POKE CLKEY%,0: HOME : VTAB 13: PRINT  SPC( 12)"UN MOMENTO, PREGO...": VTAB 15: PRINT "STO RITORNANDO AL MENU DI APPLEDISK...": POKE 104,8: PRINT  CHR$(13);: PRINT  CHR$(4);"RUN HELLO2"
  72. 810  IF P < >141  THEN 770
  73. 820  HOME : POKE CLKEY%,0: RETURN 
  74. 5000  INVERSE 
  75. 5010  VTAB 24: PRINT "[ESC] FINE O [RETURN] PER CONTINUARE.";
  76. 5020  NORMAL : POKE CLKEY%,0: REM    WAIT  - 16384,128
  77. 5030 P =  PEEK(KSCAN%)
  78. 5035  IF P < >155  THEN 5070
  79. 5040  IF P = 155  THEN  POKE CLKEY%,0: HOME : VTAB 13: PRINT  SPC( 12)"UN MOMENTO , PREGO...": VTAB 15: PRINT "STO RITORNANDO AL MENU DI APPLEDISK...": POKE 104,8: PRINT  CHR$(13);: PRINT  CHR$(4);"RUN HELLO2"
  80. 5070  IF P < >141  THEN 5030
  81. 5080  HOME : RETURN 
  82. 8000  REM  INIZIO GIOCO
  83. 8030  REM   HGR : TEXT 
  84. 8040  DIM CP%(52),SU(4,13),V(4,13),S(52),VA(52),NA(52),R(4),LL(4)
  85. 8050  POKE 232,0: POKE 233,12: SCALE= 1: ROT= 0
  86. 8060 CLKEY% =  -16368:KSCAN% =  -16384:CTB% =  -958:BUTN% =  -16287:B2% =  -16286:WHOOP% = 6144:BLACK% =  -3086
  87. 8070  FOR X = 1 TO 4:LL(X) = 2: NEXT 
  88. 8090  VTAB 10: PRINT "PREMERE <T> PER GIOCARE USANDO LA       TASTIERA.": PRINT : PRINT "PREMERE <J> PER GIOCARE USANDO I        PULSANTI DEL JOYSTICK.": PRINT : PRINT "SCEGLIERE (T/J) ---> ";
  89. 8100  POKE CLKEY%,0
  90. 8110 P =  PEEK(KSCAN%)
  91. 8120  IF P >224  THEN P = P -32
  92. 8125  IF P = 155  THEN  POKE CLKEY%,0: RUN 40
  93. 8130  IF P < >202  AND P < >212  THEN RZ =  RND(1): GOTO 8110
  94. 8140 MO$ =  CHR$(P -128)
  95. 8150  POKE CLKEY%,0
  96. 8160  REM  MESCOLA LE CARTE 
  97. 8170 SH% = 1
  98. 8180  TEXT : HOME : VTAB 7: HTAB 1: PRINT "PROVA N."SH%;: GOSUB 9870: HOME : VTAB 21
  99. 8190  REM  DISTRIBUZIONE CARTE
  100. 8200  CALL BLACK%: HGR 
  101. 8210 FL = 0: FOR ROW = 1 TO 4
  102. 8220  FOR COL = 1 TO 13: HCOLOR= 7:Y = (ROW -1) *31: DRAW 18 AT (COL -1) *21,Y:
  103. 8230 Y = 11 +(ROW -1) *31: HCOLOR= 5 -(SU(ROW,COL) = 1) -(SU(ROW,COL) = 4):SL = ((COL/2) =  INT(COL/2)): DRAW 13 +SU(ROW,COL) AT (COL -1) *21 -SL,Y
  104. 8240  HCOLOR= 4:Y = (ROW -1) *31: DRAW V(ROW,COL) AT (COL -1) *21,Y
  105. 8250  REM REGISTRA LA POSIZIONE DEL RE
  106. 8260  IF V(ROW,COL) = 13  THEN KR(SU(ROW,COL)) = ROW:KC(SU(ROW,COL)) = COL
  107. 8270  NEXT COL
  108. 8280  NEXT ROW
  109. 8290  REM  RIMUOVE GLI ASSI
  110. 8300 FL = 0
  111. 8310  VTAB 21: HTAB 1: FLASH : PRINT "RIMOZIONE DEGLI ASSI...";: NORMAL 
  112. 8320 PP = 1
  113. 8330  FOR ROW = 1 TO 4: FOR COL = 1 TO 13
  114. 8340  IF V(ROW,COL) = 1  THEN FL = FL +1: HCOLOR= 4:Y = (ROW -1) *31: DRAW 18 AT (COL -1) *21,Y:V(ROW,COL) = 0:AR(FL) = Y:AC(FL) = (COL -1) *21:RA(FL) = ROW:CA(FL) = COL: GOSUB 9370
  115. 8350  NEXT COL: FOR WA = 1 TO 50: NEXT WA,ROW
  116. 8360 PP = 0: GOSUB 9380: HOME 
  117. 8370  IF KB% = 4  THEN  XDRAW 20 AT 40,143: XDRAW 21 AT 162,143: GOTO 9450
  118. 8380  REM  SCELTA DELLE CARTE
  119. 8390  XDRAW 20 AT 40,143: XDRAW 21 AT 162,143
  120. 8400 ROW = 1:COL = 1
  121. 8410 SY = (ROW -1) *31 +15:SX = (COL -1) *21 +5
  122. 8420  IF V(ROW,COL) = 0  THEN COL = COL +1:SX = SX +21: GOTO 8420
  123. 8430  IF MO$ = "J"  THEN 8560
  124. 8440  VTAB 21: HTAB 1: CALL CTB%: PRINT "[<-] E [->] MUOVE IL PUNTO A SINISTRA & DESTRA.[A] E [Z] (FRECCIA SU-GIU')MUOVE IL PUNTO SU E GIU'. SELEZIONARE LA CARTA & PREMERE [RETURN]. (PROVA N."SH%")";
  125. 8450  POKE CLKEY%,0: IF MO$ = "J"  THEN 8580
  126. 8460  XDRAW 19 AT SX,SY: XDRAW 19 AT SX,SY
  127. 8470 P =  PEEK(KSCAN%): IF P >224  THEN P = P -32
  128. 8480  IF P < >136  AND P < >138  AND P < >139  AND P < >141  AND P < >149  AND P < >193  AND P < >218  AND P < >155  THEN 8460
  129. 8490  IF P = 155  THEN  POKE CLKEY%,0: RUN 40
  130. 8500  IF P = 141  THEN 8870
  131. 8510  IF P = 136  THEN 8660
  132. 8520  IF P = 138  OR P = 218  THEN 8710
  133. 8530  IF P = 139  OR P = 193  THEN 8760
  134. 8540  IF P = 149  THEN 8810
  135. 8550 RS =  RND(1): GOTO 8460
  136. 8560  VTAB 21: HTAB 1: CALL CTB%: PRINT "USA IL JOYSTICK PER MUOVERE IL PUNTO.": PRINT "PREMI IL BOTTONE 0 PER SELEZIONARE.": VTAB 24: HTAB 25: PRINT "(PROVA N."SH%")";
  137. 8570  POKE CLKEY%,0
  138. 8580  XDRAW 19 AT SX,SY: XDRAW 19 AT SX,SY
  139. 8590  IF  PEEK(KSCAN%) = 155  THEN  POKE CLKEY%,0: RUN 40
  140. 8600  IF  PEEK(BUTN%) >127  THEN 8870
  141. 8610  IF  PDL(0) = 0  THEN 8660
  142. 8620  IF  PDL(1) = 255  THEN 8710
  143. 8630  IF  PDL(1) = 0  THEN 8760
  144. 8640  IF  PDL(0) = 255  THEN 8810
  145. 8650 RS =  RND(1): GOTO 8580
  146. 8660  IF SX = 5  THEN 8450
  147. 8670 SX = SX -21:COL = COL -1
  148. 8680  IF V(ROW,COL) = 0  AND COL < >1  THEN 8660
  149. 8690  IF V(ROW,COL) = 0  AND COL = 1  THEN 8810
  150. 8700  GOTO 8450
  151. 8710  IF SY = 108  THEN 8450
  152. 8720 SY = SY +31:ROW = ROW +1
  153. 8730  IF V(ROW,COL) = 0  AND ROW < >4  THEN 8710
  154. 8740  IF V(ROW,COL) = 0  AND ROW = 4  THEN 8760
  155. 8750  GOTO 8450
  156. 8760  IF SY = 15  THEN 8450
  157. 8770 SY = SY -31:ROW = ROW -1
  158. 8780  IF V(ROW,COL) = 0  AND ROW < >1  THEN 8760
  159. 8790  IF V(ROW,COL) = 0  AND ROW = 1  THEN 8710
  160. 8800  GOTO 8450
  161. 8810  IF SX = 257  THEN 8450
  162. 8820 SX = SX +21:COL = COL +1
  163. 8830  IF V(ROW,COL) = 0  AND COL < >13  THEN 8810
  164. 8840  IF V(ROW,COL) = 0  AND COL = 13  THEN 8660
  165. 8850  GOTO 8450
  166. 8860  REM CONTROLLA PER UNA SCELTA VALIDA
  167. 8870 FAIL = 0
  168. 8880  FOR PO = 1 TO 4
  169. 8890  IF CA(PO) = 1  AND V(ROW,COL) < >2  THEN FAIL = FAIL +1: GOTO 8940
  170. 8900  IF CA(PO) = 1  AND V(ROW,COL) = 2  THEN 8960
  171. 8910  IF SU(RA(PO),CA(PO) -1) < >SU(ROW,COL)  THEN FAIL = FAIL +1: GOTO 8940
  172. 8920  IF V(RA(PO),CA(PO) -1) < >V(ROW,COL) -1  THEN FAIL = FAIL +1: GOTO 8940
  173. 8930  IF SU(RA(PO),CA(PO) -1) = SU(ROW,COL)  AND V(RA(PO),CA(PO) -1) = V(ROW,COL) -1  THEN 8960
  174. 8940  NEXT : IF FAIL = 4  THEN  HCOLOR= 4: DRAW 18 AT 9,128: GOTO 8410: REM SELEZIONA O CANCELLA
  175. 8950 PO = PO -1
  176. 8960  VTAB 21: HTAB 1: CALL CTB%: IF MO$ = "T"  THEN  PRINT "PREMERE [RETURN] PER SELEZIONARE.": PRINT "PREMERE [X] PER CANCELLARE."
  177. 8970  IF MO$ = "J"  THEN  PRINT "PREMERE BUTTONE 0 PER SELEZIONARE.": PRINT "PREMERE BUTTONE 1 PER CANCELLARE."
  178. 8980  HCOLOR= 7:Y = (ROW -1) *31: DRAW 18 AT (COL -1) *21,Y:
  179. 8990  DRAW 18 AT 9,128
  180. 9000  HCOLOR= 5 -(SU(ROW,COL) = 1) -(SU(ROW,COL) = 4): DRAW 13 +SU(ROW,COL) AT 8,139
  181. 9010  HCOLOR= 4: DRAW V(ROW,COL) AT 9,128
  182. 9020 SX = AC(PO) +5:SY = AR(PO) +15
  183. 9030  POKE CLKEY%,0
  184. 9040  XDRAW 19 AT SX,SY: XDRAW 19 AT SX,SY
  185. 9050  IF MO$ = "J"  THEN 9110
  186. 9060 P =  PEEK(KSCAN%): IF (P < >141  AND P < >216  AND P < >248  AND P < >155)  THEN 9040
  187. 9070  IF P = 155  THEN  POKE CLKEY%,0: RUN 30
  188. 9080  IF P = 141  THEN 9220
  189. 9090  IF P = 216  OR P = 248  THEN 9160
  190. 9100  GOTO 9040
  191. 9110  IF  PEEK(BUTN%) >128  THEN 9220
  192. 9120  IF  PEEK(B2%) >128  THEN 9160
  193. 9130  IF  PEEK(KSCAN%) = 155  THEN  POKE CLKEY%,0: RUN 30
  194. 9140  GOTO 9040
  195. 9150  REM  CANCELLA
  196. 9160  HCOLOR= 4: DRAW 18 AT 9,128
  197. 9170  HCOLOR= 7:Y = (ROW -1) *31: DRAW 18 AT (COL -1) *21,Y:
  198. 9180 Y = 11 +(ROW -1) *31: HCOLOR= 5 -(SU(ROW,COL) = 1) -(SU(ROW,COL) = 4):SL = ((COL/2) =  INT(COL/2)): DRAW 13 +SU(ROW,COL) AT (COL -1) *21 -SL,Y
  199. 9190  HCOLOR= 4:Y = (ROW -1) *31: DRAW V(ROW,COL) AT (COL -1) *21,Y
  200. 9200  GOTO 8410
  201. 9210  REM DISEGNA LE CARTE
  202. 9220  HCOLOR= 4: DRAW 18 AT 9,128
  203. 9230  HCOLOR= 4:Y = (ROW -1) *31: DRAW 18 AT (COL -1) *21,Y
  204. 9240  IF V(ROW,COL) = 13  THEN KR(SU(ROW,COL)) = RA(PO):KC(SU(ROW,COL)) = CA(PO)
  205. 9250  HCOLOR= 7: DRAW 18 AT AC(PO),AR(PO)
  206. 9260 SU(RA(PO),CA(PO)) = SU(ROW,COL):V(RA(PO),CA(PO)) = V(ROW,COL):V(ROW,COL) = 0
  207. 9270 Y = 11 +(RA(PO) -1) *31: HCOLOR= 5 -(SU(RA(PO),CA(PO)) = 1) -(SU(RA(PO),CA(PO)) = 4):SL = ((CA(PO)/2) =  INT(CA(PO)/2)): DRAW 13 +SU(RA(PO),CA(PO)) AT (CA(PO) -1) *21 -SL,Y
  208. 9280  HCOLOR= 4:Y = (RA(PO) -1) *31: DRAW V(RA(PO),CA(PO)) AT (CA(PO) -1) *21,Y
  209. 9290 HROW = RA(PO):HCOL = CA(PO)
  210. 9300 RA(PO) = ROW:CA(PO) = COL:AR(PO) = (ROW -1) *31:AC(PO) = (COL -1) *21
  211. 9310 ROW = HROW:COL = HCOL
  212. 9320  GOSUB 9370
  213. 9330  IF KB% = 4  THEN 9450
  214. 9340  GOTO 8410
  215. 9350  END 
  216. 9360  REM CONTEGGIO RE BLOCCATI
  217. 9370  IF KB% >0  AND PP = 0  THEN  XDRAW KB% +21 AT 256,140
  218. 9380 KB% = 0: FOR K = 1 TO 4:K1 = KR(K)
  219. 9390  FOR K2 = (KC(K) -(KC(K) = 13)) +1 TO 13
  220. 9400  IF V(K1,K2) >1  THEN 9420
  221. 9410 KB% = KB% +1: NEXT K2
  222. 9420  NEXT K
  223. 9430  IF KB% >0  AND PP = 0  THEN  XDRAW KB% +21 AT 256,140
  224. 9440  RETURN 
  225. 9450  VTAB 21: HTAB 1: CALL CTB%: IF (LL(1) +LL(2) +LL(3) +LL(4)) <30  THEN  VTAB 22: HTAB 1: FLASH : PRINT "   RACCOLTA DELLE CARTE FUORI POSTO...": NORMAL 
  226. 9460 W = 0:KB% = 0:UP = 0:AS = 0: FOR X = 1 TO 4: FOR Y = 1 TO 13
  227. 9470  IF V(X,Y) = 0  THEN V(X,Y) = 1:AS = AS +1:SU(X,Y) = AS
  228. 9480  NEXT : NEXT 
  229. 9490  FOR X = 1 TO 4
  230. 9500  IF V(X,1) < >2  THEN Y = 1: GOTO 9550
  231. 9510 SU = SU(X,1)
  232. 9520  FOR Y = LL(X) TO 13
  233. 9530  IF Y = 13  AND V(X,Y) = 1  THEN W = W +1: GOTO 9550
  234. 9540  IF V(X,Y) = V(X,Y -1) +1  AND SU(X,Y) = SU  THEN  NEXT Y
  235. 9550 R(X) = Y: FOR PU = R(X) TO 13:UP = UP +1:S(UP) = SU(X,PU):VA(UP) = V(X,PU)
  236. 9560  HCOLOR= 4: DRAW 18 AT (PU -1) *21,(X -1) *31
  237. 9570  NEXT PU:LL(X) = R(X) +(R(X) = 1): NEXT X
  238. 9580  XDRAW 20 AT 40,143: XDRAW 21 AT 162,143: XDRAW 25 AT 256,140
  239. 9590  VTAB 21: HTAB 1: CALL CTB%
  240. 9600  IF W <4  THEN 9740
  241. 9610  VTAB 21: HTAB 1: PRINT "FINE!!  NUMERO DELLE PROVE: "SH%"."
  242. 9620  PRINT "GIUDIZIO: ";
  243. 9630  IF SH% <4  THEN  PRINT "<CAMPIONE DEL SOLITARIO>": FOR X = 1 TO 5: POKE 0,255: CALL WHOOP%: NEXT X: GOTO 9680
  244. 9640  IF SH% <6  THEN  PRINT "<BUONISSIMO>": GOTO 9680
  245. 9650  IF SH% <9  THEN  PRINT "<BUONO>": GOTO 9680
  246. 9660  IF SH% <12  THEN  PRINT "<MEDIOCRE>": GOTO 9680
  247. 9670  PRINT "<PRINCIPIANTE>"
  248. 9680  VTAB 24: HTAB 1: INVERSE : PRINT "[RETURN] PER GIOCARE  [ESC] PER FINIRE.";: NORMAL 
  249. 9690  POKE CLKEY%,0
  250. 9700 P =  PEEK(KSCAN%)
  251. 9710  IF P = 155  THEN  POKE CLKEY%,0: RUN 40
  252. 9720  IF P = 141  THEN  POKE CLKEY%,0: HOME : TEXT : RUN 8040
  253. 9730  GOTO 9700
  254. 9740 SH% = SH% +1: VTAB 21: HTAB 1: CALL CTB%: VTAB 21: HTAB 1: PRINT "PROVA N."SH%;
  255. 9750  FOR X = 1 TO UP:CP%(X) = X: NEXT 
  256. 9760  FOR X = 1 TO UP:HOLD% = CP%(X)
  257. 9770 R% =  RND(1) *UP +1:CP%(X) = CP%(R%):CP%(R%) = HOLD%
  258. 9780 SH =  PEEK(49200): PRINT ".";
  259. 9790  NEXT : FOR X = 1 TO UP:NA(X) = CP%(X): NEXT 
  260. 9800 CC = 0: FOR X = 1 TO 4: FOR Y = R(X) TO 13
  261. 9810 CC = CC +1:SU(X,Y) = S(NA(CC)):V(X,Y) = VA(NA(CC))
  262. 9820  HCOLOR= 7: DRAW 18 AT (Y -1) *21,(X -1) *31
  263. 9830  HCOLOR= 5 -(SU(X,Y) = 1) -(SU(X,Y) = 4):SL = ((Y/2) =  INT(Y/2)): DRAW 13 +SU(X,Y) AT (Y -1) *21 -SL,11 +(X -1) *31
  264. 9840  HCOLOR= 4: DRAW V(X,Y) AT (Y -1) *21,(X -1) *31
  265. 9850  IF V(X,Y) = 13  THEN KR(SU(X,Y)) = X:KC(SU(X,Y)) = Y
  266. 9860  NEXT Y,X: GOTO 8300
  267. 9870 ROW = 0:COL = 0: FOR X = 1 TO 52:CP%(X) = X: NEXT 
  268. 9880  FOR X = 1 TO 52
  269. 9885  POKE 205,255
  270. 9890  IF  INT(X/2) = X/2  THEN SH =  PEEK(49200): PRINT ".";
  271. 9900 HOLD% = CP%(X)
  272. 9910 R% =  RND(1) *52 +1:CP%(X) = CP%(R%):CP%(R%) = HOLD%: NEXT 
  273. 9920  FOR X = 1 TO 52
  274. 9930 SH =  PEEK(49200): PRINT ".";
  275. 9940 COL = COL +1 -(COL = 13) *13:ROW = ROW +1 -(ROW = 4) *4
  276. 9945  POKE 205,255
  277. 9950 SU(ROW,COL) =  INT(CP%(X)/13) -((CP%(X)/13) =  INT(CP%(X)/13)) +1
  278. 9960 V(ROW,COL) = CP%(X) -((SU(ROW,COL) -1) *13)
  279. 9965  POKE 205,255
  280. 9970  NEXT : RETURN 
  281. 25555  DATA   173,48,192,136,208,4,198,0,240,7,202,208,246,166,0,208,239,96