Bonjour,

Je suis entrain de créer un jeu genre Pacman pour découvrir le C# avec Visual 2008. Et je bloque depuis plusieurs jours sur la détection d'appui d'une à deux touches sans bloquer le programme.
J'ai fini par utilisé un thread qui boucle sur la détection avec la commande ''touche = Console.ReadKey(); “ . La valeur de la touche étant récupérer dans le programme principale par une propriété
Voici le code de la class où travaille le thread :
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
class Touche
    {
        private char TempDir;
        protected ConsoleKeyInfo touche;
 
        public void TestTouche()
        {
            do
            { touche = Console.ReadKey();
               TempDir = touche.KeyChar;
            } while (TempDir != 'e');
        }
 
 
        public char Direction
        {
            get
            {
                return TempDir;
            }
        }
    }
Cela fonctionne pas trop mal pour gérer une seule touche à la fois. Mais lorsque j'ai besoin de gérer deux Pacmans alors là rien ne va plus.
Je pense que le problème vient du fait que la commande ReadKey() est bloquante. J'ai vu qu'il n'y avait pas d'équivalent au kbhit() du C++ en C#. Et je me demande donc quelle peut être la démarche à suivre pour détecter l'appui sur une touche (z,q,s ou d) et une autre touche (o,k,l ou m) en même temps.

J'ai vu beaucoup de message forum qui parlait des commande KeyPressEventArgs, KeyUp, KeyDown.. Mais je n'ai toujours pas réussi à en comprendre le fonctionnement.

J'espère que vous pourrez me débloquer par quelques indications. J'ai regardé dans la FAQ sans trouver mais n'hésiter pas à me le dire si la réponse est déjà sur ce forum.

Merci de votre temps