IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Menu de jeux plateforme 2d


Sujet :

SDL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Par défaut Menu de jeux plateforme 2d
    Bonjour,

    voila le code de mon menu (jeux plateforme 2d) , il compile est affiche l background et tous mais il y a une problème avec les evenements, dans ce menu en ckliquant par exemple sur le flèche bas, le Bouton "NEW GAME" se selectionne svp j ai besoin de votre aide et merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    #include <SDL/SDL.h>
    #include <SDL/SDL_image.h>
    #include <stdio.h>
    #include <SDL/SDL_mixer.h>
     
    int main(int argc, char *argv[])
     
    {
        int x,y ;
        SDL_Surface *Menu = NULL;
        SDL_Surface *ecran = NULL;
        SDL_Surface *Continue = NULL;
        SDL_Surface *Continue1 = NULL;
        SDL_Surface *Newgame = NULL;
        SDL_Surface *Newgame1 = NULL;
        SDL_Surface *Option = NULL;
        SDL_Surface *Quit = NULL;
        SDL_WM_SetCaption("SDL_Mixer", NULL);
        SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
        int continuer=1;
        SDL_Event event;
        SDL_Rect positionMenu, positionContinue, positionNewgame, positionOption, positionQuit ;
        positionMenu.x=0;
        positionMenu.y=0;
        positionContinue.x=220;
        positionContinue.y=50;
        positionNewgame.x=220;
        positionNewgame.y=150;
        positionOption.x=220;
        positionOption.y=250;
        positionQuit.x=220;
        positionQuit.y=350;
     
     
        SDL_Init( SDL_INIT_EVERYTHING );
        //SDL_WM_SetIcon(IMG_Load("icon.pnj"), NULL);//(icon de la fenetre )
        ecran = SDL_SetVideoMode( 960,720, 32, SDL_HWSURFACE);
        SDL_WM_SetCaption("VIDEOGAME", NULL);
        Menu = SDL_LoadBMP("Menu.bmp");
        SDL_BlitSurface( Menu, NULL, ecran, &positionMenu);
        Continue = SDL_LoadBMP("CONTINUE.bmp");
        SDL_BlitSurface(Continue, NULL, ecran, &positionContinue);
        Newgame = SDL_LoadBMP("NEWGAME.bmp");
        SDL_BlitSurface(Newgame, NULL, ecran, &positionNewgame);
        Option = SDL_LoadBMP("OPTIONS.bmp");
        SDL_BlitSurface(Option, NULL, ecran, &positionOption);
        Quit = SDL_LoadBMP("QUITGAME.bmp");
        SDL_BlitSurface(Quit, NULL, ecran, &positionQuit);
        SDL_Flip( ecran );
        if(Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, MIX_DEFAULT_CHANNELS, 1024) == -1) //Initialisation de l'API Mixer
        {
            // printf("%s", Mix_GetError());
        }
        Mix_Music *musique; //Création du pointeur de type Mix_Music
        musique = Mix_LoadMUS("musique.mp3"); //Chargement de la musique
        Mix_PlayMusic(musique, -1); //Jouer infiniment la musique
        pause ();
        //KEYBOARD EVENT
        if( SDL_PollEvent( &event ) )
        {
            //If a key was pressed
            if( event.type == SDL_KEYDOWN )
            {
                switch( event.key.keysym.sym )
                {
     
                    case SDLK_DOWN:
                    Newgame = SDL_LoadBMP("NEWGAME1.bmp");
                    SDL_BlitSurface(Newgame, NULL, ecran, &positionNewgame);
                    break;
                    case SDLK_UP:
                    Continue = SDL_LoadBMP("CONTINUE1.bmp");
                    SDL_BlitSurface(Continue, NULL, ecran, &positionContinue);
                    break;
                }
     
            }
        }
        //MOUSE EVENT
        if( event.type == SDL_MOUSEMOTION )
        {
            int x=0, y=0 ;
            //Get the mouse offsets
            x = event.motion.x;
            y = event.motion.y;
            //If the mouse is over the button
            if( ( x > positionNewgame.x ) && ( y > positionNewgame.y ) )
     
            {
                SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));
                Newgame = SDL_LoadBMP ("NEWGAME.bmp");
                SDL_BlitSurface(Newgame, NULL, ecran, &positionNewgame);
                SDL_Flip(ecran);
            }
        }
        SDL_FreeSurface(Menu);
        SDL_FreeSurface(Continue);
        SDL_FreeSurface(Newgame);
        SDL_FreeSurface(Option);
        SDL_FreeSurface(Quit);
        Mix_FreeMusic(musique); //Libération de la musique
        Mix_CloseAudio(); //Fermeture de l'API
        SDL_Quit();
        return 0;
    }
    // gcc main.c -lSDL -lSDL_image -lSDL_mixer

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    Bonjour,

    Sachant que ces deux lignes font la même chose, mais que la seconde écrase le titre mis par la première, la première est inutile.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SDL_WM_SetCaption("SDL_Mixer", NULL);
    SDL_WM_SetCaption("Gestion des évènements en SDL", NULL);
    Une très bonne pratique est de vérifier le code de retour de chaque fonction SDL. Notamment le chargement des fichiers qui peut souvent être erroné.

    De plus, votre programme ne peux pas fonctionner en tant que tel, ou disons, tel un programme interactif comme un jeu. En effet, vous ne faites aucune boucle pour traiter les événements. Plus précisément, SDL_PollEvent() retourne une valeur, qu'il y ai eu un événement ou non. Si ce second cas arrive, alors votre test sera obligatoirement faux et votre programme va se finir sans rien faire.
    Du coup, l'histoire est d'utiliser une boucle, pour traiter tous les événements qui arrive, jusqu'à ne plus en avoir dans la pile + faire une boucle infinie qui ne s'arrêtera que si l'utilisateur appuie sur échap, ou ferme la fenêtre avec la croix (ce sont deux événements distincts).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2015
    Messages : 6
    Par défaut
    si vous pouvez m aider par un exemple ou un code qui peut m aider, car j suis debutant en SDL , j ai recontré cette problème depuis 2 semaines, j ai essayé tous sans trouver une solution, si vous pouvez corriger ce code pour que j avance bien dans mon travail et merci

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 156
    Billets dans le blog
    151
    Par défaut
    J'ai expliqué les problèmes. Si je donne le code direct avec la solution, alors vous resterez toutes la vie débutants. La programmation, ça s'apprends en programmant, donc, allez essayer et vous avancerez.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/09/2009, 15h36
  2. aide jeux de plateforme
    Par john93 dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 21/04/2008, 12h09
  3. Codes sources de jeux de plateformes
    Par Loïc M dans le forum Développement 2D, 3D et Jeux
    Réponses: 7
    Dernier message: 28/11/2007, 19h44
  4. Menu jeux vidéo - Apprendre ?
    Par sunshine33 dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 09/06/2006, 10h25
  5. Sons et jeux de plateformes
    Par sourivore dans le forum Flash
    Réponses: 3
    Dernier message: 14/05/2006, 21h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo