Bonjour, j'essai de faire un petit programme appelé "jeu de la vie" et je me heurte à une erreur à l'éxecution: Erreur de dépassement du tableau.
Et la je comprend pas. J'ai relu tout mon code et j'ai pas trouver d'où ca pouvais provenir.
Voici l'erreur:
Je ne pense pas que l'erreur viennent des autres fonction utiliser qui ne manipule pas réellement le tableau. Ce que je pige pas, c'est d'où viens le 50. Les inégalité sont pourtant bien strictes dans tous les for, et j'ai fait attention à bien mettre un "b.length-1" bref je vois pas là ...Code:ArrayIndexOutOfBoundsException: 50 at Vie.testDeVie(Vie.java:31) at Vie.tourDeJeu(Vie.java:43) at Vie.main(Vie.java:85) Et voici le code en question: public static int testDeVie(boolean[][] b, int i, int j){ int vivants=0; int iMin, iMax, jMin, jMax; iMin = (i==0? i:i-1); iMax = (i==(b.length-1)? i:i+1); jMin = (j==0? j:j-1); jMax = (j==(b[0].length-1)? j:j+1); for (int k=iMin; k<=iMax; k++) for (int l=jMin; l<=jMax; l++) if (b[k][l]) -------> ca c'est la ligne 31 vivants++; vivants = (b[i][j]? vivants--:vivants); return vivants; } public static byte[][] tourDeJeu(boolean[][] b){ boolean[][] temp = new boolean[b.length][b[0].length]; temp = b; byte[][] t = new byte[b.length][b[0].length]; for (int i=0; i<b.length; i++) for (int j=0; j<b[0].length; i++){ int n=testDeVie(b, i, j); -----------> ca c'est la ligne 43 if (n==2) t[i][j] = 0; else if (n==3){ temp[i][j] = true; t[i][j] = 1; } else{ temp[i][j] = false; t[i][j] = -1; } } b = temp; return t; } public static void main(String[] args) throws InterruptedException{ int l=50, h=50; boolean[][] jeu = initialisation(l,h); Deug.startDrawings(10*l, 10*h); initialisationGraphique(jeu); while (true){ afficherTour(tourDeJeu(jeu)); ----------------> l.85 Thread.sleep(500); } }
J'ai mis le programme dans une balise Code . C'est plus lisible.
JPL, modérateur
-----