Работа с одновременным нажатием кнопок и изменением состояния переключения

В настоящее время я работаю над приложением (Python2.5), которое обрабатывает ввод с игрового контроллера. Мы назначили кнопку как кнопку Shift, чтобы на лету изменять отображение (тип ввода, значение-> функция) других кнопок. Отображение также зависит от режима, в котором работает наше приложение. Мы сталкиваемся с множеством сложных случаев (например, как обрабатывать press shift, press button x, release shift, release button x), и мне было интересно, есть ли какие-нибудь известные хорошие структуры / архитектуры / шаблоны для работы с такого рода Вход?


person Bjartr    schedule 24.08.2010    source источник


Ответы (1)


Сатемашины - хороший образец для обработки сложных входных данных.

Вот машина, которая обрабатывает вышеуказанную последовательность.

изображение конечного автомата

Вы можете реализовать statemachines с переключателем или шаблоном состояния (см. дизайн конечного автомата Python)

person FabienAndre    schedule 24.08.2010
comment
Мы надеялись избежать явного определения конечного автомата, поскольку он быстро станет громоздким. - person Bjartr; 25.08.2010
comment
Для более подробной информации: мы имеем дело с 10-кнопочным контроллером, в котором одна кнопка меняет то, что делают все остальные при удерживании. Количество состояний быстро увеличивается при работе, например, с любая кнопка, удерживаемая при нажатии Shift, или любые две кнопки, удерживаемые при нажатии Shift, или любые три кнопки, удерживаемые при нажатии Shift. Плюс ко всему обратное нажатие shift до нажатия на shift после и так далее. Это просто запутанный беспорядок - person Bjartr; 08.09.2010