Alessandro Tanasi - 1 Snake Alessandro Tanasi Gioco dello Snake
Alessandro Tanasi - 2 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 - 3 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 - 4 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 - 5 Snake 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
Alessandro Tanasi - 6 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 - 7 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 - 8 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 - 9 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 Dopo mangiato Nuova coordinata
Alessandro Tanasi - 10 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 Partita persa Partita vinta
Alessandro Tanasi - 11 Snake 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 - 12 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 - 13 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 viene premuto un tasto se Preleva il codice ascii si no ; 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
Alessandro Tanasi - 14 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 - 15 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 comunicarmelo in modo che possa spedirvi le nuove versioni. [1]