Buongiorno a tutti,
chiedo il vostro gentile aiuto per una spiegazione su un metodo java di un "gioco" che è il seguente:
Ho un un millepiedi rappresentato come Coda in java, in cui ogni sezione è un oggetto di tipo NodoCoda formato da una coppia(x,y) che rappresentano le coordinate dell'oggetto NodoCoda all'interno del campo da gioco.
Si può pensare il campo da gioco come un array bidimensionale.
Io devo realizzare il metodo
codice:
public boolean spostaSu(boolean accoda)
il quale se possibile fa avanzare il millepiedi di un quadrante verso l'alto e restituisce true; se invece dopo lo stesso avanzamento avvenisse una collisione sul bordo del campo o su se stesso allora restituisce false. Se il parametro passato come argomento è true allora il millepiedi si allunga di una sezione durante lo stesso spostamento, altrimenti mantiene invariata la lunghezza.
La soluzione che mi viene proposta è la seguente, purtroppo a me poco chiara:
codice:
public boolean spostaSu(boolean accoda){
NodoCoda temp;
NodoCoda nuovo = new NodoCoda();
nuovo.x = primo.x;
nuovo.y = primo.y-1;
nuovo.prox = primo;
primo = nuovo;
temp = primo;
while(temp.prox.prox!=null)
temp= temp.prox;
if(!accoda)
temp.prox = null;
temp= primo.prox;
while(temp!=null){
if(primo.prox==temp.x && primo.y==temp.y)
return false
temp = temp.prox;
}
if(primo.y<0)
return false;
else
return true;
}
Ringrazio chiunque mi aiuti a chiarirmi la nebbia che ho in testa in merito a questo esercizio.
Grazie