Relazione sul programma ARKANOID
di Claudio Bazzan

Il programma si compone essenzialmente in due parti. Il codice
sorgente scritto in Pascal e compilabile con il TP6.0 (e
successivi) della Borland, e la parte grafica sviluppata con un
programma per disegnare di pubblico dominio.
Il sorgente Pascal e' suddiviso in 3 unit piu' il programma
principale di poche righe che ha il solo scopo di chiarmare le
procedure di piu' alto livello, vale a dire quelle che controllano
la schermata di presentazione e l'inizio della partita.
Le unit in questione sono la MOUSE.TPU, la SERVICE.TPU e la
SND.TPU. La prima di queste e' stata praticamente importata
dall'esterno e adattata alle necessita del gioco. Come dice il
nome stesso la unit si occupa della gestione del mouse, strumento
indispensabile per il corretto funzionamento del programma;
tuttavia MOUSE.TPU svolge anche altri compiti di non secondaria
importanza come lo spostamento veloce di blocchi di memoria da
un'array all'altro.
Sono state incluse in tale unit anche queste procedure in quanto
scritte in codice assembler e di provenienza esterna, il tutto a
favore di un miglioramento del programma in fase di esecuzione che
specie su processori inferiori all'80386 diventa indispensabile.
Cio' nonostante su processori piu' lenti possono verificarsi dei
disturbi, quali sfarfallamento dell'immagine o rallentamento degli
oggetti in movimento: cio' non e' imputabile al programma ma alla
velocita' con cui esso viene eseguito poiche' ci sono dei tempi
critici entro cui il processore deve terminare determinate
procedure. Il problema deriva infatti dal refresh video che sulla
scheda VGA (nella modalita' 320x200x256 col.) avviene ad una
frequenza di 70Hz; la CPU deve quindi terminare gli spostamenti
degli oggetti in 1/70 di secondo. Se cio' non avviene la scheda
aggiorna la pagina video prima che sia stata rielaborata la nuova
posizione dell'immagine e cio' ne provoca un leggero effetto di
sfarfallamento.
La unit SND.TPU e' invece responsabile della gestione del suono.
Si e' ritenuto opportuno separarla dal resto del programma in modo
da consentire facilmente eventuali modifiche e miglioramenti al
fine di supportare schede sonore professionali (quali ad esempio
la SOUNDBLASTER) e non il semplice cicalino del PC come fa ora.
Infine la unit SERVICE.TPU contiene il programma vero e proprio.
In tale unit e' contenuta la procedura LOADBTM, responsabile del
caricamento della grafica in memoria, anch'essa di provenienza
esterna: viene infatti fornita insieme allo stesso programma
utilizzato per creare i disegni in modo da poter manipolare
quest'ultimi con il Turbo Pascal.
Non mi dilungo oltre nello spiegare il funzionamento delle varie
procedure e unit in quanto lo stesso codice sorgente e' stato
abbondantemente commentato.


IMPORTANTE

Si e' ritenuto opportuno non inserire nel programma un help in
linea, e di rimandare per esso ad una breve documentazione scritta
(che segue) al fine di mantenere per quanto possibile la
verosimiglianza con lo stesso gioco da bar ARKANOID il quale per
ovvie ragioni non consente la consultazione di una pagina d'aiuto
che, fra parentesi, in casi come questi non e' indispensabile.
Vedere quindi quanto segue per avere informazioni sul gioco.




ARKANOID: istruzioni per l'uso.

Lo scopo del gioco e' molto semplice: si tratta di pilotare col
mouse una piccola piattaforma (il suo nome e' VAUS), e con essa
cercare di colpire la pallina al fine di spingerla contro i
mattoncini e abbatterli.
I mattoncini sono di vari colori, ad ogni colore e' associato un
determinato punteggio, quando un mattoncino viene abbattuto il
punteggio ad esso associato viene sommato a quello del giocatore.
I mattoncini di colore grigio necessitano di due colpi per essere
abbattuti mentre quelli di colore beige sono un bersaglio
indistruttibile e hanno il solo scopo di ostacolare i movimenti
della pallina. Ogni round di gioco (chiamato anche quadro o muro)
termina quando tutti i mattoncini (eccetto ovviamente quelli
indistruttibili) vengono abbattuti. Il gioco termina invece quando
si perdono tutte le vite a disposizione. All'inizio della partita
si hanno 5 vite a disposizione (indicate dal vaus in gioco piu' i
quattro di riserva in basso a sinistra). Ogni pallina persa
comporta la distruzione di un VAUS e quindi la perdita di una
vita.
Durante il gioco cadono casualmente verso il vaus delle capsule
con cui e' possibile guadagnare dei bonus che variano a seconda
della lettera contenuta. Per avere il bonus e' necessario
raccogliere con il vaus la capsula; attenzione pero' a non
lasciare cadere la pallina mentre si fa cio'.
Segue una tabella con la descrizione dei vari bonus.

Lettera    Bonus

  L        Permette si abbattere i mattoncini sparandoci contro.
           Usare il tasto sinistro del mouse per azionare i laser.

  E        Raddoppia le dimensioni del vaus.

  S        Diminuisce la velocita' con cui si muove la pallina.

  C        Abilita' l'effetto magnete che permette di trattenere
           per un certo periodo di tempo la pallina sul vaus.
           Per rilanciare la pallina usare il tasto sinistro del
           mouse.

  D        Fa schizzare nell'area di gioco altre due palline.

  B        Apre una device di teletrasporto che consente di
           accedere direttamente al round successivo. Portarsi
           col vaus all'estrema destra dell'area di gioco.

  P        Regala una vita extra che si somma a quelle
           disponibili.

Non e' possibile usufruire di piu' di un bonus alla volta. In
altre parole ogni capsula annulla l'effetto di quella presa in
precedenza.

A scopo dimostrativo, poiche' il fine di questo programma e'
didattico, si e' pensato di attivare alcune procedure che
consentono di far cadere a comando le capsule con i bonus, cosa
che nel gioco reale non accade. Quindi con le prime 7 lettere
dell'alfabeto (a,b,c,d,e,f,g), e' possibile chiamare una qualunque
delle 7 capsule.

L'opzione a due giocatori consente di giocare a turno una pallina
per uno. I punteggi e i progressi dei due giocatori sono comunque
tenuti divisi. Cambiano solo i turni di gioco (che vengono di
volta in volta segnalati).

All'inizio e' possibile scegliere tramite i tasti F1/F2 il livello
di gioco che determina l'accelerazione della pallina (che e'
sempre e comunque maggiore di zero). Il livello piu' facile e' il
livello 1, il piu' difficile e' il livello 5. Il gioco all'inizio
viene regolato per default al livello 3.

Sempre nella schermata principale e' possibile attivare e
disattivare il sonoro del gioco per mezzo della barra spaziatrice.

Infine una volta selezionata la partita ad un giocatore (tasto
sinistro del mouse) o a due giocatori (tasto destro), viene
chiesto di scegliere il muro dal quale vuole iniziare a giocare.
Il numero complessivo di muri e' 32, dopodiche' il gioco riparte
ciclicamente dal primo.





                                                  Claudio Bazzan
