Java Taquin, cellule adjacente matrice
Résolu
Aktayen
Messages postés
189
Date d'inscription
Statut
Membre
Dernière intervention
-
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
KX Messages postés 16761 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour à tous,
J'ai recherché sur le net et je n'ai rien trouvé, je ne dois pas avoir les bon mots clés, j'espère que vous pourrez m'aider.
Je suis entrain de programmer le jeu du Taquin (en Java) et je tombe sur un problème récurent que je ne sais pas résoudre (à part en bidouillant).
Imaginons une matrice d'entier, je sélectionne une cellule avec ma souris, j'aimerais tester tout les cellules voisines pour savoir sil' une d'elles est égale à 0.
Je le test comme ça :
Soit (i,j) la case sélectionnée avec la souris.
si( matrice[i+1][j]==0 ou si matrice[i][j+1]==0 ou si matrice[i-1][j])==0 ou si matrice [i][j-1]==0)
alors ..etc.
Le problème est que si je sélectionne une cellule qui est sur le bord de la matrice j'ai le fameux "java.lang.ArrayIndexOutOfBoundsException" car forcement avec mes conditions je sors de la matrice.
Est ce que quelqu'un aurait un moyen simple et efficace pour tester tout les voisins d'une cellule?
Merci d'avance,
J'ai recherché sur le net et je n'ai rien trouvé, je ne dois pas avoir les bon mots clés, j'espère que vous pourrez m'aider.
Je suis entrain de programmer le jeu du Taquin (en Java) et je tombe sur un problème récurent que je ne sais pas résoudre (à part en bidouillant).
Imaginons une matrice d'entier, je sélectionne une cellule avec ma souris, j'aimerais tester tout les cellules voisines pour savoir sil' une d'elles est égale à 0.
Je le test comme ça :
Soit (i,j) la case sélectionnée avec la souris.
si( matrice[i+1][j]==0 ou si matrice[i][j+1]==0 ou si matrice[i-1][j])==0 ou si matrice [i][j-1]==0)
alors ..etc.
Le problème est que si je sélectionne une cellule qui est sur le bord de la matrice j'ai le fameux "java.lang.ArrayIndexOutOfBoundsException" car forcement avec mes conditions je sors de la matrice.
Est ce que quelqu'un aurait un moyen simple et efficace pour tester tout les voisins d'une cellule?
Merci d'avance,
A voir également:
- Java Taquin, cellule adjacente matrice
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
4 réponses
Il faudra rajouter des conditions pour chaque appel à un calcul sur la matrice susceptible de déborder.
Certaines conditions sont implicites mais si on devait toutes les expliciter on aurait, pour chaque appel :
if (a>=0 && a<n && b>=0 && b<n && matrice[a][b]==0)
a pouvant être i, i-1, i+1
b pouvant être j, j-1, j+1
La confiance n'exclut pas le contrôle
Certaines conditions sont implicites mais si on devait toutes les expliciter on aurait, pour chaque appel :
if (a>=0 && a<n && b>=0 && b<n && matrice[a][b]==0)
a pouvant être i, i-1, i+1
b pouvant être j, j-1, j+1
La confiance n'exclut pas le contrôle
Dans la mesure où tu sais ce que tes conditionnes ne suffisent pas, rajoutes en !
Grace à l'évaluation paresseuse en Java, tu peux cumuler tes conditions :
(i+1<n && matrice[i+1][j]==0) || ...
Si tu as i+1 qui dépasses la dimension de ta matrice, l'instruction i+1<n renverra false, en conséquence le programme n'a pas besoin de calculer matrice[i+1][j] puisque de tout de façon le résultat est connu et sera false.
Donc le calcul n'est pas fait et l'exception n'est pas levée !
Grace à l'évaluation paresseuse en Java, tu peux cumuler tes conditions :
(i+1<n && matrice[i+1][j]==0) || ...
Si tu as i+1 qui dépasses la dimension de ta matrice, l'instruction i+1<n renverra false, en conséquence le programme n'a pas besoin de calculer matrice[i+1][j] puisque de tout de façon le résultat est connu et sera false.
Donc le calcul n'est pas fait et l'exception n'est pas levée !
Merci déjà d'être venu à mon aide.
Avec cette solution, comment je fais pour vérifier les voisins si ma cellule choisi est dans un coin? ça marchera quand même?
Avec cette solution, comment je fais pour vérifier les voisins si ma cellule choisi est dans un coin? ça marchera quand même?
ouai ok, je vais m'amuser ^^. Je faisais plus ou moins comme ça avant mais j'avais espéré qu'il y est quelques choses de moins lourd..
En tout cas merci de ton aide.
En tout cas merci de ton aide.