Buonasera a tutti! Spero di non annoiarvi con questi "giochetti", ma ho un problema e ci sto sbattendo la testa parecchio
Mi sto cimentando nel realizzare il gioco della vita in java. Premetto che ho già effettuato una ricerca sul forum a riguardo ma ho trovato altri linguaggi di programmazione e non il mio problema. Ho realizzato una classe che manipola un'array di 1(cella piena) e 0(cella vuota) e che sia in grado di calcolare la "prossima generazione" ovvero la prossima configurazione della griglia. In seguito ho realizzato una classe a parte contenente il metodo main. Tutto compila come deve, ma al momento dell'avvio si presenta "ArrayIndexOutOfBoundsException" --> gli indici dell'array non corrispondono x come devono essere!
Ho provato in tutti i modi, ma ovviamente non il modo corretto
ed è per questo che chiedo a voi se gentilmente potreste darmi una mano!
Secondo me l'errore dovrebbe essere nel metodo "conteggio()". Scusate se posto tutto il codice ma è per una maggiore comprensione. Grazie!
codice:
class GiocoDellaVita{
public static int[][] prossimaGenerazione(int[][] mat){
int[][] proxgen = new int[mat.length][mat[0].length];
for(int i=0; i<mat.length; i++){
for(int j=0; i<mat[0].length; j++){
proxgen[i][j]= setCella(mat,i,j);
}
}
return proxgen;
}
//metodo che conta le celle piene adiacenti
private static int conteggio(int[][] mat, int i, int j){
int vivi=0;
for(int x=Math.max(0,i-1); x<Math.min(i+2,mat.length); x++){
for(int y=Math.max(0,j-1); y<Math.min(j+2,mat[0].length); y++){
if((mat[x][y]==1) && ((x!=i) || (y!=j)))
vivi++;
}
}
return vivi;
}
//metodo evoluzione cella
private static int setCella(int[][] mat, int i, int j){
if(mat[i][j]==1){
if(conteggio(mat,i,j)<2 || conteggio(mat,i,j)>3)
mat[i][j]=0;
}
else{
if(conteggio(mat,i,j)==3)
mat[i][j]=1;
}
return mat[i][j];
}
}