![]() |
![]() |
ShpateL |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Репутация: ![]() ![]() ![]() |
Сабж... Сейчас пишу эту игру и столкнулся с такой проблемой: когда один игрок зажал клавишу, то другой не может переместить свою доску: комп на нажатие клавиши просто не реагирует. Одним словом, доски не могут двигаться одновременно. Как можно исправить эту ошибку? А, кстати, пишу я на одной сишной библиотеке, но ИМХО это дела не меняет. Вот фрагмент проги:
|
![]() ![]() |
TarasBer |
![]()
Сообщение
#2
|
![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я в сях не силён, поэтому дам паскальный ответ, суть не меняется, я думаю.
В ситуациях, когда нажимается сразу много клавиш, я уже отказываюсь от чтения из клавиатурного буфера (редкей). Я бы повесил на прерывание $09 процедуру с таким кодом:
Пояснение: Old09 - вызов стандартного обработчика прерывания. WasK: byte; KeyState: array [0 .. 31] of byte; То есть это переменная из 128 битов. Каждой клавиши соответствует свой бит. Система такая примерно - клавиши клавиатуры, начаиная с ескейпа, нумеруются слева направо сверху вниз. Нумерация с единицы. В общем, сами посмотрите, какой клавише какая цифра соответствует. Вот из этого массива KeyState и надо вычленить бит с соответствующим номером:
Изначально массиы KeyState следует заполнить нулями. НО: у меня не вышло зафиксировать одновременное нажатие 3х буквенных клавиш (A, B и C). Подозреваю, что тут уже проблема физическая - клавиатура так спаяна. -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 15.07.2025 5:49 |