Ciao a tutti!
Io ho questo pezzo di codice:
codice:
public void move(int iX, int iY) {
int[] newI = freeSpace(iX,iY);
int[][] oldField = field.clone();
if(newI != null){
field[newI[1]][newI[0]] = oldField[iY][iX];
field[iY][iX] = oldField[newI[1]][newI[0]];
}
}
come noterete, faccio una copia dell'array multidimensione filed in oldField, in modo da poter effettuare cambiamenti in field senza perdere informazioni sul suo stato precedente, che nel mio caso servirà a scambiare gli elementi di due celle della matrice.
(Se non tenessi una traccia dello stato precedente di field, una volta copiato un elemento nella sua nuova posizione, non saprei più cosa c'era prima in quel posto per poterlo spostare a sua volta).
Ebbene... nonostante questo mio accorgimento... non va.
Eseguendo il debug con eclipse noto che arrivato alla riga
codice:
field[iY][iX] = oldField[newI[1]][newI[0]];
oldField è cambiato anch'esso (ed è precisamente uguale a field dopo la modifica) °___°
Questo mi fa pensare: clone() mantiene un oggetto uguale all'altro durante tutta l'esecuzione del programma, modificando l'oggetto destinazione per farlo essere SEMPRE uguale a quello sorgente????? °_°
Spero qualcuno mi delucidi su questa situazione perché bloccato a questo punto non posso andare avanti col mio programma ^^;;
Grazie in anticipo!