2013-06-23 3 views
1

Je fais un jeu de pong. J'ai tout travaillé mais l'utilisateur déplace la pagaie. J'utilise une boucle while (true) dans laquelle toutes les méthodes sont invoquées. Comment puis-je déplacer la pagaie avec WASD? Je veux que le programme continue en attendant la saisie de l'utilisateur. J'ai essayé d'utiliser Console.ReadKey() mais il gèle le programmeEntrée de l'utilisateur lorsque le programme est en cours d'exécution

+1

... Je doute que vous faites un jeu de pong complet dans la connerie de la console, donc euh - quelle ludothèque êtes-vous fait cela avec? – mcmonkey4eva

+0

Pourquoi ne pas mettre Console.ReadKey sur un fil séparé? – CodeCamper

+0

comme je l'ai dit je suis un débutant: \ je n'utilise aucune bibliothèque O_o –

Répondre

1

Alors que je suggère d'utiliser une bibliothèque de jeu (bien que je ne trouve pas de spécifiquement pour un terminal, il est Curses Sharp qui pourrait être utile), ce peut être fait manuellement ..

Le problème principal est que Console.ReadKeybloque (ou «gèle») jusqu'à ce qu'une clé soit disponible pour la lecture; utiliser Console.KeyAvailable pour voir si une clé est actuellement disponible:

while (true) { 
    // Clear out all keys in the queue; there may be multiple (hence "while") 
    while (Console.KeyAvailable) { 
     // Won't block because there is a key available to read. Handle it. 
     var key = Console.ReadKey(true); 
     HandleKey(key); 
    } 
    // Do other processing .. 
    ProcessGameTick(); 
    // .. and be sure to Yield/Sleep to prevent 100% CPU usage. 
    Thread.Sleep(0); 
} 
Questions connexes