Alors voilà, je suis en train de coder un jeu java;
J'ai une classe Fenêtre dans laquelle se baladent des Monstres et des Heros (classes héritant de la classe-mère Entite).
Tout cela est modélisé par une matrice d'Entite (déclarée en tant que variable d'instance statique dans Fenêtre) dans laquelle on stocke les Monstre/Heros.
La matrice est statique, les instances de Monstre/Heros ne le sont pas.
J'ai besoin de comparer un Monstre m (une variable d'instance de Fenêtre) avec une case de la matrice. Pour cela, j'écris:
if (matrice[i][j] == m) {
faire(choses);
}
Mais l'IDE indique qu'une comparaison entre une variable statique et une non-statique n'est pas possible, il me propose de rendre m statique, ce que je ne veux pas faire.
Comment faire pour pouvoir "récupérer" une instance à partir de la case de matrice où elle est stockée?
Merci beaucoup!
- Edité par iFeedWithMalphite 28 mars 2015 à 18:25:47
Tu essayes probablement d'accéder à m depuis une méthode statique. Comme une méthode statique n'est pas liée à un objet, m n'existe pas dans la méthode.
Je trouve aussi pas très "correct" d'avoir une grille statique. C'est peut-être pratique de se faire une variable globale mais ce n'est pas, à mon sens, dans l'esprit de la POO.
Bonjour, merci de ta réponse! Effectivement là était le problème.
Quant à la grille statique, je l'ai créée pour permettre, à partir de n'importe quelle classe (Heros, Item, Monstre...), de modifier sa position ou celle d'une autre instance dans la matrice; je ne voyais pas d'autre solution...
pourquoi ne crée tu pas une instance de la class fenêtre dans Entite, tu aurais la même instance de class (Entite) pour tous tes petit monstre et les héros.
Et comme sa tu récupère ta variable matrice avec un getters ou la modifie avec un setters.
Azourkaï
Tout le monde est un génie. Mais si on juge un poisson sur sa capacité à grimper à un arbre, il passera sa vie à croire qu’il est stupide.
Merci du conseil, mais cela me paraît un peu étrange de placer la Fenêtre dans Entité... Ne suffirait-il pas (je viens d'y penser) de déplacer tout ce qui est détection d'ennemis/gestion des obstacles/matrices/etc dans Fenêtre pour pouvoir tout contrôler à partir d'une seule classe?
Après je ne suis pas experte en java et en OOP, je dis ça juste comme ça ^^'
- Une classe Fenetre (dans laquelle j'instancie les Héros et les monstres), qui maintenant contient les fonctions de détections d'ennemis/etc qui vont ensuite appeler les fonctions d'attaque/de dialogue situées dans Heros
- Une class Entite de laquelle héritent Monstre et Heros
- Une classe Jeu qui sert de main() à partir duquel on exécute new Map().
Je n'ai pas terminé toutes les modifications nécessaires mais pour l'instant ce que j'ai codé semble fonctionner, ce qui me permettrait de virer le "static" de ma matrice... Est-ce une bonne solution?
Meow.
Problème : comparaison entre static et non static
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.