Alessandro Tanasi - [email protected]@tanasi.it 1 Snake Alessandro Tanasi...

15
Alessandro Tanasi - [email protected] 1 Snake Alessandro Tanasi [email protected] t http://www.tanasi.i t Gioco dello Snake Gioco dello Snake

Transcript of Alessandro Tanasi - [email protected]@tanasi.it 1 Snake Alessandro Tanasi...

Page 1: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 1Snake

Alessandro Tanasi

[email protected]

http://www.tanasi.it

Gioco dello SnakeGioco dello Snake

Page 2: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 2Snake

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.

Page 3: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 3Snake

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

Page 4: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 4Snake

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)

Page 5: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 5Snake

Loop del gioco

Alla partenza del gioco

avviene un'inizializzazione del

gioco

Il gioco vive all'interno di un

loop “infinito”

viene disegnato lo snake e il

cibo

viene mosso lo snake

vengono applicate le regole

di gioco

La pressione del tasto ESC o

la perdita della partita fa uscire

dal gioco

Disegna snake

Pulisci schermo

Muovi lo snake

Regole

Inizializzazione

Disegna cibo

Page 6: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 6Snake

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

Page 7: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 7Snake

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

Page 8: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 8Snake

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'ultimaNuova coordinata

Gettata via

Page 9: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 9Snake

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

Dopo mangiato

Nuova coordinata

Page 10: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 10Snake

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 vintaControllo sull'uscita dallo

schermo e se si mangia

la coda

Controllo se le gemme

sono

finite

Partita

persa

Partita

vinta

Page 11: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 11Snake

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)

Page 12: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 12Snake

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

Page 13: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 13Snake

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

asciiControlla se viene premuto

un tasto

se

Preleva il codice ascii

si

no

; controlla se e' stato premuto un tastomov ah, 01hint 16hjz no_tasto; se e' stato premuto quindi acquisiscimov ah, 00hint 16h

Page 14: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 14Snake

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

Page 15: Alessandro Tanasi - alessandro@tanasi.italessandro@tanasi.it 1 Snake Alessandro Tanasi alessandro@tanasi.it  Gioco dello Snake.

Alessandro Tanasi - [email protected] 15Snake

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

comunicarmelo in modo che possa spedirvi le

nuove versioni.

[1] http://creativecommons.org/licenses/by-nc-sa/2.0/