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++Builder Discussion :

Drag and Drop


Sujet :

C++Builder

  1. #21
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Dans la méthode Intercept, on travaille sur l'image passée en parametre : TImage *Image (l'objet déplacé) et sur TList *Images (objets mis en liste)pour tester une éventuelle collision avec les autres images.
    Donc ici, il faut corriger tes erreurs !
    Images->Width n'a pas de sens (en terme de développement), par contre Image->Width en a beaucoup plus !

    A plus !

  2. #22
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je viens de modifier Images en Image dans la fonction intercept mais j'ai encors des erreurs. Je dois modifier ailleurs encore ?

    Voici le code modifié
    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
    TImage* __fastcall TFormGame::Intercept(TImage *Images, TPoint P)
    {
     
    int left = P.x;
    int right = left + Image->Width;
    int top = P.y;
    int bottom = top + Image->Height;
    TRect C;
    TImage *Cible;
    for(int j = 0; j < Image->Count; j++)
        {
    	Cible = (TImage*)Image->Items[j];
    	if(Images != Cible)
    		{
    		C = Cible->BoundsRect;
    		if((left < C.Right) &&
               (right >= C.Left) &&
    		   (top < C.Bottom) &&
               (bottom >= C.Top)) return Cible;
    		}
    	}
     
    return NULL;
     
    }
    et les erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [C++ Erreur] ufmGameRushHour.cpp(402): E2451 Symbole 'Image' non défini

  3. #23
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Le paramètre passé à la méthode : TImage *Image et non TImage Images.
    C'est le pointeur vers l'image qui est déplacée.

    Plus loin, si on a la liste :
    TList *Images;

    on va donc accéder aux images de la liste :

    Cible = (TImage*)Images->Items[j]; // la liste des images dont ... Cible

    if(Image != Cible) // le paramètre TImage *Image

    Ce test, sert bien évidemment à vérifier que l'on ne va pas calculer si l'image s'intercepte elle-même !

    A plus !

  4. #24
    Invité
    Invité(e)
    Par défaut
    Salut,

    Je vais essayer ceci des que je rentre a la maison. Je te tiens a la maison. Mais j'ai encore une question

    la variable TPoint Images. C'est comme un tableau ? ou pas ?

  5. #25
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    J'ai l'impression de parler à un robot !

    Dans ce que j'ai donné, il suffisait de remplacer "Panel" par "Image"... BCB dispose de l'outil "Remplacer" !

    Un TPoint est une classe composée de 2 int (x et y)...

    Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    P.x = 10;
    P.y = 50;
    A plus !

  6. #26
    Invité
    Invité(e)
    Par défaut
    Salut,

    J'ai l'impression de parler à un robot !

    Dans ce que j'ai donné, il suffisait de remplacer "Panel" par "Image"... BCB dispose de l'outil "Remplacer" !
    Super cela marche niquelle !!! Mais connaiterais-tu comment faire pour que mes images reste dans une certaine zone ? Faire une sorte de carré et les images ne peuvent plus sortir de là ?

  7. #27
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Une zone sur la form
    TRect ZoneDuJeu = Rect(32, 32, 500, 370);
    Donc ici, je ne montre que le contenu de la OnMouseMove.
    Je raisonne toujours avec mes Panels, donc ...

    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
    33
     
    TPanel *Panel = (TPanel*)Sender;
    TPoint P = Point(Panel->Left, Panel->Top);
    if(IsMoving)
        {
        if(Vertical)
            {
            P.y = P.y + Y - Start.y;
            }
        else
            {
            P.x = P.x + X - Start.x;
            }
     
        //En vrac...
        TPoint Z = Point(P.x + Panel->Width, P.y + Panel->Height);
     
        if(P.y < ZoneDuJeu.Top) P.y = ZoneDuJeu.Top;
        if(Z.y > ZoneDuJeu.Bottom) P.y = ZoneDuJeu.Bottom - Panel->Height;
     
        if(P.x < ZoneDuJeu.Left) P.x = ZoneDuJeu.Left;
        if(Z.x > ZoneDuJeu.Right) P.x = ZoneDuJeu.Right - Panel->Width;
     
        if(Intercept(Panel, P) != NULL)
            {
            ShowMessage("Collision");
            IsMoving = false;
            }
        else
            {
            Panel->SetBounds(P.x, P.y, Panel->Width, Panel->Height);
            }
        }
    On se doit d'optimiser puisque si on se déplace dans un sens on n'a pas à vérifier ce qui concerne l'autre sens de déplacement.
    A toi d'en faire un peu !

    A plus !

  8. #28
    Invité
    Invité(e)
    Par défaut
    Salut,

    Voila tout marche niquelle merci

  9. #29
    Membre éclairé Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Par défaut
    Citation Envoyé par seb2020 Voir le message
    Salut,

    Merci pour les réponses. J'arrive a faire le drag and drop de mon objet. Le truc c'est que je vais le faire que de droite a gauche ou de haut en bas.

    Je vais essayer la solution de henderson. Je vous tiens au courant mais si il y a d'autres idée ca pourrait etre pas mal
    comme tu as dit que tu avais réussi le drag and drop...
    est-ce que tu pourrai partager ton code stp (j'en aurais grandement besoins)


    pour épater gena

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Drag and drop "de l'extérieur"
    Par Invité dans le forum C++Builder
    Réponses: 12
    Dernier message: 31/03/2020, 10h10
  2. "Drag and drop" avec directinput
    Par batosai dans le forum DirectX
    Réponses: 1
    Dernier message: 16/06/2004, 16h48
  3. [VB.NET] Microsoft TreeView drag and drop ?
    Par bigtoof dans le forum ASP.NET
    Réponses: 7
    Dernier message: 24/05/2004, 14h50
  4. [JSP][DRAG AND DROP]
    Par hamed dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 23/01/2004, 17h36
  5. drag and drop
    Par jujuesteban dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/06/2003, 09h23

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