Il mio primo libro di BASIC – Giugno 1982 – Basic V2
Ho ripescato un contributo di Francesco Sblendorio, che ringraziamo ancora per la preziosa collaborazione e per la volontá di preservare i listati BASIC per Commodore 64. Francesco mi aveva inviato questo listato diverso tempo fa, ma non ero ancora stato in grado di pubblicarlo, mea culpa!
Questa volta si tratta di un listato proveniente dal libro “Il mio primo libro di BASIC” di Luca Novelli e pubblicato da Edizioni Elettroniche VIFI-Mondadori nel Giugno del 1982.
Il piú antico gioco del mondo
Il gioco del NIM é forse uno dei piú antichi giochi conosciuti. Si gioca con dodici bastoncini o dodici pietruzze. Noi lo giocheremo come gli antichi cinesi, con dodici monete poste su tre file. I giocatori tolgono da una sola riga per volta una o piú monete. Vince il giocatore che prende l’ultima moneta.
Titolo: Il gioco del Nim
Piattaforma: Commodore 64
Linguaggio: Basic
Versione originale: Luca Novelli
Pubblicazione: Il mio primo libro di BASIC
Anno: 1982
Trascrizione: Francesco Sblendorio
Anno: 2024
Note: N/A
Istruzioni
Il computer vi chiederá di fornire il numero di riga ed il numero di monete.
Al primo prompt ? dovrete fornire il numero di riga (1-3)
Al secondo prompt ?? dovrete fornire il numero di monete (1-5)
Buon divertimento!
Qui di seguito trovate il codice da copiare sul vostro Commodore 64.
Il codice originale é modificato per essere copiato su CBM prg Studio. Gli Screen Codes presenti nel listato originale, sono stati manualmente sostituiti da quelli standard utilizzati da CBM prg Studio.
Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘>’ e ‘<’. Nel caso, sostituite questi valori direttamente su CBM prg Studio.
Listato: Il gioco del Nim – Commodore 64 – Basic V2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 10 rem il gioco del nim
20 dim a(3)
30 a(1)=3
40 a(2)=4
50 a(3)=5
60 x=rnd(-timer)
70 rem stampo la configurazione
80 gosub 380
90 print:print"dimmi la riga ed il numero di monete"
100 input f,n
110 rem controllo dati
120 if f>3 goto 170
130 if n<=a(f) goto 200
140 if a(f)=0 goto 170
150 print:print"il numero delle monete non e' corretto"
160 goto 90
170 print:print"la riga non e' valida"
180 goto 90
190 rem sottraggo le monete
200 gosub 490
210 if c=1 goto 240
220 print:print"hai vinto tu"
230 goto 340
240 gosub 380
250 f=int(rnd(1)*3)+1
260 if a(f)=0 goto 250
270 rem f e' uguale a una delle tre righe
280 n=int(rnd(1)*a(f))+1
290 print:print"ora gioco io. riga:";f;" monete:";n
300 gosub 500
310 if c=0 goto 330
320 goto 80
330 print:print"ho vinto io"
340 print"vuoi giocare ancora ? si/no"
350 input r$
360 if r$="si" or r$="s" goto 30
370 goto 570
380 rem sottoprogramma per stampare le righe
390 print
400 for j=1 to 3
410 print j;" ";
420 if a(j)=0 goto 460
430 for k=1 to a(j)
440 print"o ";
450 next k
460 print
470 next j
480 return
490 rem sottoprogramma per sottrarre le monete
500 c=0
510 a(f)=a(f)-n
520 for k=1 to 3
530 if a(k)=0 goto 550
540 c=1
550 next k
560 return
570 end