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 :

Switch: pas de variables, comment faire ?


Sujet :

SDL

  1. #1
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut Switch: pas de variables, comment faire ?
    J'utilise un fichier de configuration ( Config.tfc ) que mon programme lit pour y récupérer une série de chiffres : ces chiffres sont sensés remplacer les SDLK_UP et autres mots clé qui désignent les touches du clavier ( par exemple, le SDLK_ESCAPE vaut 27, si si essayez ).
    Ensuite, je stoque les chiffres dans une classe ( keystates ) et je remplace les SDLK dans le switch de la boucle qui gère les évènements par les variables qui contiennent les nombres sus nommés.
    Le seul probleme c'est que je ne peux pas intégrer dans un switch des variables... Comment faire ?

    Config.cpp

    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
    int EtablirConfiguration()
    {
        Keystates KEY;
     
        FILE* fichier = NULL;
     
        fichier = fopen("Config.tfc", "r");
     
        if (fichier != NULL)
        {
            fscanf(fichier, "%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld-%ld", &KEY.MarcherAvant,
            &KEY.MarcherArriere,&KEY.MarcherGauche, &KEY.MarcherDroite, &KEY.Acheter, &KEY.Tirer, &KEY.Recharger,
            &KEY.Arme01, &KEY.Arme02, &KEY.Arme03, &KEY.Arme04, &KEY.Quitter, &KEY.InfoMap, &KEY.Fullscreen);
     
            fclose(fichier);
        }
        if(fichier == NULL)
        {
            MessageBox(0,"Impossible d'ouvrir Config.tfc",NULL,0);
            return 1;
        }
     
        return 0;
    }
    Config.h
    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
     #ifndef DEF_CONFIG
    #define DEF_CONFIG
     
        class Keystates
        {
            public:
     
            int MarcherAvant, MarcherArriere, MarcherGauche, MarcherDroite;
     
            int Acheter, Tirer, Recharger, Arme01, Arme02, Arme03, Arme04;
     
            int Quitter, InfoMap;
     
            int Fullscreen;
        };
     
        int EtablirConfiguration();
     
    #endif
    Ce que je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void Player::handle_input()
    {
        Keystates KEY;
     
        if( event.type == SDL_KEYDOWN )
        {
            switch( event.key.keysym.sym )
            {
                case KEY.Quitter: free_support(); break; /* C'est ici que ça bloque */
            }
     
         }
    }

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Tu ne peux pas, tu vas devoir faire des if/else.

    De toute facon, ce n'est pas forcément plus mal, tu pourras trier les touches par leur chance d'apparaître.

    Ex: l'utilisateur va forcément plus bouger que tenter de quitter le jeu

    Jc

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    D'abord :

    Citation Envoyé par ironzorg
    par exemple, le SDLK_ESCAPE vaut 27, si si essayez
    Rien que de très normal, c'est la valeur ASCII de ESC

    Ensuite, pour ton problème, il y a 3 solutions :

    Faire une énumération (à la place de ton tableau) (mot-clé enum)
    Remplacer tes valeurs par des define
    faire un sur-type de ta liste

    Mais je m'aperçois que ton code est du C++.. Là j'arrête.. On est sur le forumC, et je ne connais pas C++...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. [Débutant] SqlConnection("Data Source=ma variable") comment faire
    Par CLion dans le forum C#
    Réponses: 1
    Dernier message: 04/06/2015, 07h55
  2. Réponses: 3
    Dernier message: 09/07/2013, 10h34
  3. [Tableaux] Switch avec deux variables, comment ?
    Par sandddy dans le forum Langage
    Réponses: 5
    Dernier message: 27/09/2007, 10h14
  4. Switch: pas de variables, comment faire ?
    Par ironzorg dans le forum C
    Réponses: 2
    Dernier message: 30/05/2007, 18h18
  5. [Always on top][pas de MFC] comment faire
    Par magnus2005 dans le forum Windows
    Réponses: 3
    Dernier message: 20/04/2007, 11h45

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