23 Javasript: Coda del serpente e morte del serpente.

 

 

1 - Lunghezza del serpente !!

Fin'ora il serpente era solo un rettangolino che si muoveva. D'ora in poi avrà una sua lunghezza. 

Aggiungi i seguenti comandi nella zona delle variabili:

xOld = []; // lista per memorizzare le posizioni x 

yOld = []; // lista per memorizzare le posizioni y

pos = 0; // posizione della lista in uso

maxPos = 100; // lunghezza del serpente

 

Aggiungi la seguente funzione tra le funzioni:

function aggiornaCoda() {

// cancella l'ultima posizione del serpente

grafica.clearRect(xOld[pos], yOld[pos], 10, 10);

// memorizza la nuova posizione del serpente

xOld[pos] = x;

yOld[pos] = y;

// vai avanti di un posto nella lista

pos = (pos+1) % maxPos;

}

Aggiungi la chiamata alla funzione aggiornaCoda() all'interno della funzione animazione subito dopo la chiamata a correggiXY().

Prova il programma, il serpente adesso dovrebbe avere la coda.

 

 

2 - Se batte con se stesso il serpente muore !!

Aggiungiamo adesso una funzione per controllare che il serpente non sbatta con se stesso. Se succede il gioco finisce.

 

Aggiungi la seguente funzione tra le funzioni. La funzione controlla che la posizione nuova del serpente non sia uguale a una delle posizioni vecchie memorizzate nella lista.

function controlloScontri() {

for(i=0; i<maxPos; i++) {

// se la posizione è uguale a una posizione vecchia

if( x==xOld[i] && y==yOld[i] ) {

// distruggi l'animaizione

animazione = 0;

// scrivi messaggio in rosso

grafica.strokeStyle = "red";

grafica.strokeText("FINE", x, y);

}

}

}

Aggiungi la chiamata alla funzione controlloScontri() all'interno della funzione animazione subito prima della chiamata a aggiornaCoda().

Prova il programma, il serpente adesso dovrebbe morire quando si scontra con se stesso.

 

Puoi aumentare la lunghezza del serpente ogni volta che mangia una mela aggiungendo il comando:     maxPos += 40;

all'interno della funzione aggiornaPunteggio.