Partage
  • Partager sur Facebook
  • Partager sur Twitter

[SDL] Parametres d'une fonction de callback (timers)

Envoyer un tableau 2D en sous variable de structure

Sujet résolu
    14 mai 2006 à 15:57:51

    Bonjour.

    J'ai un petit problème avec les timers.
    J'aimerais envoyer plusieurs paramètres à la fonction de callback.
    Donc j'ai fait une structure spéciale.

    Bon je vous donne le code tout de suite, ce sera plus simple.

    La fonction main (endroits concernés seulement):
    /*...*/
        Piece pieceActive;
        Bloc grille[NB_BLOCS_HAUTEUR][NB_BLOCS_LARGEUR] = {VIDE};
        MultiParam parametres;
    /*...*/
        parametres.pGrille = grille[][];
        parametres.pPieceActive = &pieceActive;

        timer = SDL_AddTimer(intervalle, descendrePieceActive, &parametres);
    /*...*/


    La stucture MultiParam:
    typedef struct
        {
            Bloc pGrille[NB_BLOCS_HAUTEUR][NB_BLOCS_LARGEUR];
            Piece* pPieceActive;
        } MultiParam;


    La fonction de callback:
    Uint32 descendrePieceActive(Uint32 intervalle, void *param)
    {
        int i = 0;
        MultiParam* parametres = param;

        parametres->pPieceActive->bouge = 1;

        for(i = 0 ; i < 4 ; i++)
        {
            hauteur = parametres->pPieceActive->bloc[i].posBloc.y;
            largeur = parametres->pPieceActive->bloc[i].posBloc.x;
            parametres->pGrille[hauteur][largeur] = VIDE;
            parametres->pPieceActive->bloc[i].posBloc.y++;
        }

        return intervalle;
    }


    Mais ce code ne fonctionne pas, j'arrive à récupérer pPieceActive mais pas le tableau.

    A la ligne: parametres.pGrille = grille[][];
    J'obtient l'erreur: syntax error before ']' token

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2006 à 23:14:46

      Citation

      A la ligne: parametres.pGrille = grille[][];
      J'obtient l'erreur: syntax error before ']' token



      En fait il faut juste que parametres.pGrille pointe sur la meme adresse que grille :)

      Donc tu peux virer les crochets à grille :)
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2006 à 17:33:52

        Si je met ci-dessous ça ne marche pas non plus:
        parametres.pGrille = &grille;


        Mais par contre j'ai réussi en faisant comme ça:
        for(hauteur = 0 ; hauteur < NB_BLOCS_HAUTEUR ; hauteur++)
            {
                for(largeur = 0 ; largeur < NB_BLOCS_LARGEUR ; largeur++)
                {
                    parametres.pGrille[hauteur][largeur] = &grille[hauteur][largeur];
                }
            }


        Merci quand même. ;)
        • Partager sur Facebook
        • Partager sur Twitter

        [SDL] Parametres d'une fonction de callback (timers)

        × 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