Bien le bonsoir

Je me casse la tête depuis un bon 2 heures la dessus.

Je tiens a mentionner que j'ai commencer le C que récemment
Donc, ne soyer po trop dur svp hehe.

En gros j'ai une structure Stage, et dedans, il peut y avoir un nombre X de cases.
Les cases aussi son de type structure;

1- Jai creé mes 2 structures

stage à une variable Sokoban_Stage_Case* cases; qui va pointer vers une
allocation de mémoire de malloc caster en (Sokoban_Stage_Case*)

Mon problème vient de mon loop,
j'arrive à assigner des valeurs, mais pas à les afficher.
je suis a peut près certain que dans mon loop (Stage.cases + iii) est l'adresse mémoire

pkoi (Stage.cases + iii)->x = kkchose , fonction
et *(Stage.cases + iii).x ou *(Stage.cases + iii).y ne marche pas ?

Merci mille fois d'avance, j'ai hate de continuer mon jeux!

ps : Tout est dans la main() juste pour lexpliquation, ça ne sera pas là en bout de ligne...

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
 
int main ( int argc, char** argv )
{
    int i,ii,iii,iiii;
    int nbOfRow = 4; // Number of Rows (will be dynamic value)
    int nbOfCol = 6; // Number of Cols (will be dynamic value)
 
    // Case structure
    typedef struct Sokoban_Stage_Case Sokoban_Stage_Case;
    struct Sokoban_Stage_Case {
        int x;
        int y;
    };
 
 
    // Stage structure
    typedef struct Sokoban_Stage Sokoban_Stage;
    struct Sokoban_Stage {
        int nbOfCase;
        int nbOfRow;
        int nbOfCol;
        Sokoban_Stage_Case* cases;
    };
 
    // New stage
    Sokoban_Stage Stage;
    Stage.nbOfRow  = nbOfRow;
    Stage.nbOfCol  = nbOfCol;
    Stage.nbOfCase = (nbOfRow * nbOfCol);
    Stage.cases    = (Sokoban_Stage_Case*) malloc(sizeof(Sokoban_Stage_Case) * Stage.nbOfCase);
 
    // Fill coord to all stage.cases
    iii=0;
    for (i=0;i<Stage.nbOfRow;i++) {
        for (ii=0;ii<Stage.nbOfCol;ii++) {
            printf("(%d,",i);
            printf("%d)\n",ii);
 
            (Stage.cases + iii)->x = i;
            (Stage.cases + iii)->y = ii;
 
            printf("  (%d,",*(Stage.cases + iii)); // Get the X cool
            printf("%d)\n",*(Stage.cases + iii+1)); // how i target the y?
            iii++;
        }
    }
 
    return 0;
}