Bonjour tout le monde!
Je suis en train de coder un jeux tron pour mon ecole, et donc pour cela j'ai besoin de detecter les entrees claviers. Le jeu etant un jeu en locale, tous les joueurs joues sur le meme clavier, donc j'ai besoin que tous mes players detectent le console.readkeys. Je sais pas si j'ai été claire mais voici mon code test:
Mon program.cs
la classe player:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public class Program { public enum Action { up, left, right, down, none }; static void Main(string[] args) { player player2 = new player("2"); player player1 = new player("1"); } } }
Et la classe keyboardInput:
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 class player { KeyboardInput input; Program.Action direction; string pseudo; public player(string pseudo) { this.pseudo = pseudo; input = new KeyboardInput(); Thread inputThread = new Thread(inputT); inputThread.Start(); } public void inputT() { Program.Action tempDirection; while (true) { tempDirection = input.GetNextAction(); Console.WriteLine(pseudo + " " + tempDirection); if (tempDirection != Program.Action.none) direction = tempDirection; } } }
Voici mon probleme: quand je lance mon programme, si j'appuie sur une touche, seulement 1 player la recoit, puis si je reappuie c'est au tour d'un autre, etc...
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 public class KeyboardInput: Program { private ConsoleKey up, down, left, right; public KeyboardInput() { up = ConsoleKey.Z; down = ConsoleKey.S; left = ConsoleKey.Q; right = ConsoleKey.D; } public KeyboardInput(ConsoleKey up, ConsoleKey down, ConsoleKey left, ConsoleKey right) { this.up = up; this.down = down; this.left = left; this.right = right; } public Action GetNextAction() { ConsoleKey input = Console.ReadKey(true).Key; if (input == up) return Action.up; if (input == down) return Action.down; if (input == left) return Action.left; if (input == right) return Action.right; return Action.none; } }
Resultat:
Alors que je voudrais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 2 left 1 down 2 right 1 up 2 left 1 down 2 right 1 up 2 left 1 down 2 right
Avez vous une idée?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 2 left 1 left 2 down 1 down 2 right 1 right Etc...
Merci!
Partager