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 :

[SDL] Gestion des événements ne marche pas


Sujet :

SDL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut [SDL] Gestion des événements ne marche pas
    Bonjour à tous,

    J'ai un problème d'une simplicité effarante mais assez embêtant :

    Avec ce code tout simple :
    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
    #include <stdlib.h>
    #include <stdio.h>
    #include <SDL/SDL.h>
     
    void pause();
     
    int main(int argc, char *argv[])
    {
    int continuer = 1;
     
    SDL_Surface *ecran = NULL;
    SDL_Event event;
     
    SDL_Init(SDL_INIT_VIDEO);
     
     
    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE);
    SDL_WM_SetCaption("Chargement d'événements en SDL", NULL);
     
    SDL_Flip(ecran);
     
    while (continuer)
    {
    SDL_WaitEvent(&event);
    switch(event.type)
    {
    case SDL_QUIT:
    continuer = 0;
    break;
    case SDL_KEYDOWN:
    switch (event.key.keysym.sym)
    {
    case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
    continuer = 0;
    break;
    default:break;
    }
    break;
    default:break;
    }
    }
     
     
     
     
     
    pause();
     
    SDL_Quit();
     
    return EXIT_SUCCESS;
    }
     
    void pause()
    {
    int continuer = 1;
    SDL_Event event;
     
    while (continuer)
    {
    SDL_WaitEvent(&event);
    switch(event.type)
    {
    case SDL_QUIT:
    continuer = 0;
    }
    }
    }
    Lorsque je compile, pas de problème.
    Mais je n'arrive pas à arrêter le programme : j'ai beau appuyer sur ECHAP 40 fois, aucun résultat.
    Et ça me fait ça avec toutes les touches, quel que soit le nom de la touche que je met dans mon code ; et que ce soit en mode Debug ou Release.


    Voilà, en espérant avoir été clair et que je ne suis pas le trois cent cinquantième sujet posant ce problème,

    Merci d'avance,

    Signé : Moi:-P

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Pas mal de chose a dire:
    Alors qql petite regle , il y a un une balise pour le code et il y a une section SDL.

    Normalement je te dirai RTFM.(On gros va lire la doc officiel).
    Pour ton problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	case SDL_KEYDOWN:
                    if(event.key.keysym.sym)
    		{
    			case SDLK_ESCAPE: /* Appui sur la touche Echap, on arrête le programme */
    				continuer = 0;
    			break;
    		}
    	break;
    Et pense a incrémenter,ton code, il existe de très bon tutoriels sur developpez.com pour débutant et te donnera de bonne habitude,parce que tous ce que je vois de sortir d'autres sites, codent comme des pieds =/.

    Voila un bon tutoriel C qui te permettra réellement savoir ce que tu fait http://melem.developpez.com/tutoriel...ion-langage-c/
    Parce que je vois pas intérêt de cette fonction pause(); .

  3. #3
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Je suis totalement d'accord ,rien a redire

    Pour ma part aussi ce qui me pousse a dire ceci est que j'ai connu le même type expérience,comme tu dis ils font du C(tous est relative),mais que j'ai impression qu'il savent pas vraiment ce qu'ils font ,comme system("pause"); .
    Je ne fais pas dire tous ce que j'ai pu remarquer comme erreur banal,problème incrémentation,fonction obsolète,variable global et j'y passe.

    Pour les tuto les cours et tutoriels programmation de developpez.com sont les plus complet et je trouve que il faut mieux être clair des le début (que le C faut être rigoureux et savoir ce qu'on fait),que quelqu'un qui croit savoir mais qui na sait pas grand chose finalement =/.

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 894
    Points : 219 533
    Points
    219 533
    Billets dans le blog
    124
    Par défaut
    C'est bien joli votre conversation ... mais entre temps, je n'ai pas vu le problème du code, ni de solution.
    Votre code, Kannagi, mélange un if et un case O_o alors que je ne le trouve pas dans le message d'origine.

    @lucas-84: Le problème, c'est que votre code marche très bien, mais que vous appelez la fonction 'pause()' à la fin. Celle ci ne gère pas l'appuie sur la touche échape. Donc, faut choisir, soit de géré les évènement dans votre main, avec la boucle while ... soit dans la fonction pause ... :p

  5. #5
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 225
    Points : 10 168
    Points
    10 168
    Par défaut
    Bah il faut qu'il rajouter le code sur la fonction pause pour qu'il puisse quitter son programme.,donc j'ai bien répondu.
    ah oui faute de frappe (ou plutôt habitude) me suis loupé entre le if et le switch ,je gère mes événement clavier beaucoup plus différemment =P

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Bon alors tout d'abord merci à tous,

    Je ne vais pas m'étendre sur les remarques sur le sdz, mais je tiens juste à signaler que je n'en tire aucune honte (et je ne vois pas pourquoi j'en aurais d'ailleurs !). Mais je ne vois pas vraiment en quoi le fait que je viens du sdz change quoi que ce soit au problème. J'ai choisis de suivre ce tutoriel car c'est plus simple et que je ne compte pas faire ma vie là-dessus : c'est pour moi juste un passe-temps pour le moment

    Pour finir, je tiens bien entendu à m'excuser des erreurs que j'ai commise (mauvaise section, mauvaise balise code). Quant à indenter mon code, je le fais tout le temps mais par erreur je n'ai pas copié le code de mon IDE mais un publié sur le site.

    Voilà merci tout de même pour les réponses, sujet résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion des événements des joysticks avec la SDL
    Par LittleWhite dans le forum Développement 2D, 3D et Jeux
    Réponses: 0
    Dernier message: 07/02/2013, 22h34
  2. [AC-2003] Mon Module de gestion des états ne marche pas
    Par sebac dans le forum IHM
    Réponses: 9
    Dernier message: 27/11/2009, 10h33
  3. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07
  4. [JTable] gestion des événements
    Par soulhouf dans le forum Composants
    Réponses: 4
    Dernier message: 19/08/2005, 13h21
  5. Gestion des évènements lors d'un clique sur une image.
    Par yoghisan dans le forum Débuter
    Réponses: 7
    Dernier message: 23/06/2005, 19h04

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