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 :

Creer des TSHAPE dynamiquement


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 142
    Par défaut Creer des TSHAPE dynamiquement
    Bonjour,

    Je dois realiser un casse brique en C++ et pour cela je voudrais créer une classe brique qui créer un TSHAPE

    Comment faire pour créer un TSHAPE dynamiquement ?

    Merci beaucoup

  2. #2
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 69
    Par défaut
    Salut,

    Tu peux trouver un debut de piste ici http://www.developpez.net/forums/sho...d.php?t=191729

    hope it helps !

  3. #3
    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 le topic donné par le lien j'avais été un peu court en terme d'efficacité !
    Ne pas oublier qu'un TShape a besoin d'un parent.
    Donc pour créer dynamiquement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TShape *Shape;
    TList *EnJeu = new TList;
    TList *HorsJeu = new TList;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(int j = 0; j< nbShapes; j++)
        {
        Shape = new TShape(this);
        Shape->Parent = this; // la Form comme Parent;
        Shape->SetBounds(....); // à toi de trouver la règle pour les positionner
        //etc.
        EnJeu->Add(Shape);
        }
    Comme le nombre de briques va évoluer au fil du jeu, on peut utiliser 2 TList.
    Au départ, toutes les briques sont dans une liste qui sert à maintenir les briques visibles (EnJeu) et à vérifier s'il y a ou non une collision.
    A chaque fois qu'une brique doit disparaître, il suffit de la faire passer d'une liste (EnJeu) à l'autre (HorsJeu) et de lui affecter Visible = false.
    La boucle pour tester une collision :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    for(int j = 0; j < EnJeu->Count; j++)
        {
        Shape = (TShape*)EnJeu->Items[j];
        if(....) //si collision alors
            {
            Shape->Visible = false:
            EnJeu->Delete(j);
            HorsJeu->Add(Shape);
            //calculer la nouvelle trajectoire
            //..
            return; //on quitte à cause du changement de trajectoire
            }
        }
    Pour recommencer la partie, il suffira de faire l'inverse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int j = 0; j < HorsJeu->Count; j++)
        {
        Shape = (TShape*)HorsJeu->Items[j];
        Shape->Visible = true:
        EnJeu->Add(Shape);
        }
    HorsJeu->Clear();

    Il est vrai que l'on peut aussi le faire (probablement plus simple) à l'aide d'un tableau.
    Perso, j'aime pas faire simple quand il y a plus compliqué pour éviter les tests et résumer le traitement à ce qui est visible sans être obligé de tout passer en revue !
    Donc si j'avais à me justifier, j'invoquerais le gain de temps pour le traitement !
    A vérifier sans doute !

    Mais... on fait comme on veut !

    A plus !

Discussions similaires

  1. Creer des variables dynamiquement
    Par Foyus dans le forum C#
    Réponses: 12
    Dernier message: 05/08/2010, 16h20
  2. Comment creer des variables dynamiques ?
    Par lonyc dans le forum ASP
    Réponses: 4
    Dernier message: 11/12/2006, 15h54
  3. Réponses: 4
    Dernier message: 19/05/2006, 14h30
  4. [VB.NET] Creer des contrôles dynamiquement
    Par theartist dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/01/2005, 11h42

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