Noxalus
Messages postés12Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention24 avril 2011
-
12 déc. 2009 à 23:44
Noxalus
Messages postés12Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention24 avril 2011
-
15 déc. 2009 à 20:24
Salut à tous ! :)
Je suis en train de réaliser un petit snake en mode console en C# pour m'entrainer et mieux maîtriser ce langage. Seulement, lorsque je lance mon projet, Visual Studio C# 2008 me sort:
Le thread appelant doit être en mode STA, comme l'exigent de nombreux composants de l'interface utilisateur.
Tout en me montrant cette ligne:
if(Keyboard.IsKeyDown(Key.Left) && direction !0 || direction 2)
Ce ne m'a pas tellement étonné puisque avant même de me lancer dans le reste du code, un simple test de ce genre me donnait la même erreur:
Noxalus
Messages postés12Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention24 avril 2011 15 déc. 2009 à 00:57
Merci pour la réponse ! :)
Par contre, bien qu'il n'y ait plus d'erreur, ça ne marche pas comme je voudrais :(
Voici mon code de test:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using System.Threading;
namespace Touche
{
class Program
{
[STAThread]
static void Main(string[] args)
{
while (!Keyboard.IsKeyDown(Key.F4))
{
Console.WriteLine("Test !");
Thread.Sleep(1000);
}
}
}
}
J'ai beau marteler la touche F4 de mon clavier, je ne sors jamais de la boucle O_o
C'est normal ? Comment faire autrement pour détecter l'appui de touches en temps réel ?
JeremyLecouvert
Messages postés139Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention10 mai 20102 15 déc. 2009 à 10:19
Désolé, je ne me suis jamais intéressé à l'attente d'une frappe au clavier... mais vu d'ici, je me pose une question: ton prog dort 1 seconde, puis exécute un test qui lui prend un pouième de seconde, puis re-dodo... autrement dit, il faut vraiment appuyer sur la touche au bon moment!! Est-ce que tu as essayé en restant appuyé sur la touche?
Perso, pour intercepter une frappe à n'importe quel moment, je le ferais plutôt comme ça (simple question d'algorithme, je ne cherche pas à savoir si le code fonctionne puisque je ne maîtrise pas le clavier!):
[STAThread]
static void Main(string[] args)
{
bool Fin= false;
while (!Fin)
{
if(Keyboard.IsKeyDown(Key.F4))
Fin = true;
else
Console.Write(".");
}
}
Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
Noxalus
Messages postés12Date d'inscriptionjeudi 28 janvier 2010StatutMembreDernière intervention24 avril 2011 15 déc. 2009 à 20:24
Oui, je me doutais bien que l'appui d'une touche devait se faire très rapidement et j'ai même essayé en restant appuyé => même résultat
Sinon, ton code est à peu près l'équivalent au miens (si ce n'est qu'on utilise une variable en plus). Mais j'ai quand même testé. Malheureusement, c'est toujours la même chose. Enfin non, je vois plus "Test", mais y a des points partout :p