Partage
  • Partager sur Facebook
  • Partager sur Twitter

Creer un "bouton" avec la SDL

Bonne méthode?

    20 novembre 2008 à 20:16:42

    Salut les Zéros :D ,

    Alors je suis à la SDL et j'ai fait des "boutons" avec la SDL et j'aimerais savoir si c'est la bonne méthode ^^

    Bien sûr par "bouton" j'entend que si clique sur une zone définie ça fait l'opération voulue ;)

    Voila le code:
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    
    
    #define HAUTEUR 50
    #define LARGEUR 200
    
    int main(int argc, char *argv[])
    {
        SDL_Surface *ecran = NULL, *bouton = NULL, *jouer = NULL;
        SDL_Rect positionBouton, positionJouer;
        SDL_Event event;
    
        int continuer = 1;
    
        SDL_Init(SDL_INIT_VIDEO);
    
        ecran = SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
        bouton = SDL_CreateRGBSurface(SDL_HWSURFACE, LARGEUR, HAUTEUR, 32, 0, 0, 0, 0);
        jouer = SDL_CreateRGBSurface(SDL_HWSURFACE, LARGEUR, HAUTEUR, 32, 0, 0, 0, 0);
        SDL_WM_SetCaption("Test bouton SDL", NULL);
    
        positionBouton.x = (ecran->w / 2) - (bouton->w / 2);
        positionBouton.y = (ecran->h / 2) - (bouton->h / 2);
        SDL_FillRect(bouton, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
        SDL_BlitSurface(bouton, NULL, ecran, &positionBouton);
    
        positionJouer.x = (ecran->w / 2) - (jouer->w / 2);
        positionJouer.y = 120;
        SDL_FillRect(jouer, NULL, SDL_MapRGB(ecran->format, 100, 255, 255));
        SDL_BlitSurface(jouer, NULL, ecran, &positionJouer);
    
        SDL_Flip(ecran);
    
        while(continuer)
        {
            SDL_WaitEvent(&event);
            switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_MOUSEBUTTONUP:
                    if(   event.button.x > (ecran->h / 2) - (bouton->h / 2)
                       && event.button.x <=  (ecran->h / 2) - (bouton->h / 2) + LARGEUR
                       && event.button.y > (ecran->w / 2) - (bouton->w / 2)
                       && event.button.y <= (ecran->w / 2) - (bouton->w / 2) + HAUTEUR)
                       {
                                continuer = 0;
                       }
    
                    else if (   event.button.x > (ecran->h / 2) - (bouton->h / 2)
                             && event.button.x <= (ecran->h / 2) - (bouton->h / 2) + LARGEUR
                             && event.button.y > 120
                             && event.button.y <= 120 + HAUTEUR)
                             {
                                 continuer = 0;
                             }
    
                        break;
            }
        }
    
    
        SDL_FreeSurface(bouton);
        SDL_FreeSurface(jouer);
        SDL_Quit();
    
        return EXIT_SUCCESS;
    }
    


    Tout marche mais j'aimerais savoir si c'est la méthode la plus optimale :D

    Merci pour vos réponses :)

    Debs
    • Partager sur Facebook
    • Partager sur Twitter
      3 janvier 2009 à 13:41:41

      C'est une bonne question Debs, a vrai dire je me pose la même question...
      Quelqu'un saurait-il y répondre svp?
      Merci! ;)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        3 janvier 2009 à 20:50:21

        Et bien c'est une bonne méthode.
        La meilleure serait de créer une structure bouton, qui contiendrait ta surface et tes coordonnées ;)
        • Partager sur Facebook
        • Partager sur Twitter

        Creer un "bouton" avec la 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