Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] Gioco della vita

    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];
    	}
    
    }

  2. #2
    Non c'è proprio nessuno che riesce a darmi una mano??

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Sarebbe utile sapere dove ti genera l'eccezione...

    Comunque ad una rapida occhiata ho notato un possibile errore nel ciclo interno del primo metodo: quel i < mat[0].length è voluto o forse volevi scrivere j < mat[0].length?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Scusa per il ritardissimo. Ma ho letto solo ora. Sono riuscito ad implementare un'altro algoritmo più efficiente. Comunque l'errore era proprio quello! Questo succede perchè programmo sempre la sera tardi Grazie lo stesso per la pazienza!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.