Coches locos – MSX – Basic

Rivista: MSX Magazine – Anno: 1985 – Numero 2 – Trascrizione: Francesco Fiorentini

Vi ricordate il gioco Battle of the cars in Locomotive Basic per Amstrad CPC recuperato solo pochi giorni fa? Ebbene, quello era un clone del famoso gioco da sala giochi Head on del 1979. Quello che invece andiamo a presentarvi in questo articolo, Coche Locos, e’ una variazione di quel gioco.

La dinamica e’ sempre quella, ma in questo caso sono state aggiunte delle varianti per rendere il gioco piu’ interessante. La pista e’ leggermente diversa e un paio di ”teletrasporti” sono stati aggiunti per rendere le traiettorie un po’ piu’ imprevedibili. C’e’ da dire che, in confronto alla versione Amstrad, il computer e’ meno aggressivo e lascia spazio al giocatore per completare il quadro.

Il listato e’ stato estratto dalla rivista spagnola MSX Magazine – Anno: 1985 – Numero 2, edizioni PUBLINFORMATICA. Link diretto alla rivista su archive.org:
https://archive.org/details/msxmagazine06_201412/msx_magazine-02/

Titolo: Coche locos
Piattaforma: MSX1
Linguaggio: Basic
Versione originale: 1985
Pubblicazione: MSX Magazine
Anno: 1985 – Giugno
Trascrizione: Francesco Fiorentini
Anno: 2026
Download: N/A
Note: N/A

Istruzioni
Utilizzate le frecce per spostarvi all’interno del campo di gioco.

Qui di seguito trovate il codice da copiare sul vostro MSX oppure su un emulatore, noi suggeriamo BlueMSX.

