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