Newsgroup: it.comp.retrocomputing
Titolo: Pazzo esperimento

Non lo faccio piu'!
Ho provato a passare allo scanner e all'OCR uno dei programmini di 
una rivista Paper Soft. Ddu' pale a rimettere a posto... Pensare 
che a quei tempi facevamo tutto a manina con l'incubo che saltasse 
la corrente prima di aver salvato su nastro... ^_^
Pensavo di dare il via ad un lavoro sistematico sulle 4 o 5 
rivistine che ho, ma non ce la fo. Spedisco qui perche' e' ~una 
tantum~, non maleditemi ^_^;.
Attenzione: ho risistemato il testo ('sto deficiente mi ha 
riconosciuto quasi tutti gli 1 come I e quasi tutte le I come 1. 
grrr), ma e' _MOLTO_PROBABILE_ che svariati errori siano 
sopravvissuti. Ho il forte sospetto che ce ne fossero anche nel 
testo di partenza. 
Ovviamente dovrete ricostruire le righe, ma questo viene lasciato 
per esercizio. ^_^;
P.S.: i diritti d'autore sono riservati agli aventi diritto
Apple II: Quandary
 ------------- begin -----------
Eccovi un gioco di strategia che ha delle regole molto semplici ma 
che può diventare molto complesso nella scelto delle mosse 
migliori. Il gioco sfrutto la grafica dei vostro Apple e vi 
presento un campo da gioco multicolore delle dimensioni di 12x12 
nel quale dovrete cimentarvi contro il computer.
Queste le regole del gioco:
All'inizio il computer dispone i pezzi (4 per il giocatore e 4 per 
il Computer) sulla prima e sull'ultima fila della scacchiera. i 
pezzi dei giocatore sono disposti nella parte basso dello schermo 
mentre i pezzi manovrati dal computer sono disposti nella porte 
alta dello schermo. Il movimento dei pezzi può avvenire solo in 
avanti, di fronte o nelle due caselle a destra o a sinistra in 
diagonale. La mossa può avere luogo solo se la casella di arrivo è 
di colore diverso da uno dei colori che sono di fronte alle pedine 
dell'avversario. Se la mossa è possibile si ha l'obbligo di 
effettuarla mentre se non esistono caselle valide si deve passare 
il turno. Vince chi per primo riesce a porre una delle proprie 
pedine sulla linea di partenza dell'avversario. E vinca il 
migliore!
10 TEXT : HOME
15 GOSUB 8000
20 DIM P(12),CO(12,12)
21 DIM TI(12),TV(8),X1(4),Y1(4), 
X2(4),Y2(4),C9(15),P1(12),P2(l2),P3(12),P4(12),C8(15)
22 DIM TO(3,3)
30 FOR I = 1 TO 12:P(I) = I * 3:NEXT
35 S$ = "S"
40 FOR I = 1 TO 12
50 FOR J = 1 TO 12
60 READ CO(I,J): NEXT : NEXT
70 DATA 3,13,7,6,12,5,13,3,7,6,8,5
80 DATA 5,8,3,13,4,6,8,12,13,4,7,3
470 DATA 7,12,4,5,7,13,5,4,3,8,12,6
100 DATA 4,6,13,12,8,3,7,6,l2,5,4,13
110 DATA 13,5,8,3,6,4,13,5,7,13,6,5
120 DATA 6,7,12,5,7,8,6,12,4,8,12,3
130 DATA 8,4,6,8,3,12,4,7,3,5,7,4
140 DATA 12,3,7,4,5,13,3,8,6,12,13,8
150 DATA 4,6,13,12,8,7,6,5,13,3,6,12
160 DATA 7,5,4,6,3,12,4,7,12,8,5,13
170 DATA 3,12,8,7,13,5,8,3,6,7,4,3
180 DATA 8,13,5,3,6,4,12,l3,4,5,8,7
182 GOSUB 3100: REM    TABELLA
190 GOSUB 8500
200 GOSUB 5000
210 GOSUB 7500
220 IF R$ = "S" THEN 200
230 REM    SCELTA DELLE POSIZIONI
240 FOR I = 1 TO 8:TV(I) = 0: NEXT I
250 FOR I = 1 TO 12:TI(I) = 0: NEXT I
260 I = 0
270 T = INT (RND (1) * 12) + 1
280 IF TI(T) = 0 THEN TI(T) = 1: I = I + 1:TV(I) = T
290 IF I < > 8 THEN 270
300 FOR I = 1 TO 4
310 X1(I)= TV(I):Y1(I) = 12
320 A1 = 15:A2 = X1(I):A3 = Y1(I): GOSUB 9060
330 X2(I) = 13 - TV(I + 4):Y2(I) = I
340 A1 = 0:A2 = X2(I):A3 = Y2(I): GOSUB 9070
350 NEXT I
352 MN = 0
354 REM
355 GOSUB 3000
360 GOSUS 9050: INPUT «VUOI INIZIARE? ";R$
370 IF R$ = "N" GOTO 1000
330 IF R$ < > "S" THEN 360
399 REM
400 GOSUB 9050: PRINT "GIOCANO I BIANCHI..."
401 POKE - 16368,0
405 GOSUB 4000
410 IF J = 0 THEN GOSUB 9050: PRINT "DEVI PASSARE"; CHR$ (7) : MN 
= 1: FOR I = 1 TO 10: GOSUS 9000: NEXT I: GOTO 1000
420 GOSUS 9050: VTAB 24: PRINT "HAI ";J;" POSSIBILITA'";
430 J5 = 0:IP = 1
440 J5 = J5 + IP
450 IF J5 = 0 THEN J5 = 12
460 IF J5 = 13 THEN J5 = 1
470 IF P1(J5) = 0 AND P2(J5) = 0 THEN 440
480 J4 = INT (J5 / 3 - 0.2) + 1
490 Al = CO(X1(J4),Y1(J4)):A2 = X1(J4): A3 = Y1(J4): GOSUB 9060
500 GOSUB 9000: GOSUB 9000
510 A1 = 15: GOSUB 9060
520 GOSUB 9000: GOSUB 9000
530 COLOR = 15: PLOT P(P1(J5)),P(P2(J5))
540 GOSUB 9000: GOSUB 9000
550 COLOR= CO(P1(J5),P2(J5)): PLOT P(P1(J5)),P(P2(J5))
560 GOSUB 9000: GOSUB 9000
570 C = PEEK ( - 16384)
575 POKE - 16368,0
580 IF C <= 127 THEN 490
590 IF C = 136 THEN IP = - 1: GOTO 440
600 IF C = 149 THEN IP = 1: GOTO 440
605 IF C = 206 THEN GOSUS 3000
610 IF C < > 141 THEN 490
620 A1 = 15:A2 = PI(J5):A3 = P2(J5): GOSUB 9060
630 A1 = CO(X1(J4),Y1(J4)):A2 = X1(J4):A3 = Y1(J4); GUSUB 9060
640 FOR I = 1 TO 50:C = PEEK( - 16336) * 3: NEXT I
650 X1(J4) = P1(J5)
660 Y1(J4) = P2(J5)
670 IF Y1(J4) = 1 THEN GOSUS 9050: PRINT "BRAVO!! HAI VINTO!"; 
CHR$ <7); CHR$ (7); CHR$ (7); CHR$ (7):GOTO 3500
1000 REM    MOSSA AL COMPUTER
1005 GOSUB 9050: PRINT "HMMM...";
1010 GOSUB 5200
1020 FOR I = 1 TO 4
1030 IF Y2(1) < > I1 THEN 1110
1040 FOR K = - 1 TO 1
1050 IF C8(CO(X2(I) + K,12)) = 0 THEN 1100
1055 FOR IK = 1 TO 4
1056 IF XI(IK) = X2(I) + K AND Y1(IK) = Y2(I) + 1 THEN 1100
1058 NEXT IK
1060 A1 = CO(X2(I),Y2(I)):A2 = X2(I):A3 = Y2(I): GOSUB 9070
1070 A1 = 0:A2 = X2(I) + K:A3 = Y2(I) + 1: GOSUB 9070
1080 GOSUB 9050: PRINT "HO VINTO!!!"; CHR$(7); CHR$ (7); CHR$(7); 
CHR$ (7): GOTO 3500
1100 NEXT K
1110 NEXT I
1112 GOSUS 5100
1115 FL = 0:IC = 0
1120 FOR I = 1 TO 4
1130 IF Y1(I) < > 2 THEN 1190
1140 FL = 1
1150 FOR K = - 1 TO 1 
1160 IF C9(CO(X1(I) + K,1)) = 0 GOTO 1180 
1170 IF C9(CO(X1(I) + K,1)) = 1 THEN C9(CO(X1(I) + K,1)) = 2:IC = 
IC + 1
1180 NEXT K
1190 NEXT 1
1195 IF FL = 0 THEN 1550
1200 IF IC > 0 THEN 1400
1205 GOSUB 5300
1206 PL = 0:FP = 0
1210 FOR I = 1 To 12
1220 L = INT (I / 3 - 0.2) + 1
1230 IF P3(I) = 0 AND P4(I)= 0 THEN 1380
1240 XS = X2(L):YS = Y2(L)
1250 X2(L) = P3(I
1260 Y2(L) = P4(I)
1270 GOSUB 5100
1280 FOR M = 1 TO 4
1290 IF Y1(M) < > 2 GOTO 1330
1300 FOR K = - 1 TO 1
1310 IF C9(CO(X1(M) + K,Y1(M) - 1)) = 1 GOTO 1350
1320 NEXT K
1330 NEXT M
1340 FP = 1: GOTO 1360
1350  PL = L:XL = P3(L); YL = P4(L) : P3(I) = 0: P4(I) = 0
1360 X2(L) = XS
1370 Y2(L) = YS
1380 NEXT I
1385 IF FP = 1 THEN 1550
1390 IF PL < > 0 THEN P3(PL) = XL:P4(PL) = YL
1395 GOTO 1557
1400 IF IC > 1 THEN 1550
1410 FOR I = 0 TO 15
1420 IF C9(I) < > 2 THEN 1460
1425 ID = 0
1430 FOR K = 1 TO 4
1435 IF CO(X2(K),Y2(K) + 1) = I THEN ID = ID + 1:PJ = K
1440 NEXT K
1460 NEXT I
1465 IF ID > 1 THEN 1550
1470 GOSUB 5300
1480 FOR I = 1 TO 4
1485 IF I = PJ THEN 1520
1490 FOR K = 1 TO 3
1495 P3((I - 1) * 3 + K) = 0
1500 P4((I - 1) * 3 + K) = 0
1510 NEXT K
1520 NEXT I
1530 GOTO 1206
1550 GOSUB 5300
1555 IF NV > 0 THEN 1700
1557 C = 0
1559 GOSUB 5300
1560 FOR I = 1 TO 12
1570 IF P3(I) = 0 AND P4(I) = 0 THEN 1590
1580 C = C + 1:PJ = I
1590 NEXT I
1600 IF C = 0 THEN GOSUB 9050: PRINT "DEVO PASSARE!"; CHR$ (7): 
FOR B = 1 TO 10: GOSUB 9000: NEXT B: GOTO 1670
1610 IF C < > I THEN 1640
1620 I = INT ( INT (PJ) / 3 - 0.3) + 1
1625 A1 = CO(X2(I),Y2(I)):A2 = X2(I):A3 = Y2(I): GOSUO 9070
1630 A1 = 0:A2 = P3(PJ):A3 - P4(PJ): GOSUB 9070
1631 PRINT CHR$ (7);
1632 MN = 0
1635 X2(I) = P3(PJ):Y2(I) = P4(PJ): GOTO 400
1640 PJ = RND (I) * 12 + 1
1650 IF P3(PJ) < > 0 AND P4(PJ) < > 0 THEN 1620
1660 GOTO 1640
1670 IF MN < > 1 THEN 400
1680 GOSUB 9050: PRINT "MATCH NULLO!"; CHR$ (7); CHR$ (7); CHR$ 
(7); CHR$ (7): GOTO 3500
1700 REM    LIVELLO > 0
1705 MX = - 10000:PJ = 0
1710 FOR I = 1 TO 12
1720 IF P3(I) = 0 AND P4(I) = 0 THEN 1760
1730 ON NV GOSUB 2000,2100,2200
1740 IF EV < = MX THEN 1760
1750 MX = EV:PJ = I
1760 NEXT I
1765 IF PJ = 0 THEN C = 0: GOTO 1600
1770 GOTO 1620
2000 REM    LIVELLO 1
2010 EV = P4(I) * 10
2020 RETURN
2100 REM    LIVELLO 2
2105 II = I
2110 IF P4(I) < = 4 THEN I2 = 1
2120 IF P4(I) > = 5 AND P4(I) < = 8 THEN I2 = 2
2130 IF P4(I) > = 9 THEN I2 = 3
2135 I3 = INT ( INT (I) / 3 - 0.3) + 1
2136 XS = X2(I3):YS = Y2(I3)
2137 X2(I3) = P3(I):Y2(I3) = P4(I)
2140 GOSUB 4000
2141 X2(I3) = XS:Y2(I3) = YS
2145 I = II
2150 IF J < = 3 THEN J2 = 1
2160 IF J > = 4 AND J < = 9 THEN J2 = 2
2170 IF J > = 10 THEN J2 = 3
2180 EV = T0(I2,J2) + P4(I) 10- J * 10
2190 IF J = 0 THEN EV = EV + 500
2195 RETURN
2200 REM   LIVELLO 3
2210 REM   LIVELLO 3 NON DEFINITO
2220 RETURN
3000 GOSUB 9050: INPUT "LIVELLO DI GIOCO? ";NV
3010 IF NV < 0 OR NV > 2 THEN 3000
3020 RETURN
3099 REM    TABELLA DI VALUTAZIONE DEL LIVELLO 2
3100 FOR I = 1 TO 3
311a FOR J = 1 TO 3
3120 READ T0(I,J)
3130 NEXT J
3140 NEXT I
3150 DATA 250,0,-1000,500,250,0,1000,500,250
3160 RETURN
3500 FOR I = 1 TO 2000: NEXT I
3505 HOME INPUT 'GIOCHI ANCORA ?"; Q$
3510 IF LEFT$ (Q$,1) = "N" THEN TEXT : HOME : HTAB 17: VTAB 10: 
INVERSE : PRINT "CIAO!": NORMAL : END
3520 IF LEFT$ (Q$,1) < > "S" GOTO 3500 
3530 GOTO 200
4000 REM    MOSSE POSSIBILI AL GIOCATORE BIANCO
4010 FOR I = 0 TO 15: C9(I) = 0: NEXT I
4020 FOR I = 1 TO 12:P1(I) = 0:P2(I) = 0: NEXT I
4025 REM    CARATTERIZZAZIONE DEI COLORI DAVANTI ALL'AVVERSARIO
4030 GOSUB 5100
4040 J = 0
4050 FOR I = 1 TO 4
4060 X = X1(I):Y = Y1(I)
4070 YI = Y - 1
4080 FOR K = -1 TO 1
4090 XI = X + K
4100 IF XI < 1 OR XI > 12 THEN 4160
4110 IF C9(CO(XI,Y1)) = 0 THEN 4160
4120 FOR L = 1 TG 4
4130 IF X2(L) = XI AND Y2(L) = YI THEN 4160
4135 IF X1(L) = XI AND YI(L) = YI THEN 4160
4140 NEXT L
4150 J = J + 1:P1((I - 1) * 3 + K + 2) = XI:P2((I - 1) * 3 + K + 
2) = YI
4160 NEXT K
4170 NEXT I
4190 RETURN
5000 GR : COLOR= 0
5005 FOR I = 0 TO 39: VLIN 0,39 AT I: NEXT
5010 FOR I = 1 TO 12
5020 FOR J = 1 TO 12
5030 COLOR= CO(I,J)
5040 VLIN P(J) - 1, P(J) + 1 AT P(I) - 1
5050 VLIN P(J) - 1, P(J) + 1 AT P(I)
5060 VLIN P(J) - 1, P(J) + 1 AT P(I) + 1
5070 NEXT : NEXT
5090 RETURN
5100 REM    PALETTA DI COLORI GIOCABILI DAL GIOCATORE
5110 FOR IK = 0 TO 15:C9(IK) = 0 : NEXT IK
5120 FOR IK = 1 TO 4
5130 C9(CO(X2(IK),Y2(IK) + 0)= 1
5140 NEXT IK
5150 RETURN
5200 REM    PALETTA DI COLORI GIOCABILI DAL COMPUTER
5210 FOR IK = 0 TO 15: C8(IK) = 0 : NEXT IK
5220 FOR IK = 1 TO 4
5230 C8(CO(X1(IK),Y1(IK) -1)) = 1
5240 NEXT IK
5250 RETURN
5300 REM    REPERIMENTO DEI CASI ACCESSIBILI AL COMPUTER
5310 FOR IK = 1 TO 12:P3(IK) = 0 :P4(IK) = 0: NEXT IK
5320 FOR IK = 1 TO 4
5330 FOR KK = - 1 TO 1
5335 IF X2(IK) + KK < 1 OR X2(IK)+ KK > 12 THEN 5370
5340 IF C8(CO(X2(IK) + KK,Y2(IK) + 1)) = 0 THEN 5370
5342 FOR JK = 1 TO 4
5344 IF X2(IK) + KK = XI(JK) AND Y2(IK) + 1 = Y1(JK) THEN 5370
5346 IF X2(IK) + KK = X2(JK) AND Y2(IK) + 1 = Y2(JK) THEN 5370
5348 NEXT JK
5350 P3((IK - 1) * 3 + KK + 2) = X2(IK) + KK
5360 P4((IK - 1) * 3 + KK + 2) = Y2(IK) + 1
5370 NEXT KK
5380 NEXT IK
5390 RETURN
7500 GOSUB 9050
7510 INPUT "VUOI GIRARE IL CAMPO DI GIOCO? ";R$
7520 IF R$ = "N" THEN RETURN
7530 IF R$ < > "S" THEN 7300
7540 FOR I = 1 TO 12
7550 FOR J = 1 TO 6
7560 T = CO(I,J):CO(I,J) = CO(I,13 - J):CO(I,13 - J) = T
7570 NEXT J
7590 NEXT I
7590 RETURN
8000 VTAB 10: HTAB 9
8010 PRINT "Q"; CHR$ (7);
8020 GOSUB 9000: GOSUB 9000
8030 PRINT "  U"; CHR$ (7);
8040 PRINT "  A"; CHR$ (7);
8050 PRINT "  N"; CHR$ (7);
8060 PRINT "  D"; CHR$ (7);
8070 GOSUB 9000: GOSUS 9000
8080 PRINT "  A"; CHR$ (7);
8090 FOR I = 1 TO 5: GOSUB 9000: NEXT
8100 PRINT "  R"; CHR$ (7);
8110 GOSUB 9000: GOSUB 9000
8120 PRINT "  Y";
8125 FOR I = 1 TO 20 : A = PEEK (- 16336): NEXT
8126 SPEED= 150: INVERSE : FOR I = 1 TO 22: VTAB 8: HTAB 31 - I: 
PRINT SPC(1);: VTAB 12: HTAB 8 + I: PRINT SPC( 1) : NEXT I: NORMAL 
: SPEED= 255
8130 FOR I = 1 TO 10: GOSUR 9000 : NEXT : RETURN
8500 HOME : INPUT "CONOSCI LE REGOLE (S/N)? ";R$
8510 IF R$ = "S" THEN RETURN
8520 IF R$ < > "N" THEN 9500
8530 SPEED= 50: HOME
8540 PRINT "QUANDARY E' UN GIOCO MOLTO SEMPLICE.": PRINT
8550 PRINT "ALL'INIZIO, DISPONGO I TUOI PEZZI ": PRINT
8560 PRINT "DI FRONTE AI MIEI (4 CIASCUNO) SULLA": PRINT
8570 PRINT "PRIMA FILA DELLA SCACCHIERA.": PRINT
8590 PRINT "I TUOI SONO BIANCHI E DISPOSTI NELLA": PRINT
8590 PRINT "PARTE BASSA DELLO SCHERMO.": PRINT
8600 PRINT "I MIEI SONO NERI E DISPOSTI NELLA": PRINT
8610 PRINT "PARTE ALTA DELLO SCHERMO.": PRINT
8420 PRINT "CHI COMINCIA DEVE AVANZARE UNO DEI ": PRINT
8630 PRINT "SUOI PEZZI SULLA CASELLA DI FRONTE O": PRINT
8ó40 PRINT "DIAGONALMENTE DAVANTI A DESTRA,0 A ": PRINT
8650 PRINT "SINISTRA.»: PRINT
8660 PRINT "MA SE LA CASELLA DI ARRIVO E' DELLO": PRINT
8670 PRINT "STESSO COLORE DI UNA DELE CASELLE ": PRINT
8680 PRINT "POSTE DIRETTAMENTE DI FRONTE ALL' AV-": PRINT
8690 PRINT "VERSARIO LA MOSSA NON PUO' AVERE LUOGO": PRINT
8700 PRINT "SCOPO DEL GIOCO E' D 1 PORRE UNO DEI ": PRINT
8705 PRINT "PROPRI PEZZI SULLA FILA DI PARTENZA"
8710 PRINT : PRINT "DELL'AVVERSARIO.": PRINT
8730 PRINT "SI HA L'OBBLIGO DI AVANZARE. SE NON E'" : PRINT
8740 PRINT "POSSIBILE SI PASSA IL TURNO.": PRINT : PRINT
8750 FLASH : PRINT "BUONA FORTUNA!": NORMAL
8760 FOR I - 1 TG 50s GOSUB 9000 NEXT
8765 SPEED = 255
8770 RETURN
9000 FOR J = 1 TO 100: NEXT : RETURN
9050 HOME : HTAB 14 : PRINT "Q U A N D A R Y": VTAB 23 : RETURN
9060 COLOR = A1 : PLOT P(A2), P(A3) : PLOT P(A2) - 1, P(A3) - 1 : 
PLOT P(A2) + 1, P(A3) - 1 : RETURN
9070 COLOR = A1 : PLOT P(A2), P(A3) : PLOT P(A2) - 1, P(A3) + 1 : 
PLOT P(A2) + 1, P(A3) + 1 : RETURN
---- fine ------
-- 
ciriciao from kirone
togliere il punto tra "lib" ed "ero", che ci sta per antispam
gia' che ci siete, togliete pure l'.invalid


[super snip]
Pensa che io mi sono "fatto" il manuale del PCOS e l'OG del Apple LIsa! ;-)
Scanner - Ocr - Html, scanner - ocr - html,  scanner - ocr - html, scanner -
ocr - html, scanner - ocr - html, scanner - ocr - html, scanner - ocr -
html, scanner - ocr - html, scanner - ocr - html,...
Solo il manuale del Lisa sono 288 pagine... =:-o
Ciao
Tiziano
Visita "Il mio angolo" del retrocomputing
http://www.rgmconsultants.it/tix
---------------------------------------------------------
Remove BOING from eMail address.

 migliori. Il gioco sfrutto la grafica dei vostro Apple e vi


 (remove the hyphen-spambusters @ work)
listen to aaria (two and a Mac): 
http://www.mp3.com/aaria
*** I vecchi computer fanno ognuno qualcosa di diverso;
    quelli nuovi fanno tutti le stesse cose. (Leonardo)

 Solo il manuale del Lisa sono 288 pagine... =:-o
Huh... Io non sono mai arrivato a tanto.
Di solito pero' e' un testo che una volta OCR-izzato (col 
programmino ridotto che danno con lo scanner) passo in un word 
processor che mi evidenzia la roba strana e cmq e' scorrevole da 
leggere. Ma un programma in BASIC?
Purtroppo ci ho messo troppo tempo, niente repliche (anche se... 
ci sarebbero programmini di poche decine di righe... Nah)
BTW, complimentoni per il lavoro.
