Пользуйтесь на здоровье)) но в будущем при разработке блока управления, если предполагается джойстик, лучше сразу заложить возможность диагональных нажатий,
а также одновременных нажатий кнопки "огонь" или что там на ней будет, да и второй кнопки тоже. Код усложнится, зато игровой процесс станет интереснее.
Реализация клавиатуры Вектора, как понимаю, отслеживает только одну клавишу в момент времени (как на БК), это плохо, но терпимо. Для игр есть джойстик.
А чтобы реализовать момент с "диагоналями и fire", процедура скана выдает на выходе не код "клавиши", а суммарную маску нажатых клавиш.
То бишь, в принципе, можно брать прочитанный байт из порта джойстика и обрабатывать все "нажатые" биты, изменяя с их учетом координаты спрайта, например.
Если были нажаты биты влево и вверх - уменьшаем Х, увеличиваем Y (или уменьшаем, смотря откуда считается начало экрана, сверху или снизу).
Для особого прикола можно одновременно обработать и влево, и вправо, главное, чтобы при этом итоговая координата не изменилась (+1-1 равно ноль).
Зачем? Для сопряжения с управлением клавиатурой. Сканируем коды с нее (если клава позволяет, как на Спектруме, опросить сразу несколько клавиш)
или код (если можно опросить только одну), интерпретируем в коды направлений/нажатий и суммируем это с байтом из порта джойстика по OR.
На выходе получим универсальное значение от всех устройств, с которым проще работать. Надеюсь, идея понятна. С реализацией, если что, поможем.





Ответить с цитированием