Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème : comparaison entre static et non static

Sujet résolu
    28 mars 2015 à 18:22:43

    Bonjour à tous,

    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

    • Partager sur Facebook
    • Partager sur Twitter
    Meow.
      28 mars 2015 à 20:00:40

      Bonsoir,

      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.

      • Partager sur Facebook
      • Partager sur Twitter
        29 mars 2015 à 9:08:49

        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...

        • Partager sur Facebook
        • Partager sur Twitter
        Meow.
          30 mars 2015 à 1:17:20

          Bonsoir,

          il faut que tu encapsule tes données !

          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ï 

          • Partager sur Facebook
          • Partager sur Twitter
          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.
            30 mars 2015 à 23:13:57

            Hello,

            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 ^^'

            • Partager sur Facebook
            • Partager sur Twitter
            Meow.
              30 mars 2015 à 23:29:07

              moi personnellement j'aurais:

              • crée une class fenetre
              • cree une class Entite
              • crée tes class monstre et heros qui extends entiter
              • cree une class engine // qui sera ton moteur de jeux tous doit tourné autour de cette class

              Azourkaï

              • Partager sur Facebook
              • Partager sur Twitter
              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.
                31 mars 2015 à 23:16:19

                Ce que j'ai:

                - 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? :D

                • Partager sur Facebook
                • Partager sur Twitter
                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.
                • Editeur
                • Markdown