Existe-t-il un défaut de conception lorsque l'état d'une entité n'utilise pas pleinement enter (), execute () et exit ()?

9

Je suis l'exemple du jeu de programmation de Mat Buckland, par exemple, et je trouve que je n'ai pas toujours recours à enter (), execute () et exit () sur l'état d'une entité. Par exemple, dans un RPG, une arme peut avoir un état équipé, et je peux utiliser enter () et exit () pour cet état pour ajouter ou soustraire au modificateur de capacité d'un joueur, mais il n'y a pas vraiment besoin d'exécuter ( ). Est-ce un défaut de conception dans mon moteur ou une lacune de cette approche?

Charanor
la source

Réponses:

8

N'ayant pas lu le livre, ces appels sonnent comme des points d'entrée normaux pour une machine d'état. Pour comprendre les appels, regardons ce qu'ils font.

enter () - exécuté lorsque l'état est activé.

execute () - exécuté lorsque l'état est activé.

exit () - exécuté lorsque l'état est désactivé.

Ils conviennent à tout type de machine d'état. Certaines machines n'ont besoin que des appels «exécuter», d'autres ont besoin des entrées et sorties et d'autres encore ont besoin des trois.

Exemple 1 : gâchette de mitrailleuse.

  • Exécuter: tirer des balles à un rythme défini.

Exemple 2 : Pont de force

  • Entrée: faire apparaître le pont
  • Sortie: faire disparaître le pont

Exemple 3 : armure de puissance personnelle.

  • Entrez: donnez au joueur une protection supplémentaire
  • Exécuter: décharger les batteries
  • Quitter: supprimer la protection supplémentaire
Jari Komppa
la source
8

Ce n'est pas nécessairement le signe d'un défaut. Toutes les entités ou tous les États n'auront pas une utilisation pour chaque méthode disponible. Juste laisser la méthode execute () vide serait bien, IMO.

Nathan Reed
la source