При использовании 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('#');
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д