Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1457 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Variable dans un nom

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variable dans un nom

n°1997227
thevinou
Posté le 30-05-2010 à 11:23:41  profilanswer
 

Bonjour !
 
Voila mon probleme, j'ai un jeu de carte a initialiser (52 carte)
et n'ayant pas le courage de tout faire à la main, j'ai pensé a une boucle.
 
Mais un nouveau probleme se pose, comment ajouter une variable a un nom ?
 
Je m'explique, les cartes seront du type :
 
1_x  // avec 1 qui definit la couleur de la carte ( Coeur, Pique, ... (donc ne change pas) ) et x qui definit la valeur ( AS, DEUX, ... ( x prendra des valeurs de 1 à 13))
 
Exemple: Valet de COEUR = 1_11
 
J'utilise ceci pour aller piocher dans mon repertoire image, l'image associée au nom .
 
Merci d'avance !

mood
Publicité
Posté le 30-05-2010 à 11:23:41  profilanswer
 

n°1997234
billgatesa​nonym
Posté le 30-05-2010 à 11:56:20  profilanswer
 

L'informatique demande du courage.
 
Pour mon jeu de belote, j'ai commencé par faire une liste de libellés dont j'aurais besoin :

char *cards_color_name[4] = {"trefle", "carreau", "coeur", "pique"};
 
char *cards_height_name[8] = {"as", "sept", "huit", "neuf", "dix", "valet", "dame", "roi"};


J'ai défini des noms pour référencer mes libellés de manière lisible dans mon programme :

#define CLUBS    0
#define DIAMONDS 1
#define HEARTS   2
#define SPADES   3
#define ACE   0
#define KING  7
#define QUEEN 6
#define JACK  5
#define TEN   4
#define NINE  3
#define EIGHT 2
#define SEVEN 1


J'utilise ces références

int cards_color[4] = {CLUBS, DIAMONDS, SPADES, HEARTS};
int usual_order[8] = {ACE, KING, QUEEN, JACK, TEN, NINE, EIGHT, SEVEN};
int notrump_order[8] = {ACE, TEN, KING, QUEEN, JACK, NINE, EIGHT, SEVEN};
int trump_order[8] = {JACK, NINE, ACE, TEN, KING, QUEEN, EIGHT, SEVEN};

n°1997236
ptitchep
Posté le 30-05-2010 à 12:06:41  profilanswer
 

thevinou a écrit :

Bonjour !

 

Voila mon probleme, j'ai un jeu de carte a initialiser (52 carte)
et n'ayant pas le courage de tout faire à la main, j'ai pensé a une boucle.

 

Mais un nouveau probleme se pose, comment ajouter une variable a un nom ?

 

Je m'explique, les cartes seront du type :

 

1_x  // avec 1 qui definit la couleur de la carte ( Coeur, Pique, ... (donc ne change pas) ) et x qui definit la valeur ( AS, DEUX, ... ( x prendra des valeurs de 1 à 13))

 

Exemple: Valet de COEUR = 1_11

 

J'utilise ceci pour aller piocher dans mon repertoire image, l'image associée au nom .

 

Merci d'avance !


Salut

 

Pourquoi utiliser le nom? Moi je ferais une structure qui contient une valeur et une couleur. Ensuite un tableau de 52 éléments. Enfin je dis tableau mais la structure de données dépendra de ce que tu veux faire de tes cartes.

 

Exemple:

Code :
  1. enum COULEUR
  2. {
  3.     COEUR, CARREAU, PIQUE, TREFLE
  4. };
  5. typedef struct
  6. {
  7.      unsigned valeur;
  8.      COULEUR couleur;
  9. } Carte;
  10. int main()
  11. {
  12.      Carte jeu[52];
  13.  
  14.      indice = 0;
  15.      for (i=0;i<4;i++)
  16.           for (j=1;j<14;j++)
  17.           {
  18.                jeu[indice].couleur = i;
  19.                jeu[indice].valeur = j;
  20.                indice++;
  21.            }
  22. }
 


Message édité par ptitchep le 30-05-2010 à 12:10:35

---------------
deluser --remove-home ptitchep
n°1997237
thevinou
Posté le 30-05-2010 à 12:10:16  profilanswer
 

Le probleme, c'est que mes cartes sont deja toutes initialisées, j'ai juste besoin, pour mon interface graphique, de tirer la carte dans le dossier image selon son nom :S

n°1997248
Sve@r
Posté le 30-05-2010 à 13:20:36  profilanswer
 

thevinou a écrit :

1_x  // avec 1 qui definit la couleur de la carte ( Coeur, Pique, ... (donc ne change pas) )


ben si ça change !!! 1 pour coeur, 2 pour pique, ça change bien non ??? En plus à quoi servirait une valeur qui ne change pas ???
 

thevinou a écrit :

et x qui definit la valeur ( AS, DEUX, ... ( x prendra des valeurs de 1 à 13))
Exemple: Valet de COEUR = 1_11
Mais un nouveau probleme se pose, comment ajouter une variable a un nom ?


Ca signifie quoi la phrase "ajouter une variable à un nom"' ??? C'est quoi un nom pour toi ?
 

thevinou a écrit :

Le probleme, c'est que mes cartes sont deja toutes initialisées, j'ai juste besoin, pour mon interface graphique, de tirer la carte dans le dossier image selon son nom :S


Ben si t'as le nom du fichier tu peux l'ouvrir via fopen !!!
 

