Bomber – BBC Micro – Basic

Rivista: Acorn User – Numero: 4 – Anno: 1982 – Trascrizione: Francesco Fiorentini

Esordio del BBC Micro nella rubrica RetroLiPS. E decisamente un esordio in pompa magna…

Quello che andiamo a presentarvi é un’altro bel listato estratto dalla rivista inglese Acorn User, numero 4 di Novembre 1982, che sono sicuro apprezzerete per la semplicita’ del gameplay.

L’obiettivo del gioco e’ decisamente semplice, siete a bordo di un aereo e dovete, con le vostre bombe, distruggere l’obiettivo giallo che verra’ di volta in volta piazzato in un punto casuale della mappa.
Premete BARRA SPAZIO per lanciare la bomba al momento opportuno.
Alla fine delle 10 possibilita’, la vostra mira verra’ valutata in base al numero di obiettivio distrutti.

Buon divertimento!

Titolo: Bomber
Piattaforma: BBC Micro
Linguaggio: Basic
Versione originale: J.TELFORD
Pubblicazione: Acorn User – numero 4
Anno: 1982 – Novembre
Trascrizione: Francesco Fiorentini
Anno: 2026
Download: N/A

Come sempre, qui di seguito trovate il codice ottimizzato per essere copiato direttamente sul vostro BBC Micro oppure su un emulatore. Il nostro consiglio é quello di utilizzare BeebEm.

