Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 11/08/2015, à 16:50

MasterYo

[OBSOLETE]Problème SDL, code::blocks

Bonjour à tous smile

Alors voilà, je suis un "turoriel" de programmation en c (celui écrit par M. Nebra wink ), et j'en suis au chapitre ou il utilise SDL.

Du coup, je veux l'installer. J'ai donc téléchargé l'archive de la bibliothèque pour le développement de SDL en 2.0.3 (SDL2-devel-2.0.3-mingw.tar.gz) . Je l'ai décompréssée dans un dossier et j'ai voulu créer un projet dans code::blocks. Premier problème, lorsque je crée mon projet SDL, il ne me demande pas ou se situe mon dossier "SDL". Comme c'est un tuto assez ancien (il n'y avait que la 1.2 de SDL), je me dis "Cool!! c'est devenu automatique!".
Code::blocks génere donc le code de base et tout, sauf qu'en fait non, c'est pas automatique. Du coup le deuxième problème fait sa majestueuse arrivée : "fatal error : SDL/SDL.h: Aucun fichier ou dossier de ce type", avec la ligne

 #include <SDL/SDL.h>  

Pointée en rouge. --' Bref.
Je cherche partout, google me dit de modifier des trucs dans le linker, ca marche pas, etc etc... Aucun forum ne me donne la solution au problème.

Du coup ben je viens ici smile Vu que je sais que vous êtes les meilleurs wink Merci d'avance!!

PS1 : On m'a dit chez les programmeurs d'ouvrir une discussion ici (sujet original : https://forum.ubuntu-fr.org/viewtopic.p … p20360961)

PS2 : si vous voulez le code généré automatiquement complet, il est là :

 #ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif

#include <SDL/SDL.h>

int main ( int argc, char** argv )
{
    // initialize SDL video
    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
    {
        printf( "Unable to init SDL: %s\n", SDL_GetError() );
        return 1;
    }

    // make sure SDL cleans up before exit
    atexit(SDL_Quit);

    // create a new window
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
                                           SDL_HWSURFACE|SDL_DOUBLEBUF);
    if ( !screen )
    {
        printf("Unable to set 640x480 video: %s\n", SDL_GetError());
        return 1;
    }

    // load an image
    SDL_Surface* bmp = SDL_LoadBMP("cb.bmp");
    if (!bmp)
    {
        printf("Unable to load bitmap: %s\n", SDL_GetError());
        return 1;
    }
    
    // centre the bitmap on screen
    SDL_Rect dstrect;
    dstrect.x = (screen->w - bmp->w) / 2;
    dstrect.y = (screen->h - bmp->h) / 2;

    // program main loop
    bool done = false;
    while (!done)
    {
        // message processing loop
        SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            // check for messages
            switch (event.type)
            {
                // exit if the window is closed
            case SDL_QUIT:
                done = true;
                break;

                // check for keypresses
            case SDL_KEYDOWN:
                {
                    // exit if ESCAPE is pressed
                    if (event.key.keysym.sym == SDLK_ESCAPE)
                        done = true;
                    break;
                }
            } // end switch
        } // end of message processing

        // DRAWING STARTS HERE
        
        // clear screen
        SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 0, 0, 0));

        // draw bitmap
        SDL_BlitSurface(bmp, 0, screen, &dstrect);

        // DRAWING ENDS HERE

        // finally, update the screen :)
        SDL_Flip(screen);
    } // end main loop

    // free loaded bitmap
    SDL_FreeSurface(bmp);

    // all is well ;)
    printf("Exited cleanly\n");
    return 0;
}

Dernière modification par MasterYo (Le 11/08/2015, à 17:25)

Hors ligne