IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Connaitre l'objet d'une propriété d'un liste ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2017
    Messages : 22
    Points : 23
    Points
    23
    Par défaut Connaitre l'objet d'une propriété d'un liste ?
    Bonjour ,
    j'ai une liste, de Rectangle de différentes classes, comment puis je retrouver l'objet à qui appartient ces propriétés Rectangle.
    Désolé je ne suis pas sûr des termes, je ne suis pas très familiarisé avec le jargon , mais je crois que c'est ça.
    Un exemple pour illustré mon propos :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    foreach (Caisse caisse in caisses)
                    {
                        if (caisse.Hitbox.Intersects(Personnage.Hitbox))
                        {
                              listRectangle.Add(caisse.Hitbox);
                        }
                   }
    foreach (Fleur fleur in fleurs)
                    {
                        if (fleur.Hitbox.Intersects(Personnage.Hitbox))
                        {
                              listRectangle.Add(fleur.Hitbox);
                        }
                   }
     
    foreach (Rectangle element in listRectangle)
    {
           // Là je vais écrire n'importe quoi parce que je ne sais pas comment faire mais ça explique ce que je souhaite faire : 
           if ( element.NomDeLobjet == coquelicot)
           {
                mettreDansUnVase(element);
            }
           else if (element.NomdeLobjet == marguerite)
           {
                jeterAlaPoubelle(element);
           }
           else if (element.Classe == Caisse)
           {
                  rangerDansPlacard(eleme
            }
    }
    Voila, quand j'utilise un élement(Rectangle) de la liste, j'ai besoin de savoir de quel type (fleur ou caisse dans l'exemple) est-il, ainsi de quel objet vient-il ( de savoir si c'est la Hitbox(Rectangle) de la magnolia, la marguerite ou du coquelicot )

    Merci pour vos réponses, je me tiens à disposition pour d'éventuelles précisions.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Eh bien je dirais que ton projet est mal structuré.
    Un objet peux appartenir à plusieurs classes (par référence) donc tu fait comment la ? (Pour les puristes je sais Rectangle est un Struct donc par valeur mais c'est pour l'exemple)

    Voici un exemple avec les interfaces après il doit y avoir plein de façon différentes d'approcher le sujet.

    Mes classes/interfaces
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public class Caisse : IRectangle
    {
        public string Nom { get; set; }
        public Rectangle Hitbox { get; set; }
    }
     
    public class Fleur : IRectangle
    {
        public string Nom { get; set; }
        public Rectangle Hitbox { get; set; }
    }
     
    public interface IRectangle
    {
        string Nom { get; set; }
        Rectangle Hitbox { get; set; }
    }

    Mon code
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    List<IRectangle> listRectangle = new List<IRectangle>();
     
    listRectangle.Add(new Caisse() { Nom = "coquelicot" });
    listRectangle.Add(new Fleur() { Nom = "marguerite" });
    listRectangle.Add(new Caisse() { Nom = "tulipe" });
    listRectangle.Add(new Fleur() { Nom = "rose" });
     
    foreach (IRectangle element in listRectangle)
    {
        if (element.Nom == "coquelicot")
        {
            MessageBox.Show("coquelicot");
        }
        else if (element.Nom == "marguerite")
        {
            MessageBox.Show("marguerite");
        }
        else if (element is Caisse)
        {
            MessageBox.Show("Caisse");
        }
        else if (element is Fleur)
        {
            MessageBox.Show("Fleur");
        }
    }

    Après c'est à toi de structurer au mieux tes interfaces et tes classes en fonction du projet.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2017
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2017
    Messages : 22
    Points : 23
    Points
    23
    Par défaut
    Ok merci, ça m'aide.

  4. #4
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 897
    Points : 1 913
    Points
    1 913
    Par défaut
    Il y a une chose qui me gêne, c'est que lors d'une collision (vérification de l'intersection entre deux rectangles hitbox) on récupère la hitbox ; est-ce-qu'il ne vaudrait pas mieux récupérer le propriétaire de la hitbox, qui est finalement l'objet devant réagir à cet événement de collision ?

  5. #5
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 184
    Points : 5 755
    Points
    5 755
    Par défaut
    Certes. Cette réflexion fait partie de la structure de ton code. Je tentais uniquement de répondre à ta question.

    Je pense même que si il y a collision cela doit être entre plusieurs (2 ou plus) objets.

  6. #6
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 897
    Points : 1 913
    Points
    1 913
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Certes. Cette réflexion fait partie de la structure de ton code. Je tentais uniquement de répondre à ta question.
    Heu... ce n'est pas mon code en fait...

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/02/2016, 11h03
  2. [AC-2010] Création d'un objet contenant une propriété de type liste
    Par alain_bubu dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/01/2015, 23h26
  3. [2.x] Objet avec une propriété étant un objet de la même classe
    Par magicbisous-nours dans le forum Symfony
    Réponses: 0
    Dernier message: 21/08/2012, 09h56
  4. Réponses: 3
    Dernier message: 31/10/2008, 14h17
  5. Savoir si un objet a une propriété
    Par mioux dans le forum C#
    Réponses: 11
    Dernier message: 24/01/2008, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo