Potrzebuję zamiennika do Console.ReadKey(), więc mogę nacisnąć wiele kluczy jednocześnie.

Potrzebuję tego, ponieważ robię silnik gry ASCII Console w C #. Jeśli zrobiłem kontrolowany gracz, mogę poruszać się tylko w górę, w dół, w lewo i w prawo. W ogóle nie ma przekątnej ruchu, tylko dlatego, że konsola.Readkey () umożliwia naciśnięcie jednego klawisza.

Każda pomoc byłaby doceniana! :)

W porządku, instalując pakiety do mojego projektu rozwiązania

Funkcja do wprowadzania kluczy jest to (nazywana jest każda ramka, aby sprawdzić, czy klawisz jest naciśnięty):

public static char Key() // returns the pressed key in char
        {
            ConsoleKeyInfo keyPress;
            if (Console.KeyAvailable) // will read the key only if it is pressed (can cause input lag on low frame rates)
            {
                keyPress = Console.ReadKey(true);
                return char.ToUpper(keyPress.KeyChar);
            }
            return default;
        }
1
Ali107 23 listopad 2020, 11:48

1 odpowiedź

Najlepsza odpowiedź

Znalazłem lepszą wymianę! Wystarczy zainstalować pakiet Nuget o nazwie Ezinput, który pozwoli na lepsze elementy sterujące, które wprowadzając jeden klawisz na raz.

Próbowałem znaleźć przykładów i dokumentacji Ezinput Online, nie mogłem znaleźć niczego. Nauczyłem się, jak go używać samodzielnie. Łatwy, po prostu wpisz Ezinput i Dot w kodzie i pokaże wszystkie rzeczy, które ma do zaoferowania.

Jeśli chcesz nacisnąć W, aby coś tutaj zrobić:

if (EZInput.Keyboard.IsKeyPressed(EZInput.Key.W))
{
    // Do something...
}

Ale najlepiej jest wpisać using EZInput;, dzięki czemu nie musisz wpisywać nazwy za każdym razem.

0
Ali107 7 grudzień 2020, 10:16