В настоящее время я работаю над приложением (Python2.5), которое обрабатывает ввод с игрового контроллера. Мы назначили кнопку как кнопку Shift, чтобы на лету изменять отображение (тип ввода, значение-> функция) других кнопок. Отображение также зависит от режима, в котором работает наше приложение. Мы сталкиваемся с множеством сложных случаев (например, как обрабатывать press shift, press button x, release shift, release button x
), и мне было интересно, есть ли какие-нибудь известные хорошие структуры / архитектуры / шаблоны для работы с такого рода Вход?
Работа с одновременным нажатием кнопок и изменением состояния переключения
Ответы (1)
Сатемашины - хороший образец для обработки сложных входных данных.
Вот машина, которая обрабатывает вышеуказанную последовательность.
Вы можете реализовать statemachines с переключателем или шаблоном состояния (см. дизайн конечного автомата Python)
person
FabienAndre
schedule
24.08.2010
Мы надеялись избежать явного определения конечного автомата, поскольку он быстро станет громоздким.
- person Bjartr; 25.08.2010
Для более подробной информации: мы имеем дело с 10-кнопочным контроллером, в котором одна кнопка меняет то, что делают все остальные при удерживании. Количество состояний быстро увеличивается при работе, например, с любая кнопка, удерживаемая при нажатии Shift, или любые две кнопки, удерживаемые при нажатии Shift, или любые три кнопки, удерживаемые при нажатии Shift. Плюс ко всему обратное нажатие shift до нажатия на shift после и так далее. Это просто запутанный беспорядок
- person Bjartr; 08.09.2010