Vi suggeriamo di creare un dischetto con MSX Disk-Manager (http://www.lexlechz.at) e di copiare il listato all’interno di esso per poi caricare il file nell’emulatore. Se avete problemi, contattateci!

Attenzione – Ci siamo resi conto che nel listato i caratteri ‘>’ e ‘<‘ potrebbero venir sostituiti dai rispettivi encoding html ‘&gt’ e ‘&lt’. Nel caso, sostituite questi valori nel listato prima di copiarlo sull’emulatore.

Listato: Coches locos – MSX – Basic


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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
10 REM Coches Locos
20 REM Inicialización
30 SCREEN 2,2: COLOR 15,1,1
40 KEY OFF: WIDTH 30: CLS
50 CLEAR 400,&HDFFF
60 DIM C(23,22)
70 SC=0: HS=0: ST=0
80 ON SPRITE GOSUB 1180
90 GOSUB 1300
100 OPEN "grp:" AS #1
110 DRAW "bm60,60"
120 PRINT #1,"Un momento..."
130 CLOSE #1
140 GOSUB 1620
150 CA=3: FU=1000
160 IF SC>HS THEN HS=SC
170 SC=0
180 X=21: Y=11: F=3
190 TX=1: TY=1: TF=1
200 OPEN "grp:" AS #1
210 DRAW "bm198,25"
220 PRINT#1,"Coches"
230 DRAW "bm208,45"
240 PRINT #1,"Locos"
250 LINE (220,120)-(250,130),1,BF
260 DRAW "bm195,120"
270 PRINT #1,"coches";CA
280 DRAW "bm195,150"
290 PRINT #1,"Record"
300 DRAW "bm195,165"
310 PRINT #1,"  ";"HS"
320 CLOSE #1
330 PUT SPRITE 1,(236,89),4,3
340 PUT SPRITE 2,(13,9),7,1
350 K$=INKEY$:IF K$="" THEN 350
360 FOR J=228 TO 171 STEP -8
370 FOR I=1 TO 50:NEXT I
380 PUT SPRITE 1,(J,89),4,3
390 NEXT J
400 SPRITE ON
410 KK=STICK(ST)
420 IF C(X,Y)>0 THEN 470
430 C(X,Y)=1: SC=SC+10: FG=FG+1
440 SX=X*8+10: SY=Y*8+10
450 LINE(SX,SY)-(SX+2,SY+2),1,BF
460 IF FG=FX THEN 1060
470 IF KK=0 THEN 630
480 IF KK=3 THEN RX=X+1:RY=Y:RF=1
490 IF KK=5 THEN RY=Y+1:RX=X:RF=2
500 IF KK=7 THEN RX=X-1:RY=Y:RF=3
510 IF KK=1 THEN RY=Y-1:RX=X:RF=4
520 D=C(RX,RY)
530 RRF=RF+2:IF RRF>4 THEN RRF=RRF-4
540 IF F=RF OR F=RRF THEN 630
550 IF C(X,Y)<2 THEN 620
560 IF D=9 THEN 630
570 IF RF=1 THEN RX=X+2
580 IF RF=2 THEN RY=Y+2
590 IF RF=3 THEN RX=X-2
600 IF RF=4 THEN RY=Y-2
610 GOTO 730
620 IF D<9 THEN F=RF: GOTO 730
630 IF F=1 THEN RX=X+1:RY=Y
640 IF F=2 THEN RY=Y+1:RX=X
650 IF F=3 THEN RX=X-1:RY=Y
660 IF F=4 THEN RY=Y-1:RX=X
670 D=C(RX,RY)
680 IF D<9 THEN 730
690 FU=FU-10
700 F=F+1
710 IF F>4 THEN F=F-4
720 GOTO 810
730 IF D<4 OR D>6 THEN 790
740 ON D-3 GOTO 750,770,780
750 Y=13:IF RND(1)<.5 THEN Y=9
760 X=15:F=3:GOTO 800
770 Y=13:GOTO 760
780 Y=9:GOTO 760
790 X=RX:Y=RY
800 FU=FU-1
810 PUT SPRITE 1,(X*8+4,Y*8+1),4,F
820 IF C(TX,TY)<>3 THEN 860
830 TF=TF-1: IF RND(1)<.5 THEN TF=TF+2
840 IF TF<1 THEN TF=TF+4
850 IF TF>4 THEN TF=TF-4
860 IF TF=1 THEN XRX=TX+1:YRY=TY
870 IF TF=2 THEN YRY=TY+1:XRX=TX
880 IF TF=3 THEN XRX=TX-1:YRY=TY
890 IF TF=4 THEN YRY=TY-1:XRX=TX
900 D=C(XRX,YRY)
910 IF D<9 THEN 960
920 TF=TF-1: IF RND(1)<.5 THEN TF=TF+2
930 IF TF<1 THEN TF=TF+4
940 IF TF>4 THEN TF=TF-4
950 GOTO 1030
960 IF D<4 OR D>6 THEN 1020
970 ON D-3 GOTO 980,1000,1010
980 TY=13: IF RND(1)<.5 THEN TY=9
990 TX=15: TF=3: GOTO 1030
1000 TY=13: GOTO 990
1010 TY=9: GOTO 990
1020 TX=XRX: TY=YRY
1030 PUT SPRITE 2,(TX*8+4,TY*8+1),7,TF
1040 GOTO 410
1050 LINE(40,60)-(150,140),1,BF
1060 DRAW"EM40,70"
1070 OPEN"GRP:" AS #1
1080 PRINT #1," ENHORABUENA!!"
1090 SC=SC+FU
1100 DRAW"BM50,85"
1110 PRINT #1,"Puntos=";SC
1120 DRAW"BM35,120"
1130 PRINT #1," Otra partida?"
1140 CLOSE #1
1150 K$=INKEY$: IF K$="n" THEN END
1160 IF K$="s" THEN CLS:GOTO 100
1170 GOTO 1150
1180 SPRITE OFF
1190 FOR J=1 TO 10
1200 FOR I=1 TO 4
1210 PUT SPRITE 1,(X*8+4,Y*8+4),J+I,I
1220 FOR K=1 TO 10: NEXT K
1230 NEXT I
1240 NEXT J
1250 CA=CA-1: IF CA>-1 THEN 1290
1260 OPEN"GRP:" AS #1
1270 LINE (40,60)-(150,140),1,BF
1280 GOTO 1090
1290 RETURN 180
1300 REM Sprites
1310 RESTORE 1420
1320 FOR J=1 TO 4
1330 SP$=""
1340 FOR I=1 TO 32
1350 READ D$
1360 D$=CHR$(VAL("&H"+D$))
1370 SP$=SP$+D$
1380 NEXT I
1390 SPRITE$(J)=SP$
1400 NEXT J
1410 REM Derecha
1420 DATA 00,00,00,00,1f,1f,06,1f
1430 DATA 1f,1f,06,1f,1f,00,00,00
1440 DATA 00,00,00,00,00,38,10,fc
1450 DATA ec,fc,10,38,00,00,00,00
1460 REM Abajo
1470 DATA 00,00,00,1b,1b,1f,1b,1b
1480 DATA 03,03,0b,0e,0b,03,00,00
1490 DATA 00,00,00,b0,b0,f0,b0,b0
1500 DATA 80,80,a0,e0,a0,80,00,00
1510 REM Izquierda
1520 DATA 00,00,00,00,00,1c,08,3f
1530 DATA 37,3f,0b,1c,00,00,00,00
1540 DATA 00,00,00,00,f8,f8,20,f8
1550 DATA f8,f8,20,f8,f8,00,00,00
1560 REM Arriba
1570 DATA 00,00,03,0b,0e,0b,03,03
1580 DATA 1b,1b,1f,1b,1b,00,00,00
1590 DATA 00,00,80,a0,e0,80,80,b0
1600 DATA b0,b0,f0,b0,b0,00,00,00
1610 RETURN
1620 REM Lectura de Datos
1630 RESTORE 1720
1640 FOR J=0 TO 20
1650 READ D$
1660 FOR I=0 TO 22
1670 D=VAL(MID$(D$,I+1,1))
1680 C(I,J)=D
1690 NEXT I
1700 NEXT J
1710 REM  12345678901234567890123
1720 DATA 99999999999999999999999
1730 DATA 9         222         9
1740 DATA 9 9999999911199999999 9
1750 DATA 9 9       222       9 9
1760 DATA 9 9 999999111999999 9 9
1770 DATA 9 9 94    222     9 9 9
1780 DATA 9 9 9999991119999 9 9 9
1790 DATA 9 9       222     9 9 9
1800 DATA 9 999999991119999 9 9 9
1810 DATA 93        222  59 9 9 9
1820 DATA 9 999999991119999 9 9 9
1830 DATA 93    222 222    313139
1840 DATA 9 999911199999999 9 9 9
1850 DATA 9 9   222      69 9 9 9
1860 DATA 9 9 9911199999999 9 9 9
1870 DATA 9 9   222         9 9 9
1880 DATA 9 99991119999999999 9 9
1890 DATA 93    222           9 9
1900 DATA 9 9999111999999999999 9
1910 DATA 9     222             9
1920 DATA 99999999999999999999999
1930 RESTORE 2050:CLS
1940 READ D$
1950 IF D$="fin" THEN 2320
1960 IF D$<>"P"THEN 2000
1970 READ X1,Y1,C1,K1
1980 PAINT(X1,Y1),C1,K1
1990 GOTO 1940
2000 READ X1,Y1,X2,Y2,C
2010 IF D$="L" THEN LINE (X1,Y1)-(X2,Y2),C
2020 IF D$="B" THEN LINE (X1,Y1)-(X2,Y2),C,B
2030 IF D$="F" THEN LINE (X1,Y1)-(X2,Y2),C,BF
2040 GOTO 1940
2050 DATA B,8,7,190,174,3
2060 DATA B,11,10,187,171,3
2070 DATA P,11,8,3,2
2080 DATA B,187,88,254,108,3
2090 DATA B,191,91,251,105,3
2100 DATA P,200,89,3,2
2110 DATA F,186,92,250,104,1
2120 DATA L,26,26,172,26,2
2130 DATA L,172,26,172,156,2
2140 DATA L,172,156,26,156,2
2150 DATA L,26,26,26,74,2
2160 DATA L,26,74,138,74,2
2170 DATA L,138,74,138,90,2
2180 DATA L,138,90,26,90,2
2190 DATA L,138,58,42,58,2
2200 DATA L,42,58,42,42,3
2210 DATA L,42,42,155,42,2
2220 DATA L,155,42,155,138,2
2230 DATA L,155,138,26,138,2
2240 DATA L,42,122,138,122,2
2250 DATA L,138,122,138,106,2
2260 DATA L,138,106,26,106,2
2270 DATA L,26,106,26,138,2
2280 DATA F,42,42,45,58,9
2290 DATA F,135,106,138,122,10
2300 DATA F,135,74,138,90,10
2310 DATA fin
2320 FX=0
2330 FOR J=0 TO 20
2340 FOR I=0 TO 22
2350 XX=I*8+10:YY=J*8+10
2360 IF C(I,J)<>0 THEN 2400
2370 DRAW"BM=XX;,=YY;"
2380 FX=FX+1
2390 DRAW"C8R1"
2400 IF C(I,J)=0 OR C(I,J)>1 THEN 2430
2410 LINE(XX-5,YY)-(XX+6,YY+8),1,BF
2420 LINE(XX,YY-5)-(XX+6,YY+8),1,BF
2430 NEXT I
2440 NEXT J
2450 RETURN

Share

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

This site uses Akismet to reduce spam. Learn how your comment data is processed.