2010-08-24 21 views
0

Je travaille actuellement sur une application (Python2.5) qui gère les entrées d'un contrôleur de jeu. Nous avons désigné un bouton comme un bouton shift pour changer le mapping (inputtype, value-> function) des autres boutons à la volée. Le mappage dépend également du mode dans lequel fonctionne notre application. Nous rencontrons beaucoup de cas à la pointe du poil (par exemple comment gérer press shift, press button x, release shift, release button x) et je me demandais s'il y a de bonnes structures/architectures/modèles connus pour faire face à ce genre de contribution?Faire face aux pressions simultanées sur les boutons et changer les états de changement

Répondre

2

Les Satemachines sont un bon modèle pour gérer les entrées complexes.

Voici une machine qui gère la séquence ci-dessus.

state machine picture

Vous pouvez mettre en œuvre avec motif à états commutateur ou état (voir Python state-machine design)

+0

Nous avons l'espoir d'éviter une machine d'état explicite car il va rapidement devenir difficile à manier. – Bjartr

+0

Pour mettre un peu plus de détails: Nous avons affaire à un contrôleur à 10 boutons où un bouton change ce que tous les autres font quand ils sont maintenus enfoncés. Le nombre d'états explose rapidement lorsqu'il s'agit par exemple de tout bouton maintenu enfoncé lorsque vous appuyez sur Maj ou sur deux boutons maintenus lorsque vous appuyez sur Maj ou sur trois boutons maintenus lorsque vous appuyez sur Shift. Plus tout le contraire de décalage tenu avant vs décalage appuyé après et ainsi de suite. C'est juste devenu un désordre embrouillé – Bjartr