32 Programmi con il Commodore 64 – Gennaio 1985 – Basic V2

Qualche giorno fa ho acquistato l’ennesimo libro della mia ormai soddisfacente libreria dedicata al RetroComputing. Il libro si intitola “32 Programmi con il Commodore 64” della collana Il piacere del computer edita da Franco Muzzio & C. Editore. Il libro e’ stato pubblicato nel Gennaio 1985.
Ecco quindi un altro listato prelevato dal libro in questione.
Lo scopo del gioco è quello di muovere più a lungo del vostro avversario, senza andare a sbattere contro un ostacolo. All’inizio il programma chiede il nome del giocatore di destra e del giocatore di sinistra. Quindi visualizza il campo di gioco, mostra il punto di partenza per ciascun giocatore e vi dice di premere un tasto qualsiasi per cominciare.
Dopo aver premuto un tasto, ogni giocatore comincia a muovere, indipendentemente dall’altro, in una delle quattro direzioni: sù, giù, sinistra e destra. Mentre si muove, il giocatore costruisce un “muro” all’interno del campo di gioco. Il computer stabilisce la velocità del movimento; il giocatore può solo controllare la propria direzione di moto. Il giocatore di sinistra può cambiare direzione verso l’alto, il basso, sinistra o destra premendo i tasti W,Z,A o D rispettivamente. Il giocatore a destra può fare lo stesso con i tasti @,/ (barra), : (due punti) e = (uguale).

Titolo: Ostacoli
Piattaforma: Commodore 64
Linguaggio: Basic
Versione originale: Tom Rugg e Phil Feldman
Pubblicazione: 32 Programmi con il Commodore 64
Anno: 1985
Trascrizione: Francesco Fiorentini
Anno: 2025
Note: N/A

Istruzioni
Il giocatore di sinistra può cambiare direzione verso l’alto, il basso, sinistra o destra premendo i tasti W,Z,A o D rispettivamente. Il giocatore a destra può fare
lo stesso con i tasti @,/ (barra), : (due punti) e = (uguale).
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: Ostacoli – 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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84 100 rem: ostacoli
110 rem: copyright 1983
111 rem: tom rugg, phil feldman, and
112 rem: western systems group
115 print chr$(5)
120 x=rnd(-ti): gosub 600
125 poke 53281,1:print chr$(147):print
128 poke 53280,1:poke 53281,0
130 print tab(15); chr$(18); "ostacoli"
140 print: print
141 print:print a$;", i tuoi tasti sono:":print
142 print tab(8) "'w' su', 'z' giu'"
143 print tab(8) "'a' sinistra, 'd' destra":print
145 print:print b$;", i tuoi tasti sono:": print
146 print tab(8) "'@' su, '/' giu"
147 print tab(8) "':' sinistra, '=' destra":print
150 print:print tab(5); "premi un tasto per cominciare"
152 get r$:if r$="" then 152
155 z=90
160 ax=10:ay=12:bx=29:by=12:a=86:b=102
165 s=1024:e=127:ad=int(4*rnd(1))+1
167 bd=int(4*rnd(1))+1:co=55296:ac=2:bc=5
170 poke 53281,1:print chr$(147);:poke 53281,0
190 for j=1 to 1000:next
200 gosub 950: gosub 900
205 for j=1 to 10: get r$: next
210 x=ax:y=ay:d=ad: gosub 1000
220 ar=r:ax=x:ay=y
230 x=bx:y=by:d=bd: gosub 1000
240 br=r:bx=x:by=y
245 if ar=1 or br=1 then 400
250 gosub 900
255 for j=1 to 10
260 get r$
265 if r$="w" then ad=1
270 if r$="z" then ad=2
280 if r$="a" then ad=3
290 if r$="d" then ad=4
300 if r$=" " then bd=1
310 if r$="/" then bd=2
320 if r$=":" then bd=3
330 if r$="=" then bd=4
340 next
350 goto 210
400 gosub 700:x=ax: y=ay
410 if br=1 then x=bx:y=by
420 for j=1 to 15
430 poke s+40*y+x,z
440 for k=1 to 200:next
450 poke s+40*y+x,z+128
460 for k=1 to 200:next
470 next
480 for j=1 to 20:get r$: next
490 goto 125
600 poke 53281,1:print chr$(147):poke 53281,0
610 input"nome del giocatore di sinistra";a$
620 print
630 input"giocatore di destra";b$
640 return
700 print chr$ (19);
710 for j=1 to 12
720 print chr$ (17) :next
730 if ar=1 and br=1 then print"avete perso entrambi!";
735 if ar=1 and br=1 then return
740 r$=a$:if ar=1 then r$=b$
750 print r$;" vince!";
760 return
900 poke (co+40*ay+ax),ac
905 poke (s+40*ay+ax),a
910 poke (co+40*by+bx),bc
915 poke (s+40*by+bx),b
920 return
950 for x=0 to 39
960 poke s+x,e:poke s+880+x,e
970 next:for y=0 to 22
980 poke (s+40*y),e:poke (s+40*y+39),e:next
990 return
1000 if d=1 then y=y- 1
1010 if d=2 then y=y+1
1020 if d=3 then x=x-1
1030 if d=4 then x=x+1
1040 r=0
1050 if peek(s+40*y+x)<>32 then r=1
1060 return