Una volta avviato BeebEm non dovrete far altro che copiare il listato sottostante ed incollarlo sull’emulatore tramite: Edit -> Paste. Dopodiché digitate RUN ed il gioco é fatto!

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: Bomber – BBC Micro – 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
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
100 REM BOMBER
110 REM J.TELFORD
120 REM SIMPLE DEMO OF
130 REM MOVING GRAPHICS
140 REM IN A GAME FORMAT.
150 :
160 REM MAIN GAME
170 :
180 ON ERROR GOTO360
190 PROC_TITLE
200 PROC_INITIALISE
210 REPEAT
220 H=0
230 REM** START GAME**
240 MODE5
250 FOR Plane = 1 TO NF
260 PROC_Setupflight
270 PROC_Drawland
280 PROC_Flight_Info
290 PROC_Early_Warning
300 PROC_Move_Plane
310 NEXT Plane
320 MODE7
330 PROC_RESULTS
340 PROC_AGAIN
350 UNTIL N%
360 MODE7:PRINT"Bye":END
370 :
380 :
390 :
400 DEFPROC_DROP
410 :
420 REM BOMB FALLS FROM PLANE
430 REM TO GROUND.
440 :
450 FORBD=3TO24
460 PRINTTAB(PP+1,BD);B$
470 :
480 REM WITH SOUND
490 :
500 PROC_WHISTLE
510 :
520 REMEMBER TO ERA$E IMAGES OF BOMB
530 :
540 PRINTTAB(PP+1,BD);" "
550 NEXT
560 :
570 REM SET UP EXPLOSION COLOUR
580 REM FLA$HING RED/CYAN
590 :
600 VDU19,1,9;0;:COLOUR1
610 :
620 REM AND PRINT EXPLOSION
630 :
640 PRINTTAB(PP,25);EX$
650 :
660 REM SET NORMAL COLOUR
670 REM BEFORE I FORGET
680 :
690 COLOUR3
700 :
710 REM CHECK FOR A YELLOW TARGET  
720 REM IF IT HA$ A DIFFERENT COLOUR  
730 REM THEN TARGET IS HIT.  
740 :  
750 IFPOINT(LONGIT,UPIT)<3 THEN PROC_WIN ELSE SOUND &10,1,107,30  
760 :  
770 REM ONLY I BOMB PER FLIGHT  
780 :  
790 BOMB=0  
800 ENDPROC
810 DEFPROC_WHISTLE  
820 SOUND&0011,(-3+(BD/2*-1)),150-BD,1  
830 SOUND&0012,(-3+(BD/2*-1)),150-BD,1  
840 ENDPROC
850 DEFPROC_INITIALISE
860 :  
870 REM SET FA$T FLA$HING RATES  
880 :  
890 *FX10,2
900 *FX9,2
910 :  
920 REM SET COLOURS UP
930 :  
940 VDU19,0,7;0;
950 VDU19,1,9;0;
960 VDU19,2,2;0;
970 VDU19,3,7;0;
980 VDU19,128,4;0;
990 :  
1000 REM SET EXPLOSION ENVELOPE  
1010 :  
1020 ENVELOPE1,1,0,0,0,0,0,0,5,126,0,-5,40,126
1030 COLOUR128
1040 :  
1050 REM SET 10 FLIGHTS  
1060 :  
1070 NF=10  
1080 :  
1090 REM DEFINE GRAPHICS FOR THE  
1100 REM 4 MAIN PROGRAM SHAPES.  
1110 :  
1120 PROC_PLANE  
1130 PROC_BOMB  
1140 PROC_LANDSCAPE  
1150 PROC_EXPLOSION  
1160 ENDPROC
1170 :  
1180 DEFPROC_PLANE  
1190 :  
1200 REM DEFINE SINGLE CHR GAPHICS  
1210 REM TO MAKE UP PLANE  
1220 :  
1230 VDU23,224,192,224,240,248,255,129,255,255  
1240 VDU23,225,0,0,0,0,255,240,255,255  
1250 VDU23,226,0,0,24,60,255,3,255,255  
1260 VDU23,227,0,0,0,0,192,240,240,192  
1270 :  
1280 REM PUT TOGETHER INTO A$  
1290 :  
1300 A$=" "+CHR$(224)+CHR$(225)  
1310 A$=A$+CHR$(226)+CHR$(227)  
1320 ENDPROC
1330 :
1340 DEFPROC_BOMB
1350 :
1360 REM DEFINE BOMB SHAPE
1370 :
1380 VDU23,228,65,42,28,8,28,62,28,8
1390 :
1400 REM PUT INTO B$ FOR EASY USE
1410 :
1420 B$=CHR$(228)
1430 ENDPROC
1440 :
1450 DEFPROC_LANDSCAPE
1460 :
1470 REM DEFINE SINGLE CHR GRAPHICS
1480 REM TO MAKE UP LANDSCAPE
1490 :
1500 VDU23,229,0,0,0,0,255,255,255,255
1510 VDU23,230,0,0,0,0,0,0,0,0
1520 VDU23,231,255,255,255,255,255,255,255,255
1530 VDU23,232,8,28,42,8,28,42,8,8
1540 VDU23,233,192,192,192,192,255,255,255,255
1550 VDU23,233,192,192,192,192,255,255,255,255
1560 VDU23,234,7,7,7,7,255,255,255,255
1570 :
1580 REM MAKE THEM AVAILABLE IN AN
1590 REM ARRAY CALLED LS$( )
1600 :
1610 DIMLS$(6):FORX=1TO6:LS$(X)=CHR$(228+X):NEXT
1620 ENDPROC
1630 :
1640 DEFPROC_EXPLOSION
1650 :
1660 REM DEFINE SINGLE CHR GRAPHICS
1670 REM TO MAKE UP EXPLOSION
1680 :
1690 VDU23,235,255,255,255,0,0,0,0,0
1700 VDU23,236,4,2,41,24,70,49,12,255
1710 VDU23,237,28,28,28,62,62,190,127,255
1720 VDU23,239,28,28,28,28,28,28,28,28
1730 VDU23,240,28,127,127,255,255,127,62,28
1740 VDU23,241,28,126,255,255,255,255,126,60
1750 VDU23,242,28,254,254,255,255,254,62,28
1760 VDU23,238,16,32,74,140,48,198,24,255
1770 :
1780 REM PUT SINGLE CHR GRAPHICS
1790 REM TOGETHER TO FORM EXPLOSION
1800 :
1810 EX$=CHR$(236)+CHR$(237)+CHR$(238)
1820 EX$=EX$+CHR$(11)+CHR$(8)+CHR$(8)
1830 EX$=EX$+CHR$(239)+CHR$(11)+CHR$(8)
1840 EX$=EX$+CHR$(239)+CHR$(11)+CHR$(8)
1850 EX$=EX$+CHR$(239)+CHR$(11)+CHR$(8)
1860 EX$=EX$+CHR$(8)+CHR$(240)
1870 EX$=EX$+CHR$(241)+CHR$(242)
1880 ENDPROC
1890 DEFPROC_TITLE
1900 :
1910 REM YELLOW, DOUBLE HEIGHT  
1920 :  
1930 CLS  
1940 PRINT TAB(14,10);CHR$141;CHR$131;"Bomber"  
1950 PRINT TAB(14,11);CHR$141;CHR$131;"Bomber"  
1960 PROC_SPACE  
1970 ENDPROC
1980 DEFPROC_Setupflight
1990 BOMB=-1:REM THERE IS A BOMB  
2000 :  
2010 REM BLUE SKY  
2020 :  
2030 VDU19,128,4;0;
2040 COLOUR128:CLS
2050 :  
2060 REM LAND WILL BE GREEN  
2070 :  
2080 VDU19,2,2;0;
2090 COLOUR2
2100 ENDPROC
2110 DEFPROC_Drawland
2120 :  
2130 REM RANDOM SHAPES IN GREEN  
2140 REM DRAWN ACROSS SCREEN  
2150 :  
2160 FORX=0TO19  
2170 PRINTTAB(X,25);LS$(RND(6))
2180 PRINTTAB(X,26);CHR$(235)
2190 NEXT  
2200 :  
2210 REM RANDOM POS. FOR TARGET  
2220 :  
2230 PT=RND(14)  
2240 :  
2250 REM TARGET IS YELLOW  
2260 :  
2270 VDU19,3,3;0;:COLOUR3
2280 :  
2290 REM PRINT TARGET  
2300 :  
2310 PRINTTAB(PT+3,25);CHR$(231)
2320 :  
2330 REM FIND POS. OF TARGET  
2340 REM IN GRAPHICS NUMBERS  
2350 :  
2360 LONGIT=1280/20*(PT+3)+32  
2370 UPIT=1024/32*(32-25)-16  
2380 ENDPROC
2390 :  
2400 DEFPROC_Flight_Info
2410 PRINTTAB(1,28);"FLIGHT NO: ";Plane
2420 PRINTTAB(1,30);"HITS:      ";H
2430 ENDPROC
2440 :
2450 DEFPROC_Early_Warning
2460 FORWT=1 TO 1000:NEXT  
2470 VDU7:REM READY TO FLY  
2480 FORWT=1 TO 2000:NEXT  
2490 ENDPROC
2500 :  
2510 DEFPROC_Move_Plane
2520 :  
2530 REM PLANE IS YELLOW  
2540 :
2550 COLOUR3
2560 :
2570 REM ANTICIPATION NOT ALLOWED
2580 :
2590 *FX15,0
2600 :
2610 REM MOVE PLANE POSITION (PP)
2620 REM ACROSS SCREEN
2630 :
2640 FORPP=1TO15
2650 PRINTTAB(PP,2);A$
2660 :
2670 REM GET A KEY
2680 :
2690 BD$=INKEY$(0)
2700 :
2710 REM TEST FOR DROP BOMB COMMAND
2720 REM AND FOR A BOMB TO DROP
2730 :
2740 IFBD$=" " AND BOMB THEN PROC_DROP:GOTO2800
2750 :
2760 REM IF NOT DROPPED WAIT THEN
2770 REM CONTINUE.
2780 :
2790 FOR WT=1TO100:NEXT
2800 NEXT
2810 :
2820 REM BLANK LAST PLANE IMAGE
2830 :
2840 PRINTTAB(PP,2);"    "
2850 :
2860 REM RELAX AT END OF A FLIGHT
2870 :
2880 FOR WT = 1 TO 2000:NEXT
2890 ENDPROC
2900 DEFPROC_SPACE
2910 PRINTTAB(3,24);"Press the SPACE BAR to continue";:*FX15,0
2920 REPEAT UNTIL GET$=" "
2930 ENDPROC
2940 :
2950 DEFPROC_RESULTS
2960 CLS
2970 PRINT''''"You had ";H;" hits,";
2980 PRINT'" from ";NF;" flights."
2990 IF H=NF THEN PRINT'" Excellent work"
3000 IF H=NF-1 OR H=NF-2 THEN PRINT'" Very Good Work"
3010 IF H=NF-3 OR H=NF-4 THEN PRINT'" Good work"
3020 IF H=NF-5 OR H=NF-6 THEN PRINT'" Average!!!"
3030 IF H=NF-7 OR H=NF-8 THEN PRINT'" You need practice"
3040 IF H=NF-9 OR H=NF-10 THEN PRINT'" Poor...give up!"
3050 PROC_SPACE
3060 ENDPROC
3070 :
3080 DEFPROC_AGAIN
3090 CLS
3100 PRINT''''"Do you want another go?"
3110 PRINT'"Type Y or N"
3120 PRINT'"then press RETURN. > ";
3130 *FX15,0
3140 a$=GET$
3150 :
3160 REM SET UP ONLY FOR Y/N
3170 :
3180 N%=1
3190 IF a$="Y" OR a$="y" THEN N%=0
3200 IF a$="N" OR a$="n" THEN N%=-1
3210 IF N%=1 THEN3140
3220 PRINTa$;
3230 :
3240 REM WAIT FOR RETURN
3250 :
3260 a$=GET$:IFa$<>CHR$(13)THEN3260
3270 :
3280 REM N% SET TO 0 FOR Y
3290 REM OR -1 FOR N
3300 :
3310 ENDPROC
3320 :
3330 DEFPROC_WIN
3340 :
3350 REM GENERATE WIN SOUND
3360 :
3370 SOUND&0010,1,100,30
3380 :
3390 REM INCREMENT NO OF HITS
3400 :
3410 H=H+1
3420 :
3430 REM IMMEDIATE SCORE UPDATE
3440 :
3450 PROC_Flight_Info
3460 ENDPROC

Share

Lascia un commento

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

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.