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 :

Rectangles de collision. [Débutant]


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut Rectangles de collision.
    Bonsoir,

    Je ne poste pas souvent sur des forums mais je me pose vraiment une question depuis un moment.
    Je m'amuse pour l'instant a coder une petite application qui permet de faire apparaître une bille par clique qui agissent indépendamment (utilisation de thread)
    Maintenant j'aimerai pouvoir tester la collision entre ces billes.
    J'ai donc une liste de Sprite dans laquelle j'ai toutes mes billes

    Ma question est : "Il y a-t il une manière facile de déterminé une collision (intersection de deux rectangles) entre les billes de cette liste ?"

    J'avais pensé faire une boucle et testé une à une chaques combinaisons mais je trouve ça assez lourd.

    Quelqu'un aurait une idée ?

    Merci d'avance,

    Satochu

    Ps: Je ne suis pas encore assez habitué totalement à se langage, je ne connais pas encore toute les ficelles. Peut-être que cette question peut sembler stupide, je demande juste une voie.

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 256
    Par défaut
    Bonjour,

    Voici une piste pour vous aider dans votre problème http://stackoverflow.com/questions/9...x-in-a-winform.

    Celle-ci explique d'utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pictureBox1.Bounds.Intersects
    mais il y a une erreur, la personne voulait probablement dire IntersectsWith qui renvoie bien un booléen.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Bonjour gta126,

    Déja merci de ta réponse
    j'avais effectivement pensé de base à IntersectsWith
    Mon problème vient du fait que pour pouvoir faire ce test de collision avec "IntersectsWith" , il faut les 2 objets.

    Ma question était plus du style :
    y a t il moyen de faire un genre d'intersect qui prend en paramètre n'importe quoi

    Par exemple:
    if ( maBille.rectangle.intersersect(/*anything*/) { /* code */ }

    Je cherche en gros s'il existe un test pour une collection
    Est ce que Mabille touches le rectangle d'une des billes de ma liste ?
    Je sais pas si j'explique bien. Si ça se met ça n'existe pas (si c'est le cas je passerai par le intersectWith)

    merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    Salut,
    il n'y a pas de fonction magique qui fasse ce que tu veux :p
    il va falloir que tu testes le intersect de chaque rectangle de ta liste avec chaque rectangle de ta liste.

    la méthode la plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    for (int cpt = 0; cpt < ListeRect.Lenght; cpt++)
    {
        for (int cpt1 = 0; cpt1 < ListeRect.Lenght; cpt1++)
        {
            //ca ne sert a rien de chercher l'intersection d'un rectangle avec lui-même :
            if (ListeRect[cpt] != ListeRect[cpt1])
            {
     
                if (ListeRect[cpt].IntersectsWith(ListeRect[cpt1]))
                    Collision(ListeRect[cpt],ListeRect[cpt1]);
            }
        }
    }
    tu peux optimiser ce code car il fait des tests en double (genre rect[0] avec rect[1] puis rect[1] avec rect[0]) : moi j'ai la flemme ^^

    PS : initialiser le cpt1 à cpt au lieu de 0 peut être une bonne piste

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2013
    Messages : 5
    Par défaut
    Bonjour,

    On ne savait jamais qu'il y ait une fonction qui existe ou une astuce dommage ^^

    Je vais partir de ton exemple.

    Merci à vous deux de m'avoir accordé du temps ça m'a bien aidé.

    Bonne journée.

    Satochu.

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Par défaut
    N'oublie pas le bouton "résolu" si la réponse te convient

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. collision entre des rectangles
    Par ines64 dans le forum Programmation multimédia/Jeux
    Réponses: 0
    Dernier message: 05/05/2013, 00h01
  2. [2D] Repositionner deux rectangles à la détection d'une collision
    Par pierrot la lune dans le forum Physique
    Réponses: 3
    Dernier message: 24/03/2010, 22h00
  3. Collision entre rectangles
    Par OddAnt dans le forum Débuter avec Java
    Réponses: 1
    Dernier message: 10/01/2010, 00h26
  4. Collision entre deux rectangle
    Par Ouaibou dans le forum Mathématiques
    Réponses: 4
    Dernier message: 15/04/2007, 15h16
  5. Détection de collisions entre rectangles
    Par davcha dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 13/04/2006, 18h26

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