Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème structure et tableau

    2 décembre 2007 à 18:38:46

    Bonsoir,

    Dans le code çi-dessous, il y a deux fonctions. une qui me permet de sauver la position d'un personnage dans une matrice avant un mouvement (tableau à 2 dimensions) et la fonction revenir qui me permet après chaque action de remettre de pouvoir revenir en arrière d'un coup.

    Les deux fonctions çi-dessous sont assez similaires, mais l'inverse de l'autre. (sauver/reecrire)

    On dirait qu'il rale parce que je fais un calcul pour obtenir l'id de mon tableau en appelant une structure

    e[s.y - 1][s.x]

    Mais le problème n'intervient que dans la fonction 'revenir' alors que j'utilise la même chose dans les deux fonctions...

    Pourriez vous m'aidez ?

    l'erreur qu'il m'affiche :

    1. main.cpp 171 error : invalid types `int[int]' for array subscript
    2. main.cpp 174 error : invalid types `int[int]' for array subscript
    3. main.cpp 177 error : invalid types `int[int]' for array subscript
    4. main.cpp 180 error : invalid types `int[int]' for array subscript


    voici la structure save

    1. struct save {
    2.     char action[4]; // dernière action sauvée
    3.     int x;
    4.     int y;
    5.     mouvement m;
    6. };


    1. void sauve(save &s, ecran e[MAX][MAX], mouvement m, position p) {
    2.     s.x = p.x;
    3.     s.y = p.y;
    4.     s.m = m;
    5.     for(int i = 0; i < 3; i++) {
    6.         switch(s.m) {
    7.             case HAUT :
    8.                 s.action[i] = e[s.y - i][s.x];
    9.                 break;
    10.             case BAS :
    11.                 s.action[i] = e[s.y + i][s.x];
    12.                 break;
    13.             case DROITE:
    14.                 s.action[i] = e[s.y][s.x + i];
    15.                 break;
    16.             case GAUCHE :
    17.                 s.action[i] = e[s.y][s.x - i];
    18.                 break;
    19.         }
    20.     }
    21. }
    22. void revenir(save s, ecran &e, mouvement &m, position &p) {
    23.     p.x = s.x;
    24.     p.y = s.y;
    25.     m = s.m;
    26.     for(int i = 0; i < 3; i++) {
    27.         switch(s.m) {
    28.             case HAUT :
    29.                 e[s.y - i][s.x] = s.action[i]; // ligne 171
    30.                 break;
    31.             case BAS :
    32.                 e[(int) s.y + i][s.x] = s.action[i]; // ligne 174
    33.                 break;
    34.             case DROITE:
    35.                 e[s.y][s.x + i] = s.action[i] ; // ligne 177
    36.                 break;
    37.             case GAUCHE :
    38.                 e[s.y][s.x - i] = s.action[i]; // 180
    39.                 break;
    40.         }
    41.     }
    42. }

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      3 décembre 2007 à 6:35:01

      comme ça je ne voit pas tous de suite (pas a 6h30 xD)
      Mais je te conseil d'utiliser des noms plus parlant, quitte à écrire des caractères en plus, par qu'avec s, m, p, e etc... on se perd facilement.
      Deuxième conseil, tu peux utilisé un débugger, ou, dans le cas d'un petit programme, faire des sorties avec std::cerr (à utiliser comme cout) et qui écrit soit dans la console, soit dans un fichier tel que stderr dans le cas de la SDL.
      • Partager sur Facebook
      • Partager sur Twitter
        3 décembre 2007 à 10:15:04

        Salut,

        Je dirais que le problème vient du fait que tu passe en parametre de ta fonction revenir une référence sur un ecran alors que tu manipule e comme un tableau. revenir doit prendre en parametre ecran & e[MAX][MAX] plustot que ecran & e.
        • Partager sur Facebook
        • Partager sur Twitter

        Problème structure et tableau

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown