Rivista: A Tutto Commodore – Numero: 3 – Anno 1985 – Trascrizione: Francesco Fiorentini
Nell’attesa dell’uscita del numero 34 di RetroMagazine World ITA, ed approfittando del periodo di ferie, mi sono messo a trascrivere questo gioco per Commodore 64.
Dopo un’avventura testuale per ZX81, che potete trovare sempre su RetroLiPS, Planet Raith ZX81 ed un porting dello stesso gioco su Commodore 64, Planet Raith per C64, é nuovamente la volta di un gioco d’azione con i caratteri ridefiniti.
Questo listato é stato pubblicato sulla rivista italiana A Tutto Commodore di Marzo 1985 Nr. 3.
Titolo: Trappola Mortale
Piattaforma: Commodore 64
Linguaggio: Basic V2
Versione originale: Franco Francia
Pubblicazione: Edizioni JCE
Anno: 1984
Trascrizione: Francesco Fiorentini
Anno: 2021
Download: Trappola Mortale
Note: il listato originale, tradotto da Franco Francia, é tratto da un libro di Pete Gerrard (segnalazione di Andrea Pachetti).
Istruzioni
Benvenuti nella trappola mortale. Scopo del gioco e’ intrappolare il computer in modo che non possa piu’ muoversi liberamente. E’ ovvio che lui tentera’ di fare altrettanto nei vostri confronti. Evitate la vostra scia e la scia lasciata dal personaggio controllato dal computer, altrimenti sarete inesorabilmente morti! Potete scegliere la velocitá del gioco: rapido, medio o lento, premendo rispettivamente r, m, o l
Tasti:
– m muove in basso
– a muove a sinistra
– d muove a destra
– i muove in alto
Come sempre, qui di seguito trovate il codice ottimizzato per essere copiato direttamente su CBM prg Studio.
Se invece siete ansiosi di provare il gioco su un C64 reale o su un emulatore, scaricate il file Trappola Mortale dal nostro sito retromagazine.net.
Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘>’ e ‘<’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.
Listato: Trappola Mortale – 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140 0 rem***************************
1 rem* trappola mortale *
2 rem* by franco francia *
3 rem* (c) 1984 edizioni jce *
4 rem***************************
5 poke53280,9:poke53281,0:print"{clear}{yellow}attendere qualche istante, prego..."
10 gosub590
15 goto480
20 i=500:poke50176+i,128:poke55296+i,6
25 j=500:poke50176+j,129:poke55296+j,5
30 gosub325
35 q$="udlr":w$=mid$(q$,rnd(.4)*3+1,1):goto70
40 a=peek(203)
45 ifa=36then70
50 ifa=10then105
55 ifa=18then140
60 ifa=33then175
65 goto40
70 ifi>960theni=i-1000
75 ford=1tode:next
80 ifpeek(50176+i+40)<>46then270
85 i=i+40:poke50176+i,128:poke55296+i,6
90 gosub280
95 a=peek(203):ifa=64then70
100 goto45
105 ifint(i/40)=i/40theni=i+40
110 ifpeek(50176+i-1)<>46then270
115 ford=1tode:next
120 i=i-1:poke50176+i,128:poke55296+i,6
125 gosub280
130 a=peek(203):ifa=64then105
135 goto45
140 ifint((i-39)/40)=(i-39)/40theni=i-40
145 ford=1tode:next
150 ifpeek(50176+i+1)<>46then270
155 i=i+1:poke50176+i,128:poke55296+i,6
160 gosub280
165 a=peek(203):ifa=64then140
170 a=peek(203):goto45
175 ifi<40theni=i+1000
180 ifpeek(50176+i-40)<>46then270
185 ford=1tode:next
190 i=i-40:poke50176+i,128:poke55296+i,6
195 gosub280
200 a=peek(203):ifa=64then175
205 goto45
210 v=54272
215 pokev+14,0:pokev+4,0:pokev+5,0:pokev+6,0
220 pokev+5,190
225 pokev+6,0
230 pokev+24,15
235 reada,b
240 fori=1to500:next
245 ifa=0thenreturn
250 pokev+4,33
255 pokev+3,1:pokev+2,1
260 pokev+1,a:pokev,b
265 goto235
270 print"{clear}{green}{down}{right}sei morto!":c=c+1:goto400
275 q$="udlr":w$=mid$(q$,rnd(.4)*3+1,1)
280 k=int(rnd(.5)*10):ifk>8then275
282 xy=xy+1:ifxy/25=int(xy/25)thengosub352
285 q=j
290 ifw$="u"thenj=j-40:ifj<0thenj=j+1000
295 ifw$="d"thenj=j+40:ifj>1000thenj=j-1000
300 ifw$="l"thenj=j-1:ifint((j+1)/40)=(j+1)/40thenj=j+40
305 ifw$="r"thenj=j+1:ifint((j-40)/40)=(j-40)/40thenj=j-40
310 ifpeek(50176+j)=46thenpoke50176+j,129:poke55296+j,5:s=0:return
315 goto365
320 print"{clear}{green}{down}{right}grrr...":h=h+1:goto400
325 v=54272:z=0
330 forl=0to24:pokev+l,0:next
335 pokev+3,sn
340 pokev+5,40:pokev+6,146
345 pokev+24,15
350 pokev+4,65
352 z=z+10
355 pokev+1,1:pokev,z
360 return
365 p$=w$
370 ifp$="u"thenw$="d":j=q:goto285
375 ifp$="d"thenw$="l":j=q:goto285
380 ifp$="l"thenw$="r":j=q:goto285
385 ifp$="r"thens=s+1
390 ifs=4thens=0:goto320
395 w$="u":j=q:goto285
400 poke53280,12:poke53281,1
405 v=54272
410 forl=0to24:pokev+l,0:next
415 pokev+5,17:pokev+6,130
420 pokev+24,15
425 pokev+4,129
430 pokev+1,3
435 forp=250to0step-1:pokev,p:forpp=1to5:nextpp:nextp
440 forl=0to24:pokev+l,0:next
445 print"{down*2}punti tuoi ";h:print"punti del computer ";c
450 fori=1to10:getf$:next
455 print"{down}vuoi continuare? (s/n)"
460 getf$:iff$=""then460
465 iff$="s"then520
470 iff$="n"thenprint"{clear}ciao!":fori=0to24:pokev+i,0:next:end
475 goto460
480 print"{clear}{yellow}benvenuti nella trappola mortale"
485 gosub210
490 print"{down}scopo del gioco e' intrappolare il"
495 print"computer in modo che non possa piu'":print"muoversi liberamente."
500 print"{down}e' ovvio che lui tentera' di fare"
505 print"altrettanto nei vostri confronti!"
510 print"{down}m muove in basso, a muove a sinistra,"
515 print"d muove a destra, i muove in alto"
520 print"{down}volete un gioco rapido, medio, o lento?"
525 poke53280,9:poke53281,0
530 print"rispondete premendo r, m, l"
535 getd$:ifd$=""then535
540 ifd$="r"thenprint"rapido!":de=0:sn=8:goto560
545 ifd$="m"thenprint"medio!":de=125:sn=10:goto560
550 ifd$="l"thenprint"lento!";de=250:sn=14:goto560
555 goto535
560 print"{down}premere lo spazio per iniziare"
565 getd$:ifd$=" "then565
570 print"{clear}{yellow}";
575 fori=0to998:print".";
580 next:poke51175,46:poke56295,7
585 goto20
590 poke56333,127
595 poke1,51
600 forx=0to1023
605 poke53248+x,peek(53248+x)
610 next
615 forx=0to15
620 reada:poke54272+x,a
625 next
630 poke1,55
635 poke56333,129
640 poke648,196
645 poke56576,4
650 poke53272,21
655 data24,90,102,24,24,36,36,36,66,36,189,126,60,60,66,129
660 return
665 data4,208,5,103,4,73,2,6,3,54,0,0