Realizziamo il mitico Snake in C++ – Parte 1
Introduzione
Snake è un famoso giochino che ha come protagonista un serpente . Quando il serpente mangia, il suo corpo si allunga rendendo il gioco sempre piu’ complicato.
In questa prima parte spiegherò la pseudocodifica del codice che andreamo a relizzare dal prossimo articolo.
Le liste
Il corpo del serpente possiamo tradurlo in linguaggio informatico come una lista . La lista per chi non la conoscesse è una struttura dati dinamica o meglio una serie di elementi dove ogni elemento è legato a quello successivo . Per un approfondimento vi rimando a wikipedia .
Ecco come si presenta graficamente una lista :

Pensiamo il nodo come la parte che costituisce il corpo del serpente . Ogni nodo deve avere una caratteristica : la posizione occupata nello schermo.
Rifacciamo il disegno della lista seguendo la logica descritta sopra:

La lista disegnata rappresenta un serpente che inizia nella cella X:5 Y:2 e finisce in X:7 Y:2 .

Per comodita è consigliabile usare una lista concatenata : una particolare lista dove ogni elemento non solo è collegato all’elemento successivo ma anche a quello precendente .
Trasformiamo per l’ultima volta la nostra bozza :
Movimento del serpente
Supponiamo di avere questo serpente :
Tradotto in una lista sarebbe:

Il serpente deve potersi muovere nelle quattro direzioni : a sinistra , in alto , a destra e in basso.
Supponiamo di volerlo muovere a destra

Bisogna trovare un algortimo , una sequenza di istruzioni , per generare la seguente lista

Se sovrapponessimo le due liste noteremmo che nella lista generata ( quella dopo il movimento ) c’è un nuovo nodo che rappresenta l’ head e che l’ultimo nodo viene cancellato.
Il procedimento è identico per tutte le 4 le direzioni: eliminare l’ultimo nodo e inserire una nuova testa (head) con le nuove cordinate dove inizia il serpente.
Come avete visto il ragionamento logico che sta dietro all’algoritmo è molto semplice . Nella prossima lezione concluderemo questo appuntamento scrivendo il codice



20:59 on maggio 7th, 2011
ciao, a quando la seconda parte?
10:51 on agosto 23rd, 2011
Davvero ottimo! complimenti!