Как вы используете msvcrt.getch для извлечения и использования ввода?

Мне нужно создать программу / игру на python, где пользователь быстро вводит 2 клавиши, такие как клавиши z или x, и это заставляет их персонажа двигаться вперед при каждом нажатии в правильном порядке. Я провел много исследований и решил, что должен использовать msvcrt.getch() для получения ввода, но всякий раз, когда я пытаюсь это сделать, он сохраняет ввод как байт, который я не могу использовать, я относительно новичок в программировании и мог использовать некоторую помощь, объясняя функцию.

1 ответ

Решение

Вам нужно декодировать возвращаемое значение в str объект:

msvcrt.getch().decode('ASCII')

интерпретировал бы байт как кодовую точку ASCII, например. Возможно, вам придется использовать другую кодировку в зависимости от раскладки клавиатуры и локали, но msvcrt.getch() API специально работает только с символами ASCII в соответствии с документацией:

Модуль реализует как обычный, так и широкий варианты char консольного интерфейса ввода-вывода api. Обычный API работает только с символами ASCII и имеет ограниченное применение для интернационализированных приложений. По возможности следует использовать широкий API-интерфейс char.

Вы, вероятно, хотите использовать msvcrt.getwch() вместо этого, чтобы получить значения Unicode напрямую; метод поддерживает не только кодовые точки ASCII.

Другие вопросы по тегам