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 :

variable sdl "dernière touche pressée"


Sujet :

SDL

  1. #1
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 723
    Points : 745
    Points
    745
    Par défaut variable sdl "dernière touche pressée"
    Bonjour,

    Ya t'il une sous variable native sdl qui contient la dernière touche du clavier pressée ? C'est pour programmer un élan à l'objet 2d déplacé.

    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
    switch(event.type)
            {
                case SDL_QUIT:
                    continuer = 0;
                    break;
                case SDL_KEYDOWN:
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_UP: // Flèche haut
                            positionGuitar.y -= uniteDeplacement;
                            break;
                        case SDLK_DOWN: // Flèche bas
                            positionGuitar.y += uniteDeplacement;
                            break;
                        case SDLK_RIGHT: // Flèche droite
                            positionGuitar.x += uniteDeplacement;
                            break;
                        case SDLK_LEFT: // Flèche gauche
                            positionGuitar.x -= uniteDeplacement;
                            break;
                    }
                    break;
                case SDL_KEYUP:
                    //...C'est ici que je veux programmer un vecteur vitesse décroissant (forces de frottement de l'air et du sol)
                    break;
            }
    Plutôt que de déclarer une variable direction dans chaque cas de touche pressée, je souhaite récupérer directement la valeur de la sous-variable (si elle existe bien entendu) de la struture event.

  2. #2
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Tu peux utiliser SDLK_LAST

  3. #3
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    Mauvais forum, vaut mieux mettre ca dans le forum SDL.

    Sinon, directement je ne crois pas. Mais bon, tu n'as qu'a faire une variable qui se chargera de faire ce que tu veux ...

    Sinon, tu veux faire un elan ? C'est a dire comme dans l'espace lorsque tu deplace un objet et qu'il bouge tout seule ?


    EDIT : Trouver sur internet :


    http://perso.numericable.fr/fvirtman..._10_resize.cpp
    Un tableau de char : SDLK_LAST est une constante qui défini le nombre maximal de touches. Ainsi, en déclarant cela, je suis
    sur d'avoir un tableau de la bonne taille pouvant garder l'état de toutes touches en mémoire.
    0 en haut, 1 en bas.
    Tu est sur de ce que tu avance pouet_forever ?

  4. #4
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 723
    Points : 745
    Points
    745
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Sinon, directement je ne crois pas. Mais bon, tu n'as qu'a faire une variable qui se chargera de faire ce que tu veux ...
    Citation Envoyé par guitz Voir le message
    Plutôt que de déclarer une variable direction dans chaque cas de touche pressée...
    Citation Envoyé par SofEvans Voir le message
    Sinon, tu veux faire un elan ? C'est a dire comme dans l'espace lorsque tu deplace un objet et qu'il bouge tout seule ?
    Je ne cherche pas l'algorythme, je sais à peut près "matérialiser" un vecteur dans mon code :
    position += vitesse += accélération

    Je cherche à dégraisser mon code, à apprendre à coder "pro" en somme

    PouetForever je teste ça tout de suite avec un fscanf et je te réponds

  5. #5
    Membre éclairé
    Avatar de Pouet_forever
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    671
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 671
    Points : 842
    Points
    842
    Par défaut
    Citation Envoyé par SofEvans Voir le message
    Tu est sur de ce que tu avance pouet_forever ?
    Heuu oui non effectivement, je m'en sert pour initaliser un tableau et non pour avoir la dernière touche

    Sinon il y à une fonction pour récupérer la position des touches du clavier, SDL_GetKeyState

  6. #6
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    On a mal dû se comprendre :

    Plutôt que de déclarer une variable direction dans chaque cas de touche pressée...
    La, j'ai l'impressions qu'a chaque case, tu affecte 1 a une variable parmi tant d'autre.
    Ce que je te propose, c'est de faire UNE variable appelé DERNIERE_TOUCHE de type SDLKey (qui est le type de l'enum de tout les SDLK_...) et de faire quelque chose du style :


    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
     
     
                        case SDLK_UP: // Flèche haut
                            positionGuitar.y -= uniteDeplacement;
                            DERNIERE_TOUCHE = SDLK_UP ; 
                            break;
                        case SDLK_DOWN: // Flèche bas
                            positionGuitar.y += uniteDeplacement;
                            DERNIERE_TOUCHE = SDLK_DOWN ; 
                            break;
                        case SDLK_RIGHT: // Flèche droite
                            positionGuitar.x += uniteDeplacement;
                            DERNIERE_TOUCHE = SDLK_RIGHT ; 
                            break;
                        case SDLK_LEFT: // Flèche gauche
                            positionGuitar.x -= uniteDeplacement;
                            DERNIERE_TOUCHE = SDLK_LEFT ; 
                            break;

  7. #7
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 723
    Points : 745
    Points
    745
    Par défaut
    Veuillez m'escuser admins j'ignorais la présence d'un forum sdl, pourriez-vous déménager ce thread svp ?

  8. #8
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    Citation Envoyé par Pouet_forever Voir le message
    Heuu oui non effectivement, je m'en sert pour initaliser un tableau et non pour avoir la dernière touche

    Sinon il y à une fonction pour récupérer la position des touches du clavier, SDL_GetKeyState
    SDL_GetKeyState te retourne l'etat actuelle des touche, et non la derniere touche presser.

    Donc SDLK_LAST n'indique pas la derniere touche presser mais le nombre de SDLK present dans la structure. Chose tout a fait logique car il est le dernier SDLK dans l'enum. Le nom prete quand meme a confusion, dommage car ca m'aurait bien interresser ca ...

  9. #9
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 723
    Points : 745
    Points
    745
    Par défaut
    Je te remercie SoftEvans, c'est plus propre donc plus lisible de coder ainsi. Je l'ai adapté à mon code et tant pis pour l'absence de sous-variable native prévue à cet effet

  10. #10
    Membre émérite Avatar de SofEvans
    Homme Profil pro
    Développeur C
    Inscrit en
    Mars 2009
    Messages
    1 078
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 078
    Points : 2 338
    Points
    2 338
    Par défaut
    Mais de rien

    Bon courage a toi pour la suite.

  11. #11
    Membre éclairé Avatar de guitz
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juillet 2006
    Messages
    723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Juillet 2006
    Messages : 723
    Points : 745
    Points
    745
    Par défaut
    En fait il y avait encore plus simple, c'est d'utiliser encore une fois la valeur de event.key.keysym.sym qui est restée la même.

Discussions similaires

  1. Variable d'une clause where avec quote
    Par kcizth dans le forum Langage SQL
    Réponses: 1
    Dernier message: 17/04/2008, 15h43
  2. touche clavier quote mysql
    Par chris81 dans le forum Administration
    Réponses: 4
    Dernier message: 19/03/2007, 14h08
  3. [SDL] Gestion des touches claviers problématique
    Par Invité4 dans le forum SDL
    Réponses: 3
    Dernier message: 13/10/2006, 21h15
  4. [TMemo] Comment insérer les touches pressées ?
    Par Alexandre` dans le forum Composants VCL
    Réponses: 8
    Dernier message: 28/03/2005, 16h36

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