Problème de polymorphisme
4x10m
-
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 -
Salut les ptis keum,
Je développe un jeu en 2D avec Slick, mon niveau en java n'est pas négligeable et voila un problème que j'arrive a résoudre mais je ne comprend pas pourquoi.
J'ai une classe Map qui contient un tableau de class Cell. J'ai aussi une troisième classe Room qui étend Cell.
Le deal c'est de transformer une cell en room lorsque l'on clique dessus, pour cela cell appelle une méthode statique de map qui vient faire la modif'. Au début cell appelait cette méthode en se donnant en argument avec this.
De la dans map, il me suffisait (dans ma tête) de faire
dans la classe Map. Mais ça ne marchait pas...
Après des heures de galère j'ai finalement remplacer le contenu de la méthode transformCellToRoom par un truc du genre
qui fonctionne mais qui pour moi revient au même ...
WTF is this shit ? Quelqu'un pourrait-il m'éclairer ?
Je développe un jeu en 2D avec Slick, mon niveau en java n'est pas négligeable et voila un problème que j'arrive a résoudre mais je ne comprend pas pourquoi.
J'ai une classe Map qui contient un tableau de class Cell. J'ai aussi une troisième classe Room qui étend Cell.
Le deal c'est de transformer une cell en room lorsque l'on clique dessus, pour cela cell appelle une méthode statique de map qui vient faire la modif'. Au début cell appelait cette méthode en se donnant en argument avec this.
Map.transformCellToRoom(this);
De la dans map, il me suffisait (dans ma tête) de faire
cell = new Room();
dans la classe Map. Mais ça ne marchait pas...
Après des heures de galère j'ai finalement remplacer le contenu de la méthode transformCellToRoom par un truc du genre
for(int i = 0; i < w; i++) {
if(cells[i][j] == cell) {
cells[i] = new Room();
}
}
qui fonctionne mais qui pour moi revient au même ...
WTF is this shit ? Quelqu'un pourrait-il m'éclairer ?
1 réponse
Déjà, mauvaise idée d'appeler une classe du même nom qu'une classe standard comme Map alors que de toute évidence elle n'a rien à voir...
Tu compares deux objets avec == ça peux être la cause de ton problème. Utilises la méthode equals pour comparer deux objets.
"qui fonctionne mais qui pour moi revient au même"
Difficile à dire avec aussi peu de code, on ne sait même pas comment tu faisais avant que tu ne fasses la modification.
if(cells[i][j] == cell)
Tu compares deux objets avec == ça peux être la cause de ton problème. Utilises la méthode equals pour comparer deux objets.
"qui fonctionne mais qui pour moi revient au même"
Difficile à dire avec aussi peu de code, on ne sait même pas comment tu faisais avant que tu ne fasses la modification.