Нужно нажать одну и ту же клавишу 5 раз, чтобы переместить один раз C#

#c#

#c#

Вопрос:

Таким образом, по сути, символ представляет собой 7 в 2d-массиве из 0, я могу перемещать его по массиву, но мне нужно нажать клавишу пять раз, чтобы переместить один раз. Кто-нибудь знает, как это исправить?

   public class Dwarf
    {
        public int x = 5;
        public int y = 5;

        public void Move()

        {
           if(Console.ReadKey(true).Key == ConsoleKey.W)
            {
                y--;
            }
            if (Console.ReadKey(true).Key == ConsoleKey.S)
            {
                y  ;
            }
            if (Console.ReadKey(true).Key == ConsoleKey.D)
            {
                x  ;
            }
            if (Console.ReadKey(true).Key == ConsoleKey.A)
            {
                x--;
            }
            Console.Clear();
        }
       

                  


     
 

Комментарии:

1. Также можете поделиться, как вы используете этот класс?

Ответ №1:

При каждом вызове Console.ReadKey программа будет извлекать входные данные. То, как вы написали свой код прямо сейчас, он всегда вызывается для каждого ключа, который вы проверяете. Что вам нужно сделать, это вызвать метод один раз, сохранить результат и использовать его вместо вашей логики:

 var keyPress = Console.ReadKey(true);

if (keyPress.Key == ConsoleKey.W)
{
    y--;
}
//etc
 

Комментарии:

1. Спасибо, это немного устранило проблему, она увеличилась с 5 нажатий до 2. Есть ли шанс, что я смогу сократить его до одного нажатия?

2. Вам нужно будет показать свой код (не только то, что вы показываете выше (исправлено), но и код, который его вызывает).

3.@MatthewHeron Тогда у вас есть что-то еще, что блокирует ввод. Важно отметить, что Console.ReadKey блоки.