Bonjour ,

Je souhaite réaliser le jeu redkite en C.

Cependant, je n'arrive pas à initialiser mes structures...

Le code de mon .c compile (voir ci dessous)

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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
struct cycliste_t
 {
   int piste;
   int position;
 };
 
 struct deck_t {
     int count; // Number of cards of this deck
     int cards[MAX_CARDS]; // Actual cards as `int`
 };
 
 
 struct discardable_deck_t {
     struct deck_t *deck;
     struct deck_t *discard;
 };
 
 struct player_t
 {
   struct cycliste_t *coureur;
   struct cycliste_t *sprinter;
   struct discardable_deck_t * decks[2];
 };
 
 
 struct cycliste_t* init_cyclist()
 {
   struct cycliste_t* cycliste = malloc(sizeof(struct cycliste_t));
   cycliste->piste=0;
   cycliste->position=-1;
   return cycliste;
 }
 
 struct deck_t* init_deck()
 {
   struct deck_t *deck = malloc(sizeof(struct deck_t));
   return deck;
 }
 
struct discardable_deck_t* init_disc()
{
  struct discardable_deck_t* discardable_deck = malloc(sizeof(struct discardable_deck_t));
  discardable_deck -> deck = init_deck();
  discardable_deck -> discard = init_deck();
  return discardable_deck;
}
 
struct player_t* init_partie()
 {
   struct player_t* player = malloc(sizeof(struct player_t));
   player->coureur = init_cyclist();
   player->sprinter = init_cyclist();
   player->decks[0] = init_disc();
   player->decks[1] = init_disc();
   struct deck_t pioche_rouleur = empty_deck();
   struct deck_t pioche_sprinter = empty_deck();
   pioche_rouleur = { .count = 15, .cards = {3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7}};
   pioche_sprinter = { .count = 15, .cards = {2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 9, 9, 9}};
 
   player->decks[0]->deck = &pioche_rouleur; //0 = ROULEUR
   //player->decks[0]->discard = empty_deck();
   player->decks[1]->deck = &pioche_sprinter;
   //player->decks[1].discard = empty_deck();
   return player;
 
 
 }
 
 
 
 int NBR_PIOCHE = 4;
 int NBR_JOUEUR = 4;
 int val_fatigue = 2;
 enum cyclist_t choix = ROULEUR;
 
 int init_random()
 {
     char *val = getenv("SEED");
     int seed = val ? atoi(val) : time(NULL);
     srand(seed);
     return seed;
 }
mais lorsque je veux tester ma fonction pour voir si elle fonctionne j'obtiens l'erreur :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
test-redkite.c: In function ‘main’:
test-redkite.c:25:14: erreur: déréférencement d'un pointeur de type incomplet
   int a =toto->piste;
              ^
test-redkite.c:27:20: erreur: déréférencement d'un pointeur de type incomplet
   printf(" %d",toto->position);
                    ^
make: *** [test-redkite.o] Erreur 1
Le code de mon test est pourtant assez simple :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
int main() //test de l'initialisation
{
  struct cycliste_t* toto = init_cyclist();
  int a =toto->piste;
  printf(" %d",a);
  printf(" %d",toto->position);
  //printf("%d",player->decks[0].deck.cards[5]);
      //printf("%d",player.decks[1].discard.cards[i]);
 
  return 0;
}
Je n'arrive pas à corriger l'erreur. Si quelqu'un a une idée cela me serait d'une grande aide.

Merci d'avance.