Bustout – Amstrad CPC – Locomotive Basic

Publisher: Amstrad Computer User – Numero: 01 – Agosto/Settembre 1984 – Recupero codice: Francesco Fiorentini

In questi giorni ho avuto un po’ di tempo a disposizione ed ho deciso di impiegarlo a digitare alcuni listati per un computer che occupa un posto particolare nel mio cuore, parlo dell’Amstrad CPC. Come ben sapete questo computer é equipaggiato con un Basic molto versatile e veloce, il Locomotive Basic, che lo rende particolarmente adatto a creare con poche righe di codice programmi piuttosto interessanti.

E’ il caso del gioco che vi presento in questa scheda. Bustout, di Alexander Martin, é un semplice clone di Breakout che in poche righe di codice Basic dimostra tutta la potenza e la velocitá del Locomotive Basic.

Questa che vi propongo é la versione originale del gioco, digitata esattamente (a parte una modifica estetica nell’ultima riga del codice) come appare nella rivista Amstrad Computer User Numero 01 di Agosto/Settembre 1984, ma vi anticipo che ho giá in mente alcune modifiche da apportare al codice per migliorarlo e renderlo un po’ piú interessante.

Nello stesso numero é inoltre presente un altro listato molto interessante, parlo di CAD for beginners alle pagine 26, 27 e 28. Ho giá pronto anche questo listato e lo condivideró con voi nelle prossime ore/giorni. Come per Bustout, anche in questo caso, non mi sono limitato alla sola digitazione del listato, ma ho anche aggiunto alcune funzionalitá interessanti.
Restate sintonizzati su questi canali!

Titolo: Bustout
Piattaforma: Amstrad CPC
Linguaggio: Locomotive Basic
Versione originale: Alexander Martin
Pubblicazione: Amstrad Computer User – 01 Agosto/Settembre 1984
Recupero codiceFrancesco Fiorentini
Anno: 2023
Download: Bustout.dsk
Note: Emulatore suggerito, WinAPE.

Scopo del gioco

Lo scopo del gioco é abbastanza intuibile. Come in ogni clone di Breakout che si rispetti dobbiamo distruggere tutti i mattoni che compongono il muro soprastante con la pallina. Ovviamente facendo attenzione che questa non precipiti oltre il bordo inferiore dello schermo, pena la perdita di una vita.

Tasti:
Barra spazio per avviare il gioco.
Freccia destra e sinistra per muovere la barra.

Qui di seguito trovate il codice da copiare sul vostro Amstrad CPC.
Potete copiare il listato ed incollarlo su un emulatore come WinAPE.

Se volete giocare subito a Bustout scaricate il file Bustout.dsk dal nostro sito che puó essere aperto con WinAPE. Dentro al file Bustout.dsk é presente il programma Bustout.bas.

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:  Bustout – Amstrad CPC – Locomotive 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
10 BORDER 1:INK 0,1:INK 1,26:INK 2,24:INK 3,6
20 SPEED KEY 15,2
30 ENV 1,1,18,0,11,0,10:ENT 1,10,2,2
40 ENV 3,1,0,16,5,-3,2
50 ENV 2,5,3,3,1,-21,22,9,-3,2:ENT -2,10,2,2,5,-7,1,2,11,3,2 ,-4,8
60 MODE 1
70 MOVE 30,16:DRAWR 0,400,1:MOVE 610,16:DRAWR 0,400,1
80 PEN 3:LOCATE 3,1:PRINT STRING$(36,143):PEN 2:LOCATE 3,2:PRINT STRING$(36,143):PEN 1:FOR r=5 TO 6:LOCATE 3,r:PRINT STRING$(36,143):NEXT r
90 bx=9
100 lives=5:score=0
110 PEN 1:GOSUB 420
120 IF INKEY$<>" " THEN 120
130 GOTO 160:REM start the game
140 LOCATE bx,24:PRINT"  ";STRING$(4,131);"  "
150 RETURN
160 xa=1:ya=1:IF INT(RND*2)=1 THEN xa=-xa:REM for each life start here
170 PEN 1:GOSUB 140
180 ORIGIN 0,400
190 x=bx+4:y=11:x1=x:y1=y
200 x1=x+xa:y1=y+ya:REM start of main loop
210 IF x1=3 OR x1=38 THEN xa=-xa
220 GOSUB 360
230 IF y1=24 AND x1>bx+1 AND x1<bx+6 THEN ya=-ya:y1=y1-2:SOUND 130,44,8,7,1,1:a=((x>bx+5)OR(x<bx+2)):IF a=-1 THEN xa=xa*a:x1=x1+xa:y1=y1+1
240 IF y1=25 THEN LOCATE x,y:PRINT " ":GOTO 330
250 GOSUB 140
260 t=TEST((16*x1)-1,-(16*y1)-1):IF t<>0 THEN ya=-ya:xz=x1:yz=y1:y1=y1+ya:GOSUB 390:IF t=2 THEN score=score+10:GOSUB 420
270 IF t=3 THEN score=score+20:GOSUB 420
280 If t=1 THEN score=score+5:GOSUB 420
290 IF y1=1 THEN ya=1
300 LOCATE x,y:PRINT " ":LOCATE x1,y1:PRINT CHR$(233):x=x1:y=y1
310 IF y=1 OR x=3 OR x=38 THEN SOUND 129,78,8,7,1,1
320 GOTO 200:REM finish of main loop
330 lives=lives-1:SOUND 132,19,46,12,2,2:IF lives=0 THEN GOTO 400
340 GOSUB 420
350 GOTO 160
360 IF (INKEY(8)=0 OR INKEY(74)=0)AND bx>2 THEN bx=bx-2:RETURN
370 IF(INKEY(1)=0 OR INKEY(75)=0)AND bx<32 THEN bx=bx+2:RETURN
380 RETURN
390 LOCATE xz,yz:PRINT " ":RETURN
400 IF score>=hiscore THEN hiscore=score
410 score=0:lives=5:GOSUB 420:GOTO 60
420 SOUND 130,0,20,13,3,0,31:LOCATE 3,25:PRINT"HISCORE";hiscore;:LOCATE 18,25:PRINT"SCORE";score:LOCATE 32,25:PRINT"LIVES";lives:RETURN

Share

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.