Partage
  • Partager sur Facebook
  • Partager sur Twitter

Editeur Sokoban

Pour la gestion du départ...

Sujet résolu
    24 avril 2006 à 0:10:15

    Bonsoir à toutes et à tous.
    Je voudrais gérer le fait qu'on ne puisse pas mettre plusieur départ dans le jeu, mais voilà après moulte bidouille j'arrive toujours à trouver :colere:
    Voici la partie du code qui gère cette contrainte:
        while(continuer)
        {
            for(i=0;i<NB_BLOCS_LARGEUR;i++)
            {
                for(j=0;j<NB_BLOCS_HAUTEUR;j++)
                {
                    if(map[i][j]==DUDU)
                    {
                    verifDepart=1;
                    positionDepart.x=i*BLOC;
                    positionDepart.y=j*BLOC;
                    }
                }
            }
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                continuer=0;
                break;

                case SDL_MOUSEBUTTONDOWN:
                if(verifDepart && objetActuel==DUDU)
                {
                }
                else if(event.button.button==SDL_BUTTON_LEFT)
                {
                    map[event.button.x/BLOC][event.button.y/BLOC]=objetActuel;
                    clicGaucheEnCours=1;
                    if(objetActuel==DUDU)
                    verifDepart=1;
                }
                if(event.button.button==SDL_BUTTON_RIGHT)
                {
                    if(map[event.button.x/BLOC][event.button.y/BLOC]==map[positionDepart.x][positionDepart.y])
                    {
                        verifDepart=0;
                    }
                    map[event.button.x/BLOC][event.button.y/BLOC]=VIDE;
                    clicDroitEnCours=1;
                }
                break;


    A savoir que DUDU correspond à mon personnage, et verifDepart est un booléen qui est censé m'aider à gérer si il y a plusieurs départ (enfin je pense que c'est une bonne initiative! :p )
    Si quelqu'un peut éclairer ma lanterne ça serait très gentil ^^
    D'avance merci.

    @+
    • Partager sur Facebook
    • Partager sur Twitter
      24 avril 2006 à 0:44:05

      Hello...

      Idée: et si, au lieu de faire:
      verifDepart=1;

      Tu faisais
      verifDepart++;

      Et ensuite, si verifDepart est différent de 1, c'est soit qu'il n'y a pas de DUDU (cas 0, valeur initiale de verifDepart), soit qu'il y en a plusieurs... et alors, bye bye tout le monde !

      Bienvenue dans le joyeux monde du code fail-safe :)
      • Partager sur Facebook
      • Partager sur Twitter
        24 avril 2006 à 19:11:55

        Je ne pense pas que cela résoudra mon problème.... car moi je voudrais que si il n'y a pas (ou plus) de DUDU alors il remet verifDepart à 0...mais mon code n'a pas l'air de fonctionner je pense...


        Bon je vien de bidouiller un peu, et j'ai résolu mon problème, je donne quand meme la solution si toutefois cela intéresse quelqu'un. En fait dans la boucle for du début il changer ca:
        if(map[i][j]==DUDU)
                        {
                        verifDepart=1;
                        positionDepart.x=i*BLOC;
                        positionDepart.y=j*BLOC;


        en:
        if(map[i][j]==DUDU)
                        {
                        verifDepart=1;
                        positionDepart.x=i;
                        positionDepart.y=j;


        (enlever la multiplication par BLOC)
        Voilà, merci quand même de m'avoir aidé.

        @+
        • Partager sur Facebook
        • Partager sur Twitter

        Editeur Sokoban

        × 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