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 :

tableau multidimensionnel et new []


Sujet :

C++

  1. #21
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Citation Envoyé par doccpu
    Par rapport a tes posts precedents tu a surement la liberté de créer tes propres classes.
    En effet et c'est bien ce que je fais
    donc essai :
    1-d'ecapsuler tes donnees dans des classes,
    Oui c'est fait dans la limite des contraintes
    2-de gerer ton plateau de jeu et tes joueurs dans des classes differentes(raports a leurs pions)
    C'est fait
    Si j'ai bien compris tu devrais pouvoir créer un plateau de cases VIDES et rajouter les pions de chaques joueurs par la suite en indexant les pions de chaques joueurs dans les cases du plateau mais apres la création et l'initialisation a NULL du plateau, ce qui te donnera de la souplesse au niveau de l'emplacement de depart de tes joueurs !
    A l'heure actuelle j'ai une classe etoile qui est le plateau de jeux. La classe pion ne contient rien sauf le numeros(imposé...).
    Je créer mon plateau avec tout à NULL. Sauf les cases des joueurs qui pointent toutes sur une seule instance de la classe Pion avec le numéros du joueur qui va bien.
    Ce que je cherchais c'était une méthode qui m'aurait permis de pouvoir mettre une ligne entière à une certaine valeur sans avoir à traiter chaques pointeurs de la ligne individuellement, comme la fonction memset du C.
    Par ailleur si j'avais pu utiliser certains types genre vector ou list j'aurais pu éviter de devoir recalculer la longueur de chaques lignes par exemple.
    Disont que j'ai réussit à faire tout le plateau, savoir si une coordonnée est valide, convertir une coordonnée de l'étoile en coordonnée du tableau et inversement, déplacer un pion, afficher l'étoile... Mais j'avoue que les solutions que je me suis vu forcé d'utiliser me semble pas très efficaces en rapport à d'autres méthodes existantes, certaines fonctions font le même calcul 4 fois pour un simple déplacement. Voir même plus encore dans le cas du nombre d'éléments d'une ligne ...
    A l'heure actuelle j'aimerais pouvoir modifier les fonctions pour faire un code plus efficace et plus propre

  2. #22
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par gwenhael
    Mais j'avoue que les solutions que je me suis vu forcé d'utiliser me semble pas très efficaces en rapport à d'autres méthodes existantes, certaines fonctions font le même calcul 4 fois pour un simple déplacement. Voir même plus encore dans le cas du nombre d'éléments d'une ligne ...
    A l'heure actuelle j'aimerais pouvoir modifier les fonctions pour faire un code plus efficace et plus propre
    As tu essayé de decouper les elements de ton tableau a la manière des collections ?


    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
    34
    35
    class Pion
    {
    //code
    }
     
    class Case
    {
    Pion * _mPion;
    public:
    Case(Pion * pPion = NULL)
    {
    this->_mPion = pPion;
    }
    //code
    }
     
    class Ligne
    {
    Case ** _mCases; // Tableau dynamique de pointeurs de Cases
    unsigned int _mNombresCases; // nombres de cases de la ligne
    fGetNombresCases()
    {
    return this->mNombresCases;
    }
    }
     
    class Colones
    {
    Lignes ** _mLignes; // Tableau dynamique de pointeurs de Lignes
    unsigned int _mNombresLignes;
    fGetNombresLignes()
    {
    return this->mNombresLignes;
    }
    }
    ce qui devrais te donner plus de souplesse et de fluidité dans le calcul du nombre de cases et de lignes puisqu'ils sont en memoire

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Impossible...
    Le tableau est imposé
    Donc je ne peux rien faire d'autre...

  4. #24
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par gwenhael
    Impossible...
    Le tableau est imposé
    Donc je ne peux rien faire d'autre...
    Donc t'a plus que la solution de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pion ***_tabPion;
    int * _NbPions // Tableau dynamique d'entier
    //où _NbPions[ligne] = nbCases

  5. #25
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Oui c'est en effet une solution, j'ai ma propre soluce qui est pas forcément mieux...
    Disont qu'on s'éloigne un peu du sujet de départ

  6. #26
    doccpu
    Invité(e)
    Par défaut
    Citation Envoyé par gwenhael
    Oui c'est en effet une solution, j'ai ma propre soluce qui est pas forcément mieux...
    Disont qu'on s'éloigne un peu du sujet de départ
    Rapelle toi ...

    Citation Envoyé par gwenhael
    Ce que je cherchais c'était une méthode qui m'aurait permis de pouvoir mettre une ligne entière à une certaine valeur sans avoir à traiter chaques pointeurs de la ligne individuellement, comme la fonction memset du C.
    Par ailleur si j'avais pu utiliser certains types genre vector ou list j'aurais pu éviter de devoir recalculer la longueur de chaques lignes par exemple.
    Je ne suis pas sur de m'etre tant eloigné que ca de ton problème mais j'ai pu mal comprendre tes propos. Avec mon tableau dynamique d'entier tu peux savoir a tout instant combien de case tu a dans chaque lignes, ce qui t'evite de les recalculer. maintenant si c'est pas ce que tu cherche dit nous ce que tu veux parce que la on commence a troller

    Par contre pour l'iteration tu est obligé d'y passer ! mais pour metre tes pointeurs a case vide tu peux faire comme dans mon exemple
    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
    34
    35
    36
    37
    38
    39
    40
    41
     
    class Pion
    {
    //code
    }
    class Case
    {
    Pion* _mPion;
    Case(Pion * pPion = NULL)
    }
     
    class Plateau
    {
    Cases *** _mCases;
    int * _mTailles;
    Cases()
    {
    int x = 12; // nb de lignes
    this->_mTailles = new int [x];
    this->_mCases = new Cases**[x];
    Pion * monPion = NULL;
    for(int i = 0; i < x; i++)
    {
    this->_mTailles[i] = i+1; // a remplacer par le bon clacul : this->_mTailles = nombres de cases de la ligne[i]
    this->_mCases[i] = new Cases*[this->_mTailles[i]];
    for(int j = 0; j<this->_mTailles[i]; j++)
    {
    if(condition)
    {
    monPion = ...;
    }
    else
    {
    monPion = NULL;
    }
    this->_mCases[i][j] = new Pion(monPion); 
    }
    }
     
    }
    }
    Dernière modification par doccpu ; 06/02/2007 à 20h16.

  7. #27
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Citation Envoyé par gwenhael
    Quand à utiliser une version plus récente, ça signifie une phase de modification non négligeable pour le rendre compatible avec VC6 une fois à la fac ( genre iostream.h ou lieu de iostream)
    Ben non pourquoi faire ?

    Quant à VC6, il n'est pas dispo gratuitement chez MS ?
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #28
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2006
    Messages : 88
    Par défaut
    Oui c'est vrai que j'ai parlé du regret d'être forcé de recalculer, mais c'était plutôt à cause du fait de ne pas avoir droit à vector, remarque au passage je réfléchi à ton idée.
    Pour ce qui est de VC6, à ma connaissance, mais je me trompe peut-être seuls les services packs sont dispo au téléchargement.
    Ensuite il y a visual studio 2005 express ou un truc comme ça qu'on peut télécharger, un amis à tester et le retour sur VC6 à la fac ne s'est pas faite sans douleur...
    Mais je peux me tromper et lui aussi ...

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/12/2005, 14h41
  2. Réponses: 2
    Dernier message: 27/11/2005, 23h36
  3. Nombre de dimensions d'un tableau multidimensionnel
    Par Bruno75 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 08/07/2005, 10h03
  4. type de donnée tableau multidimensionnel
    Par opheliegomes dans le forum Débuter
    Réponses: 2
    Dernier message: 03/02/2005, 12h29
  5. [langage] tableau multidimensionnel
    Par totox17 dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2002, 15h58

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