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

C# Discussion :

Detecter les saisies d'une manette (XNA) [Débutant]


Sujet :

C#

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 83
    Points : 68
    Points
    68
    Par défaut Detecter les saisies d'une manette (XNA)
    Bonjour,

    Je cherche une façon élégante de détecter les saisies faites avec ma manette (Xbox 360). Après avoir effectué quelque recherche j'ai installé XNA.
    J'arrive a détecter les saisies cependant mon code me semble très lourd : près de 15 lignes pour détecter chaque input avec une boucle while(true)

    Voici mon code
    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
    using System;
    using System.Threading;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Input;
    namespace manette
    {
        static class Program
        {
            static GamePadState currentState;
            private static void Main(string[] args)
            {
                currentState = GamePad.GetState(PlayerIndex.One);
                if (currentState.IsConnected) //Si le pad est bien branché
                {
                    new Thread(CheckInput_A).Start();
                    new Thread(CheckInput_B).Start();
                }
            }
     
            private static void CheckInput_A()
            {
                bool isButtonA_Pressed = false;
                while (true)
                {
                    GamePadState currentState = GamePad.GetState(PlayerIndex.One);
     
                    if (!isButtonA_Pressed && currentState.Buttons.A == ButtonState.Pressed)
                    {
                        Console.WriteLine("A");
                        isButtonA_Pressed = true;
                    }
                    else if (currentState.Buttons.A == ButtonState.Released)
                        isButtonA_Pressed = false;
                }
            }
     
            private static void CheckInput_B()
            {
                bool isButtonB_Pressed = false;
                while (true)
                {
                    GamePadState currentState = GamePad.GetState(PlayerIndex.One);
     
                    if (!isButtonB_Pressed && currentState.Buttons.B == ButtonState.Pressed)
                    {
                        Console.WriteLine("B");
                        isButtonB_Pressed = true;
                    }
                    else if (currentState.Buttons.B == ButtonState.Released)
                        isButtonB_Pressed = false;
                }
            }
        }
    }
    Je viens de me mettre au C#. Je cherche si il existe l’équivalent d'un keyListener (en java) afin de rendre le code plus élégant et moins redondant

    Pourriez vous m’aiguillez sur la démarche a suivre

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Juin 2005
    Messages : 700
    Points : 488
    Points
    488
    Par défaut
    tu ne peux pas faire plus court.

    Si tu veux rendre ton code plus élégant crée une classe et des methodes dont le role sera de dire si telle touche est appuyée.

    Une fois ta classe crée (appellons la KeyLogger) Un beau code pourrait ressembler à ça :

    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
    Main()
    {
       KeyLogger actionTirer = new KeyLogger(Buttons.B);
       actionTirer.KeyPressed+= OnAction;
      KeyLogger actionSauter = new KeyLogger(Buttons.A);
      actionSauter .KeyPressed+= OnJump;
    }
     
    private void OnAction(object sender, EventArgs e)
    {
       Sound.Play("pioupiou");
    }
     
    private void OnJump(object sender, EventArgs e)
    {
        Sound.Play("boingboing");
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 83
    Points : 68
    Points
    68
    Par défaut
    merci pour l exemple

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

Discussions similaires

  1. [Débutant] Récupérer les évènement d'une manette
    Par Gueuz dans le forum C#
    Réponses: 1
    Dernier message: 06/06/2013, 07h42
  2. Comment lire les positions d'une manette de jeu ?
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 11
    Dernier message: 09/02/2013, 13h25
  3. [Toutes versions] detecter les bordure sur une plage
    Par patricktoulon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/04/2012, 16h57
  4. detecter les trous dans une serie entière
    Par Msysteme dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 09/12/2009, 09h07
  5. controler les saisies dans une cellule
    Par lecaire dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/05/2008, 19h14

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