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
22 HGR : TEXT : HOME
25 VTAB 10: HTAB 10: PRINT "UN MOMENTO ANCORA..."
30 IF PEEK(3072) < >25 THEN PRINT CHR$(4)"BLOAD CARTE,A$C00"
40 CLKEY% = -16368:KSCAN% = -16384:Q$ = CHR$(34)
50 HOME : GOSUB 600
60 DIM A$(32)
70 REM ISTRUZIONI
80 A$(1) = "PER QUESTO SOLITARIO VENGONO USATE"
90 A$(2) = "52 CARTE DISPOSTE IN QUATTRO FILE"
100 A$(3) = "DA 13 CARTE OGNUNA. A STESURA"
110 A$(4) = "UTLIMATA VENGONO TOLTI I 4 ASSI."
120 A$(5) = "LO SCOPO E' QUELLO DI SISTEMARE"
130 A$(6) = "LE CARTE IN MODO DA AVERE PER OGNI
140 A$(7) = "FILA UN SINGOLO SEME IN ORDINE"
150 A$(8) = "ASCENDENTE A PARTIRE DAL 2."
160 A$(9) = "LE CARTE VANNO SPOSTATE UTILIZZANDO"
170 A$(10) = "GLI SPAZI LASCIATI DAGLI ASSI"
180 A$(11) = "SEGUENDO QUESTE REGOLE: UNA CARTA"
190 A$(12) = "PUO' ESSERE SPOSTATA SOLO SE E'"
200 A$(13) = "DELLO STESSO SEME DELLA CARTA A"
210 A$(14) = "SINISTRA DELLO SPAZIO E SOLO SE"
220 A$(15) = "E' DI VALORE PIU' ALTO DI QUELLA"
230 A$(16) = "A SINISTRA DELLO SPAZIO. NEGLI SPAZI"
240 A$(17) = "ALL'ESTREMA SINISTRA DI OGNI FILA E'"
250 A$(18) = "CONSENTITO INSERIRE SOLO LE CARTE"
260 A$(19) = "CON VALORE 2. NESSUNA CARTA PUO'"
270 A$(20) = "ESSERE MESSA ALLA DESTRA DI UN RE."
280 A$(21) = "QUESTI SPAZI SONO CHIAMATI RE BLOCCATI."
290 A$(22) = "QUANDO TUTTI E QUATTRO I RE SARANNO"
300 A$(23) = "BLOCCATI NON SI AVRA' PIU' POSSIBILITA'"
310 A$(24) = "DI MOVIMENTO E LA PROVA SARA' FINITA."
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"
330 A$(28) = "CONTINUA FINO A QUANDO TUTTE LE FILE":A$(29) = "NON SARANNO SISTEMATE. CHI RIUSCIRA' A"
340 A$(30) = "TERMINARE IL SOLITARIO IN MENO DI 3":A$(31) = "PROVE, GUADAGNERA' IL TITOLO DI":A$(32) = "CAMPIONE DEL SOLITARIO."
500 FOR PP = 1 TO 7: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
510 FOR PP = 8 TO 14: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
520 FOR PP = 15 TO 20: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
530 FOR PP = 21 TO 27: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
540 FOR PP = 28 TO 32: PRINT A$(PP): PRINT : NEXT PP: GOSUB 5000
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
580 RUN 40
590 END
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
650 LC% = LC% +1: IF LC% = 1 THEN VTAB 23: HTAB 1: PRINT " PREMERE [R] PER VEDERE LE REGOLE O "
660 VTAB 24: PRINT "[ESC] FINE O [RETURN] PER CONTINUARE. ";
670 NORMAL : POKE CLKEY%,0: WAIT -16384,128
680 P = PEEK(KSCAN%)
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"
710 IF P = 210 OR P = 242 THEN HOME : POKE CLKEY%,0: RETURN
720 IF P < >141 THEN 670
730 POP : POKE CLKEY%,0: HOME : GOTO 8000
740 END
750 INVERSE
760 VTAB 24: PRINT "[ESC] FINE O [RETURN] PER RIVEDERE ";
770 NORMAL : POKE CLKEY%,0: WAIT -16384,128
780 P = PEEK(KSCAN%)
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"
810 IF P < >141 THEN 770
820 HOME : POKE CLKEY%,0: RETURN
5000 INVERSE
5010 VTAB 24: PRINT "[ESC] FINE O [RETURN] PER CONTINUARE.";
5020 NORMAL : POKE CLKEY%,0: REM WAIT - 16384,128
5030 P = PEEK(KSCAN%)
5035 IF P < >155 THEN 5070
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"
5070 IF P < >141 THEN 5030
5080 HOME : RETURN
8000 REM INIZIO GIOCO
8030 REM HGR : TEXT
8040 DIM CP%(52),SU(4,13),V(4,13),S(52),VA(52),NA(52),R(4),LL(4)
8370 IF KB% = 4 THEN XDRAW 20 AT 40,143: XDRAW 21 AT 162,143: GOTO 9450
8380 REM SCELTA DELLE CARTE
8390 XDRAW 20 AT 40,143: XDRAW 21 AT 162,143
8400 ROW = 1:COL = 1
8410 SY = (ROW -1) *31 +15:SX = (COL -1) *21 +5
8420 IF V(ROW,COL) = 0 THEN COL = COL +1:SX = SX +21: GOTO 8420
8430 IF MO$ = "J" THEN 8560
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%")";
8450 POKE CLKEY%,0: IF MO$ = "J" THEN 8580
8460 XDRAW 19 AT SX,SY: XDRAW 19 AT SX,SY
8470 P = PEEK(KSCAN%): IF P >224 THEN P = P -32
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
8490 IF P = 155 THEN POKE CLKEY%,0: RUN 40
8500 IF P = 141 THEN 8870
8510 IF P = 136 THEN 8660
8520 IF P = 138 OR P = 218 THEN 8710
8530 IF P = 139 OR P = 193 THEN 8760
8540 IF P = 149 THEN 8810
8550 RS = RND(1): GOTO 8460
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%")";
8570 POKE CLKEY%,0
8580 XDRAW 19 AT SX,SY: XDRAW 19 AT SX,SY
8590 IF PEEK(KSCAN%) = 155 THEN POKE CLKEY%,0: RUN 40
8600 IF PEEK(BUTN%) >127 THEN 8870
8610 IF PDL(0) = 0 THEN 8660
8620 IF PDL(1) = 255 THEN 8710
8630 IF PDL(1) = 0 THEN 8760
8640 IF PDL(0) = 255 THEN 8810
8650 RS = RND(1): GOTO 8580
8660 IF SX = 5 THEN 8450
8670 SX = SX -21:COL = COL -1
8680 IF V(ROW,COL) = 0 AND COL < >1 THEN 8660
8690 IF V(ROW,COL) = 0 AND COL = 1 THEN 8810
8700 GOTO 8450
8710 IF SY = 108 THEN 8450
8720 SY = SY +31:ROW = ROW +1
8730 IF V(ROW,COL) = 0 AND ROW < >4 THEN 8710
8740 IF V(ROW,COL) = 0 AND ROW = 4 THEN 8760
8750 GOTO 8450
8760 IF SY = 15 THEN 8450
8770 SY = SY -31:ROW = ROW -1
8780 IF V(ROW,COL) = 0 AND ROW < >1 THEN 8760
8790 IF V(ROW,COL) = 0 AND ROW = 1 THEN 8710
8800 GOTO 8450
8810 IF SX = 257 THEN 8450
8820 SX = SX +21:COL = COL +1
8830 IF V(ROW,COL) = 0 AND COL < >13 THEN 8810
8840 IF V(ROW,COL) = 0 AND COL = 13 THEN 8660
8850 GOTO 8450
8860 REM CONTROLLA PER UNA SCELTA VALIDA
8870 FAIL = 0
8880 FOR PO = 1 TO 4
8890 IF CA(PO) = 1 AND V(ROW,COL) < >2 THEN FAIL = FAIL +1: GOTO 8940
8900 IF CA(PO) = 1 AND V(ROW,COL) = 2 THEN 8960
8910 IF SU(RA(PO),CA(PO) -1) < >SU(ROW,COL) THEN FAIL = FAIL +1: GOTO 8940
8920 IF V(RA(PO),CA(PO) -1) < >V(ROW,COL) -1 THEN FAIL = FAIL +1: GOTO 8940
8930 IF SU(RA(PO),CA(PO) -1) = SU(ROW,COL) AND V(RA(PO),CA(PO) -1) = V(ROW,COL) -1 THEN 8960
8940 NEXT : IF FAIL = 4 THEN HCOLOR= 4: DRAW 18 AT 9,128: GOTO 8410: REM SELEZIONA O CANCELLA
8950 PO = PO -1
8960 VTAB 21: HTAB 1: CALL CTB%: IF MO$ = "T" THEN PRINT "PREMERE [RETURN] PER SELEZIONARE.": PRINT "PREMERE [X] PER CANCELLARE."
8970 IF MO$ = "J" THEN PRINT "PREMERE BUTTONE 0 PER SELEZIONARE.": PRINT "PREMERE BUTTONE 1 PER CANCELLARE."
9370 IF KB% >0 AND PP = 0 THEN XDRAW KB% +21 AT 256,140
9380 KB% = 0: FOR K = 1 TO 4:K1 = KR(K)
9390 FOR K2 = (KC(K) -(KC(K) = 13)) +1 TO 13
9400 IF V(K1,K2) >1 THEN 9420
9410 KB% = KB% +1: NEXT K2
9420 NEXT K
9430 IF KB% >0 AND PP = 0 THEN XDRAW KB% +21 AT 256,140
9440 RETURN
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
9460 W = 0:KB% = 0:UP = 0:AS = 0: FOR X = 1 TO 4: FOR Y = 1 TO 13
9470 IF V(X,Y) = 0 THEN V(X,Y) = 1:AS = AS +1:SU(X,Y) = AS
9480 NEXT : NEXT
9490 FOR X = 1 TO 4
9500 IF V(X,1) < >2 THEN Y = 1: GOTO 9550
9510 SU = SU(X,1)
9520 FOR Y = LL(X) TO 13
9530 IF Y = 13 AND V(X,Y) = 1 THEN W = W +1: GOTO 9550
9540 IF V(X,Y) = V(X,Y -1) +1 AND SU(X,Y) = SU THEN NEXT Y
9550 R(X) = Y: FOR PU = R(X) TO 13:UP = UP +1:S(UP) = SU(X,PU):VA(UP) = V(X,PU)
9560 HCOLOR= 4: DRAW 18 AT (PU -1) *21,(X -1) *31
9570 NEXT PU:LL(X) = R(X) +(R(X) = 1): NEXT X
9580 XDRAW 20 AT 40,143: XDRAW 21 AT 162,143: XDRAW 25 AT 256,140
9590 VTAB 21: HTAB 1: CALL CTB%
9600 IF W <4 THEN 9740
9610 VTAB 21: HTAB 1: PRINT "FINE!! NUMERO DELLE PROVE: "SH%"."
9620 PRINT "GIUDIZIO: ";
9630 IF SH% <4 THEN PRINT "<CAMPIONE DEL SOLITARIO>": FOR X = 1 TO 5: POKE 0,255: CALL WHOOP%: NEXT X: GOTO 9680
9640 IF SH% <6 THEN PRINT "<BUONISSIMO>": GOTO 9680
9650 IF SH% <9 THEN PRINT "<BUONO>": GOTO 9680
9660 IF SH% <12 THEN PRINT "<MEDIOCRE>": GOTO 9680
9670 PRINT "<PRINCIPIANTE>"
9680 VTAB 24: HTAB 1: INVERSE : PRINT "[RETURN] PER GIOCARE [ESC] PER FINIRE.";: NORMAL
9690 POKE CLKEY%,0
9700 P = PEEK(KSCAN%)
9710 IF P = 155 THEN POKE CLKEY%,0: RUN 40
9720 IF P = 141 THEN POKE CLKEY%,0: HOME : TEXT : RUN 8040