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 :

aide jeux de combat sdl options changer les touches


Sujet :

SDL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut aide jeux de combat sdl options changer les touches
    bonjour voila je vais creer un jeu de combat en 2d en sdl il avance doucement mais il avance , mais j'ai un souci les joueurs ont par defauts certaines touches , hors dans tout les jeux on peux changer les touches, mais comment faire car la pour l'instant le seul trucs que j'ai trouvé c'est un switch de 100 et quelques cases pour capturer la touches et la marqué dans un fichier puis da,s le jeux je reprends les valeurs sauvegardés mais c'est tres long et je me doute bien qu'il dois y avoir plus simple alors je vous pose la question , vous vous faites comment ???
    merci de toute l'aide que vous pourriez m'apporter .

  2. #2
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    voila:

    Tu sais, les touches sont définies par une multitude de constantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SDLK_SPACEBAR, SDLK_BACKSPACE ...
    Le truc que tu fais quand tu testes une touche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (event.key.keysym.sym == unecertainetouche)
      faire quelquechose;
    Dans le code que tu produis, 'unecertainetouche' est probablement une constante du type de celles que j'ai énoncées plus haut.

    Pour pouvoir avoir une touche différente, il suffit de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    cout << "Tapez sur une touche pour l'utiliser ensuite pour tirer" << endl;
    /* On attend que l'utilisateur appuie sur une touche */
    while(SDL_WaitEvent(&event))
    {
      if (event.type == SDL_KEYDOWN)
      {
        /* on définit la touche appuyée comme touche pour tirer */
        touchepourtirer = event.key.keysym.sym
        /* et on sort de la boucle */
        break;
      }
    }
    Après, pour vérifier si l'utilisateur a appuyé sur la touche pour tirer, il faudra faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (event.key.keysym.sym == touchepourtirer)
    De plus, je crois que la structure keysym te permet d'avoir le nom de la touche sur laquelle on appuie, comme ça tu pourras savoir le nom de la touche pour l'afficher (il faut le sauvegarder dans un char* ou une string...).

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 26
    Points : 19
    Points
    19
    Par défaut
    merci a toi , juste une question c'est quoi comme type de variable les key.sym

  4. #4
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    c'est un enum SDLKey

  5. #5
    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
    c'est un enum SDLKey
    Ouais tu trouveras ça dans le fichier keysym.h de SDL je crois ( par exemple la touche Echap vaut 27 )

    cout << "Tapez sur une touche pour l'utiliser ensuite pour tirer" << endl;
    /* On attend que l'utilisateur appuie sur une touche */
    while(SDL_WaitEvent(&event))
    {
    if (event.type == SDL_KEYDOWN)
    {
    /* on définit la touche appuyée comme touche pour tirer */
    touchepourtirer = event.key.keysym.sym
    /* et on sort de la boucle */
    break;
    }
    }
    En fait moi j'ai fait un fichier de configuration dans lequel sont inscrites les valeurs ASCII des touches:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    /*
        Config.cpp
        Fonction qui associe un nombre a une action afin d'Ètablir une configuration
     
    */
    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "Config.h"
     
    int EtablirConfiguration()
    {
        Keystates KEY;
     
        FILE* fichier = NULL;
     
        fichier = fopen("Config.tfc", "r");
        printf("Loading configuration from Config.tfc\n");
     
        if (fichier != NULL)
        {
            fscanf(fichier, "%ld-%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,
            &KEY.Fog);
     
            printf("Fog: %ld\n", KEY.Fog);
     
            fclose(fichier);
        }
        if(fichier == NULL)
        {
            printf("Unable to open Config.tfc\n");
            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
    20
    21
    22
    23
    24
    25
    /*
     
        Config.h
        Actions dÈterminÈe par EtablirConfiguration();
     
    */
    #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, Fog;
        };
     
        int EtablirConfiguration();
     
    #endif
    Apres, il ne te reste plus qu'a faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(event.key.keysym.sym == PARAM.MarcherAvant)
    {faire quelque chose;}

  6. #6
    Membre expérimenté
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Points : 1 452
    Points
    1 452
    Par défaut
    Les valeurs des touches sont aussi dans la documentation de www.libsdl.org ^^

    De plus il serait mieux de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SDL_Key MarcherAvant, Tirer, ....

  7. #7
    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
    De plus il serait mieux de faire:

    Code :
    SDL_Key MarcherAvant, Tirer, ....
    Ouais c'est possible ( je n'y avais pas pensé ^^)

Discussions similaires

  1. Besoin d'aide jeux SDL
    Par Nijooke dans le forum SDL
    Réponses: 2
    Dernier message: 31/10/2012, 08h31
  2. [Batch] Changer les options de langue avec intl.cpl
    Par perlite dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 27/05/2011, 13h55
  3. Réponses: 9
    Dernier message: 25/02/2011, 14h14
  4. changer les options d'un select
    Par shinrei dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 26/07/2006, 16h08
  5. Réponses: 2
    Dernier message: 04/02/2005, 13h23

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