Partage
  • Partager sur Facebook
  • Partager sur Twitter

cliquer dans une zone precise en SDL

    11 octobre 2006 à 13:39:16

    en fait j'essaie de faire une calculatrice
    Voici le main.c

    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>

    void pause();

    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *imageDeFond = NULL, *chiffre1 =NULL, *chiffre2 = NULL;
        SDL_Rect positionFond, positionChiffre1;
        positionFond.x = 0;
        positionFond.y = 0;
        positionChiffre1.x = 118;
        positionChiffre1.y = 26;

    int continuer = 1;

        SDL_Init(SDL_INIT_VIDEO);

        SDL_WM_SetIcon(SDL_LoadBMP("sdl_icone.bmp"), NULL);

        ecran = SDL_SetVideoMode(167, 221, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("Calculatrice", NULL);

        imageDeFond = SDL_LoadBMP("image de la calculatrice.bmp");
        chiffre1 = SDL_LoadBMP("9.bmp");
        chiffre2 = SDL_LoadBMP("8.bmp");
        SDL_BlitSurface(imageDeFond, NULL, ecran, &positionFond);


        SDL_Flip(ecran);

        SDL_Event event;

        while (continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
    case SDL_QUIT:
            continuer = 0;
    case SDL_MOUSEBUTTONUP :
    if(event.button.x > 65 && event.button.x > 91 && event.button.y > 68 && event.button.y < 94)
    SDL_BlitSurface(chiffre1, NULL, ecran, &positionChiffre1);
    else if(event.button.x > 68 && event.button.x > 93 && event.button.y > 69 && event.button.y < 93)
    SDL_BlitSurface(chiffre2, NULL, ecran, &positionChiffre1);
              SDL_Flip(ecran);
            }
        }

        SDL_FreeSurface(imageDeFond);
        SDL_Quit();

        return EXIT_SUCCESS;
    }




    Voila j'ai reussi a faire le neuf
    mais le huit je n'arrive pas a le positionner

    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2006 à 14:31:10

      case SDL_MOUSEBUTTONUP :
      if(event.button.x > 65 && event.button.x > 91 && event.button.y > 68 && event.button.y < 94)
      SDL_BlitSurface(chiffre1, NULL, ecran, &positionChiffre1);
      else if(event.button.x > 68 && event.button.x > 93 && event.button.y > 69 && event.button.y < 93)
      SDL_BlitSurface(chiffre2, NULL, ecran, &positionChiffre1);


      Avec ça, tu ne vois pas l'image "9.bmp" puisque tu blittes "8.bmp" dessus.

      Ensuite, tu as fait une erreur au niveaux des event.button.x.
      ... event.button.x > 65 && event.button.x < 91 && ...


      Dans ton cas, (avec un SDL_Rect), tu peux faire ceci :
      if (event.button.x < positionChiffre1.x && event.button.x > (positionChiffre1.x - Taille.x)

      Taille qui serait une structure ( int x, int y)
      ou Taille qui serait un SDL_Rect : (int h, int w)

      Sinon je n'ai fit que survoler, il y a peut-être encore des erreurs
      • Partager sur Facebook
      • Partager sur Twitter
        11 octobre 2006 à 16:27:07

        le probleme c'est que j'ai reussi a positionner la zone pour le 9
        mais pas reussi pour le 8.
        • Partager sur Facebook
        • Partager sur Twitter

        cliquer dans une zone precise en SDL

        × 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