При использовании Console.ReadKey() на второй раз происходит задержка - C#
Формулировка задачи:
Всем доброго времени суток. Создаю простенькую игру в консоли типа тенниса. С помощью ReadKey() считываю нажатую клавишу (LeftArrow, RightArrow). Сам же ReadKey() находиться в цикле while. Проблема в следующем: при зажатии клавиши после первого прочтения клавиши происходит задержка (примерно 1 сек), а потом все нормально идет. Как можно решить данную проблему.
Решение задачи: «При использовании Console.ReadKey() на второй раз происходит задержка»
textual
Листинг программы
class Program { //Координаты объекта static int x = 40; const int y = 10; //С помощью данной структуры будем получать информацию о нажатой клавиши static ConsoleKeyInfo k = new ConsoleKeyInfo(); [STAThread] static void Main(string[] args) { //Делаем курсор невидимым Console.CursorVisible = false; //Метод рисующий объект Draw(); while (true) { //Стчитываем клавишу k = Console.ReadKey(true); //Определяем какая клавиша была нажата и в соответствии с этим изменяем координату х if (k.Key == ConsoleKey.LeftArrow) { while (!Keyboard.IsKeyUp(Key.Left)) { x--; //Метод рисующий объект Draw(); Thread.Sleep(30); } k = new ConsoleKeyInfo(); } else if (k.Key == ConsoleKey.RightArrow) { while (!Keyboard.IsKeyUp(Key.Right)) { x++; //Метод рисующий объект Draw(); Thread.Sleep(30); } k = new ConsoleKeyInfo(); } } } //Метод рисовки static void Draw() { //Очистить консоль Console.Clear(); //Нарисовать объект в нужных координатах Console.SetCursorPosition(x, y); Console.Write('#'); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д