Gioco dello Snake
Alessandro Tanasi
[email protected]
http://www.tanasi.it
Alessandro Tanasi - [email protected]
Snake
Lo Snake
Lo snake e' un video gioco della fine anni '70 che imita il
movimento di un serpente su un piano.
Il giocatore controlla la direzione del movimento del serpente
facendo in modo che questo possa cibarsi delle prelibatezze
disposte sul piano di gioco.
Ogni volta che il serpente mangia ingrassa e quindi si
allunga.
Lo scopo del gioco e' riuscire a mangiare tutto il cibo senza
uccidere il serpente.
Alessandro Tanasi - [email protected]
Snake
Requisiti
Simulazione del gioco dello snake
Movimento nelle quattro direzioni dello snake (destra,
sinistra, giu', su)
Le gemme vengono disposte sul campo di battaglia
Lo snake si allunga quando mangia una gemma
Il gioco finisce se:
Lo snake esce dal campo di battaglia
Lo snake si mangia la coda
Alessandro Tanasi - [email protected]
Snake
Implementazione
Mia personale interpretazione dello snake:
lo snake puo' muoversi in 4 direzioni (destra, sinistra, su,
giu)
muore se urta le pareti del campo
il serpente e' velenoso quindi muore se si mangia la
coda
non puo' tornare sui propri passi, i serpenti camminano solo
avanti o di lato
ogni gemma che mangia lo ingrassa (si allunga)
Alessandro Tanasi - [email protected]
Snake
Loop del gioco
Alla partenza del gioco
avviene un'inizializzazione del
gioco
Inizializzazione
Pulisci schermo
Il gioco vive all'interno di un
loop “infinito”
viene disegnato lo snake e il
cibo
Disegna cibo
Disegna snake
Muovi lo snake
viene mosso lo snake
Regole
vengono applicate le regole
di gioco
La pressione del tasto ESC o
Alessandro Tanasi - [email protected]
Snake
Disegno del cibo
In un array sono contenute le coordinate delle gemme di
cibo
Le gemme vengono disegnate sullo schermo
Se una gemma viene mangiata viene tolta la
coordinata dall'array e quindi questa non viene piu'
disegnata
Quando l'array e' vuoto la partita e' vinta
Alessandro Tanasi - [email protected]
Snake
Disegno dello snake
Le coordinate di ogni singolo elemento dello snake sono
memorizzate in un array
Periodicamente una procedura disegna ogni singolo
elemento sullo schermo prendendo le coordinate dall'array
Alessandro Tanasi - [email protected]
Snake
Movimento snake
Lo snake deve scorrere
Ci sono quattro routine di movimento, una per direzione
Una routine di movimento generica in base ai tasti premuti
dall'utente chiama la procedura di movimento corretta
Ogni volta che lo snake si muove in cima all'array viene
inserita la nuova coordinata e le altre vengono scalate
buttando via l'ultima
Nuova coordinata
Gettata via
Alessandro Tanasi - [email protected]
Snake
Mangia gemma
Ogni volta che lo snake mangia una gemma in cima
all'array viene messa la nuova coordinata e le altre vengono
scalate (si allunga quindi l'array di un elemento)
Prima di mangiare
Nuova coordinata
Dopo mangiato
Alessandro Tanasi - [email protected]
Snake
Regole
Ad ogni movimento dello snake vengono applicate le regole
Viene verificato se e' in posizione errata, e quindi se la
partita e' da ritenere persa
Viene verificato il numero di gemme rimanenti, e quindi
se la partita puo' essere ritenuta vinta
Controllo sull'uscita dallo
schermo e se si mangia
la coda
Controllo se le gemme
sono
finite
Alessandro Tanasi - [email protected]
Snake
Partita
persa
Partita
vinta
Regole
Implementazione delle regole:
controllo costante tra la posizione dello snake e i bordi dello
schermo in base alle coordinate della testa dello snake
controllo costante se lo snake si mangia la coda (la
coordinata della testa dello snake coincide con quelle di una
parte di corpo)
controllo su quante gemme rimangono da mangiare, se non
ne rimangono la partita e' vinta (contatore di gemme
rimanenti)
Alessandro Tanasi - [email protected]
Snake
Modo testo
Il gioco utilizza la modalita' testo per simulare gli oggetti
grafici.
La modalita' viene chiamata attraverso la int 10h, con il
modo grafico 3 che pevede una risoluzione di 25 righe per 80
colonne.
Per disegnare un singolo carattere prima viene posizionato
il cursore nella posizione voluta poi viene disegnato il
carattere
Alessandro Tanasi - [email protected]
Snake
Gestione tastiera
La tastiera viene gestita usando l' int 16h
Viene periodicamente verificato se e' stato premuto un tasto e
nel caso di una pressione viene prelevato il relativo codice
ascii
; controlla se e' stato premuto un tasto
mov ah, 01h
int 16h
jz
no_tasto
; se e' stato premuto quindi acquisisci
mov ah, 00h
int 16h
Controlla se viene premuto
un tasto
no
se
si
Preleva il codice ascii
Alessandro Tanasi - [email protected]
Snake
Conclusioni
Implementazione non completa di un videogioco (mancano
livelli ecc.)
Si potrebbero introdurre migliorie per farlo sembrare un
gioco reale (punteggi, classifiche, ecc..)
Il codice non e' scritto per essere prestazionale ma per
essere leggibile e facilmente comprensibile
Alessandro Tanasi - [email protected]
Snake
Licenza
Questo documento viene rilasciato sotto
licenza Alcoolware, la quale non è altro che
una normale licenza Creative Commons
Attribute-NonCommercial-ShareALike [1]
ma con l'aggiunta che se mi incontrate
dobbiamo andare a bere qualcosa.
In sintesi è liberamente distribuibile per usi
non commerciali, copiabile e modificabile
purchè citiate l'autore e la fonte.
Se volete distribuire questo documento sul
vostro sito siete pregati per favore di
[1] comunicarmelo
http://creativecommons.org/licenses/by-nc-sa/2.0/
in modo che possa spedirvi le
Alessandro Tanasi - [email protected]
Snake
Scarica

Lo Snake