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 :

Conseil de structure de programme


Sujet :

C++

  1. #1
    Membre actif
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 238
    Points
    238
    Par défaut Conseil de structure de programme
    Bonjour,

    Je souhaite réaliser un jeu de carte.

    J'ai déjà réalisé une fonction qui permet de réaliser des nombres aléatoires.

    Mais, pour ma demande, je vais utiliser un tableau créé à la main. (trié) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int ptab[32] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 };
    J'ai créé une classe nommé carte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class Carte { 
    	public :
    	char IdenCarte[2 + 1];
    	int	IdentJoueur;	
    	int PoidAtout;
    	int PoidNormal;
    };
    J'ai coupé le tableau en 4 pour 4 joueurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    int Jj1[8], Jj2[8], Jj3[8], Jj4[8];
     
    for (i = 0 ; i <= 7 ; i++)
    { 
    Jj1[i] = ptab[i];
    cout << "Jj1 : " << Jj1[i] << endl ;
    Jj2[i] = ptab[i+8];
    cout << "Jj2 : " << Jj2[i] << endl ;
    Jj3[i] = ptab[i+16];
    cout << "Jj3 : " << Jj3[i] << endl ;
    Jj4[i] = ptab[i+24];
    cout << "Jj4 : " << Jj4[i] << endl ;
    }
    J'ai créé mes cartes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Carte _AsTr, _RoTr, _DaTr, _VaTr, _10Tr, _09Tr, _08Tr, _07Tr;
    Carte _AsCo, _RoCo, _DaCo, _VaCo, _10Co, _09Co, _08Co, _07Co;
    Carte _AsPi, _RoPi, _DaPi, _VaPi, _10Pi, _09Pi, _08Pi, _07Pi;
    Carte _AsCa, _RoCa, _DaCa, _VaCa, _10Ca, _09Ca, _08Ca, _07Ca;
    puis affecté les valeurs :
    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
     
    _AsTr.IdentJoueur = Jj1[0];
    _AsCo.IdentJoueur = Jj1[1];
    _AsPi.IdentJoueur = Jj1[2];
    _AsCa.IdentJoueur = Jj1[3];
     
    _RoTr.IdentJoueur = Jj1[4];
    _RoCo.IdentJoueur = Jj1[5];
    _RoPi.IdentJoueur = Jj1[6];
    _RoCa.IdentJoueur = Jj1[7];
     
    _DaTr.IdentJoueur = Jj2[0];
    _DaCo.IdentJoueur = Jj2[1];
    _DaPi.IdentJoueur = Jj2[2];
    _DaCa.IdentJoueur = Jj2[3];
     
    .......
    Par contre, maintenant, j'ai affecté mes cartes aux 4 joueurs.
    Mais, je ne sais pas par exemple, afficher toutes les cartes du joueur 1.

    Pouvez-vous m'aider à comprendre ?

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Moi je n'aurai pas fait ca. J'aurai fait une classe Joueur qui contient 8 cartes.

    Toi, tu fais un peu l'inverse.

    Mais, pour répondre à ta question :

    le joueur 1 a les cartes données par son tableau non ?

    Jc

  3. #3
    Membre actif
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 238
    Points
    238
    Par défaut
    En fait, mon problème est que je ne sais pas vraiment structuré comme il faut.
    L'idée de la classe joueur qui contient 8 cartes est plus logique, mais pas forcément évidente pour moi au premier abord.

    Oui, les cartes sont données par un tableau. Jusque là, tout va bien ;-)

    C'est l'étape où il va falloir récupérer ces données de façon automatisée qui est plus compliquée. J'avais plein de carte, mais pas de tableau les structurants.

    Je vais tenter de faire votre méthode et voir où je bloque.

    merci.

  4. #4
    Membre actif
    Inscrit en
    Mai 2002
    Messages
    251
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 251
    Points : 238
    Points
    238
    Par défaut
    J'ai fait un tableau à 2 dimensions :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char NmCarte[32][50 + 1];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    strcpy(NmCarte[0] , "As de Trefle");
    strcpy(NmCarte[1] , "As de Coeur");
    strcpy(NmCarte[2] , "As de Pique");
    strcpy(NmCarte[3] , "As de Carreau");
    ....
    Lorsque je fait un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << NmCarte[1] << endl;
    Par de problème, As de Coeur apparaît.

    Par contre


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cout << NmCarte[0] << endl;
    Ca fait sonner le pc... comme si il y avait un problème...
    et As de Trefle ne s'affiche pas.

    Savez-vous pourquoi ?

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Bonjour,
    .Quel est votre système d'exploitation ?
    .Si vous avez une sonnerie à l'affichage d'une chaine,c'est peut-être que vous avez saisi justement un caractère qui est dirigé vers la sortie son ?

    .Je suis d'accord avec la critique de fear : une analyse de type objet aurait dû vous conduire à créer une classe joueur,avec peut-être comme membre un tableau de 8 objets carte.

  6. #6
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    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 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Hum en modélisant les objets physiques réels et leurs divers voyages, plus en sortant la responsabilité de toutes les cartes, cela passe tout seul.

    Une classe Paquet de N Cartes chacune étant définitivement instanciée à la création.
    Le paquet (ou une autre classe peut-être ?) est mélangeable et il se souvient de toutes les cartes (i.e. responsable des durées de vie)
    Chaque Joueur se voit distribuer N/J cartes (des pointeurs sans responsabilité de libération attaché).
    A la résolution de chaque pli, les cartes gagnées partent à la "défausse" du joueur gagnant.

    Une fois que plus personne n'a de cartes, on fait les comptes de chaque défausse, on les rassemble, on coupe et c'est reparti pour un tour (on ne mélange pas dans tous les jeux)

    PS: pourquoi des char[]+strcpy ? "char const*" vers des chaines immuables gérées automatiquement suffisent si vous voulez faire du C, sinon std::string c'est bien! (ce qui va très bien avec les deux pré-requis qui sont : cartes == entités immuables qui ne se copient pas)
    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...

Discussions similaires

  1. [Conseils/Aide] Structure de mon premier programme
    Par Invité2 dans le forum Débuter
    Réponses: 44
    Dernier message: 13/09/2008, 14h08
  2. Conseils sur structure de programme
    Par RR instinct dans le forum Langage
    Réponses: 6
    Dernier message: 21/09/2006, 14h44
  3. Conseils pour démarrer en programmation ?
    Par Osirex dans le forum Débuter
    Réponses: 5
    Dernier message: 06/10/2005, 18h28
  4. Font , Xml & structure de programme .
    Par Clad3 dans le forum XML
    Réponses: 11
    Dernier message: 30/03/2005, 22h45
  5. Conseil choix structure STL
    Par SteelBox dans le forum SL & STL
    Réponses: 3
    Dernier message: 15/03/2005, 02h13

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