Tableau de struct
Résolu/Fermé
A voir également:
- Tableau de struct
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Trier tableau excel - Guide
- Tableau de raccourcis clavier - Guide
4 réponses
mamiemando
Messages postés
33385
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
22 mars 2013 à 12:38
22 mars 2013 à 12:38
Oui j'ajouterais que visiblement vu que c'est un plateau de 64 cases donc j'imagine 8*8, il serait plus logiques d'avoir un plateau du genre :
... car d'un point de vue "design" je ne vois pas pourquoi un pion a des raisons de stocker les éventuels pions adjacents, ce n'est pas ce qui caractérise un pion. Par exemple si tu codes un jeu d'échec, ce qui caractérise un pion, c'est sa nature (pion, tour, cavalier...) et sa couleur (noir ou blanc).
Bonne chance
#include <stdlib.h> #include <assert.h> #define NUM_ROWS 8 #define NUM_COLS 8 typedef struct case_t { pion_t * pion; // NULL si vide, adresse du pion_t sinon }; // plateau[i][j] désigne la case (i, j), avec // 0 <= i < NUM_ROWS // 0 <= j < NUM_COLS typedef plateau_t { case_t ** cases; } plateau_t; plateau_t * new_plateau() { size_t i; plateau_t * plateau = malloc(sizeof(plateau_t)); plateau->cases = NUM_ROWS * sizeof(case_t *)); for(i = 0; i < NUM_COLS; ++i) { plateau->cases[i] = malloc(NUM_COLS * sizeof(case_t)); } return plateau; } void free_plateau(plateau_t * plateau) { for(i = 0; i < NUM_COLS; ++i) { free(plateau->cases[i]); } free(plateau->cases); free(plateau); } pion_t * get_piece(size_t i, size_t j) { assert(i < NUM_ROWS); assert(j < NUM_COLS); return plateau->cases[i][j]; } void set_piece(size_t i, size_t j, pion_t * pion) { assert(i < NUM_ROWS); assert(j < NUM_COLS); plateau->cases[i][j] = pion; } typedef struct pion_t { char etat; char lettre; } pion_t; int main() { plateau_t * plateau = new_plateau(); // place/récupère des pieces avec get_piece et set_piece free_plateau(plateau); return 0; }
... car d'un point de vue "design" je ne vois pas pourquoi un pion a des raisons de stocker les éventuels pions adjacents, ce n'est pas ce qui caractérise un pion. Par exemple si tu codes un jeu d'échec, ce qui caractérise un pion, c'est sa nature (pion, tour, cavalier...) et sa couleur (noir ou blanc).
Bonne chance
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
Modifié par [Dal] le 22/03/2013 à 10:27
Modifié par [Dal] le 22/03/2013 à 10:27
Salut Laura,
Tu as une erreur dans :
car cette notation permettant l'initialisation n'est permise qu'à l'occasion de la déclaration.
Ta fonction devrait donc ressembler à ceci (avec les aménagements à la struct proposés par mamiemando) :
Dal
Tu as une erreur dans :
plateau[i] = {'B', 'I', i, NULL, NULL, NULL, NULL, NULL, NULL};
car cette notation permettant l'initialisation n'est permise qu'à l'occasion de la déclaration.
Ta fonction devrait donc ressembler à ceci (avec les aménagements à la struct proposés par mamiemando) :
void initialisation(pion_t *plateau) { int i; for (i = 0; i < 10; i++) { plateau[i].etat = 'B'; plateau[i].lettre = 'I'; plateau[i].ligne = i; plateau[i].e = plateau[i].w = plateau[i].nw = plateau[i].ne = plateau[i].sw = plateau[i].se = NULL; } }
Dal
mamiemando
Messages postés
33385
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
27 novembre 2024
7 803
22 mars 2013 à 01:19
22 mars 2013 à 01:19
Alors à ta place je noterais "piont" plutôt "pion_t" pour respecter les conventions usuelles du C. Ensuite pour plus de lisibilité je noterais directement est, ouest, n_ouest etc... n, e, nw. Bon mais ça c'est du détail :-)
Pour créer un pion tu peux écrire :
Bonne chance
Pour créer un pion tu peux écrire :
#include <stdlib.h> typedef struct pion_t{ char etat; char lettre; int ligne; struct pion_t *e, *w, *nw, *ne, *sw, *se; } pion_t; int main() { pion_t pion = { .etat = 'B', .lettre = 'I', .ligne = 1, .e = NULL, .w = NULL, .ne = NULL, .nw = NULL, .se = NULL, .sw = NULL }; return 0; }
Bonne chance
22 mars 2013 à 12:50
[Dal] <-- ému
22 mars 2013 à 14:36
22 mars 2013 à 14:37