billgatesanonym a écrit :


J'ai défini des noms pour référencer mes libellés de manière lisible dans mon programme :

char *cards_color_name[4] = {"trefle", "carreau", "coeur", "pique"};
 char *cards_height_name[8] = {"as", "sept", "huit", "neuf", "dix", "valet", "dame", "roi"};
#define CLUBS    0
#define DIAMONDS 1
#define HEARTS   2
#define SPADES   3
#define ACE   0
#define KING  7
#define QUEEN 6
#define JACK  5
#define TEN   4
#define NINE  3
#define EIGHT 2
#define SEVEN 1


J'utilise ces références

int cards_color[4] = {CLUBS, DIAMONDS, SPADES, HEARTS};
int usual_order[8] = {ACE, KING, QUEEN, JACK, TEN, NINE, EIGHT, SEVEN};
int notrump_order[8] = {ACE, TEN, KING, QUEEN, JACK, NINE, EIGHT, SEVEN};
int trump_order[8] = {JACK, NINE, ACE, TEN, KING, QUEEN, EIGHT, SEVEN};



 
T'es obligé de tout mettre en anglais ? Tu trouves que ça fait plus pro ?
En plus tu associes dans ta tête différents éléments alors qu'ils ne sont pas associés dans le code. Exemple: t'as défini "SEVEN" à 1 parce que le libellé "sept" est le rang n° 1 de ton tableau "cards_height_name". Pis le jour où tu reprends ton code tu décides de changer la valeur du #define...
 
Or le but d'un define c'est d'être absolument modifiable sans que la compilation ou l'exécution en soit altérée.
 

billgatesanonym a écrit :

L'informatique demande du courage.


Hé oui. Ca demande aussi d'avoir le courage de commencer par bien concevoir avant de se lancer dans le code. Parce que plus tu réfléchis tôt, plus ton code sera facilement maintenable/modifiable. Les structures sont là pour faire des associations. Autant s'en servir...
 

Code :
  1. #define TREFLE   1
  2. #define CARREAU 2
  3. #define COEUR   3
  4. #define PIQUE   4
  5. #define AS   1
  6. #define ROI  2
  7. #define DAME 3
  8. #define VALET  4
  9. #define TEN   5
  10. #define NINE  6
  11. #define EIGHT 7
  12. #define SEVEN 8
  13.  
  14. typedef struct {
  15.    int couleur;
  16.    char *nom;
  17. } t_libelle;
  18.  
  19. typedef struct {
  20.    int couleur;
  21.    int valeur;
  22. } t_carte;
  23.  
  24. t_libelle tabCouleur[]={
  25.     {TREFLE, "Trèfles"},
  26.     {CARREAU, "Carreaux"},
  27.     {COEUR, "Coeur"},
  28.     {PIQUE, "Pique"},
  29.     {0, NULL},
  30. };
  31.  
  32. t_libelle tabValeur[]={
  33.     {AS, "As"},
  34.     {ROI, "Roi"},
  35.     {DAME, "Dame"},
  36.     {VALET, "Valet"},
  37.     {DIX, "Dix"},
  38.     {NEUF, "Neuf"},
  39.     {HUIT, "Huit"},
  40.     {SEPT, "Sept"},
  41.     {0, NULL},
  42. };
  43.  
  44. int ordre_usuel[8] = {AS, ROI, DAME, VALET, DIX, NEUF, HUIT, SEPT};
  45. int ordre_jeu[8] = {AS, DIX, ROI, DAME, VALET, NEUF, HUIT, SEPT};
  46. int ordre_atout[8] = {VALET, NEUF, AS, DIX, ROI, DAME, HUIT, SEPT};


 
Ah évidemment il faut aussi une fonction qui renvoie le nom quand on y passe la valeur. Pas de pb

Code :
  1. char *nom(int valeur, t_libelle *tab)
  2. {
  3.     t_libelle *pt;
  4.  
  5.     for (pt=tab; pt->valeur != valeur && pt->nom != NULL; pt++);
  6.     return pt->nom;
  7. }


 
Et là, je peux définir VALET à 155 si j'en ai envie, ça fonctionnera toujours sauf si j'utilise la valeur 0 que j'ai défini comme valeur sentinelle. Si on veut éviter ce danger, alors faut passer à la fonction "nom" la taille du tableau mais c'est un détail...


Message édité par Sve@r le 30-05-2010 à 14:00:05

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1997301
ptitchep
Posté le 30-05-2010 à 19:56:06  profilanswer
 

thevinou a écrit :

Le probleme, c'est que mes cartes sont deja toutes initialisées, j'ai juste besoin, pour mon interface graphique, de tirer la carte dans le dossier image selon son nom :S


Désolé, mal compris. Je ne comprends pas non plus "ajouter une variable à un nom". Avec quoi fais-tu ton interface graphique?


---------------
deluser --remove-home ptitchep

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Variable dans un nom

 

Sujets relatifs
[html]tout l'url dans une variable ?equivalent de variable de session
Inserer une variable JS dans un formulaire HTMLRésolu : variable modifiée par l'affectation d'une autre variable
[Résolu] Problème variable php qui renvoie rien[HS] ligne
Récupérer une variable deux pages aprèsVariable issue d'un formulaire nulle
Relecture de formulaire à ligne variableEcho du contenu d'une variable possible ?
Plus de sujets relatifs à : Variable dans un nom


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR