Existe uma falha de design quando o estado de uma entidade não utiliza totalmente enter (), execute () e exit ()?

9

Estou seguindo o jogo AI de programação de Mat Buckland, por exemplo, e acho que nem sempre tenho uso para enter (), execute () e exit () no estado de uma entidade. Por exemplo, em um RPG, uma arma pode ter um estado equipado e eu posso usar enter () e exit () para esse estado para adicionar ou subtrair ao modificador de habilidade de um jogador, mas não há realmente a necessidade de executar ( ) Isso é uma falha de design no meu mecanismo ou uma falha dessa abordagem?

Charanor
fonte

Respostas:

8

Não tendo lido o livro, essas chamadas soam como pontos de entrada normais para uma máquina de estado. Para entender as chamadas, vejamos o que elas fazem.

enter () - executado quando o estado é ativado.

execute () - executado enquanto o estado está ativado.

exit () - executado quando o estado está desativado.

Eles se encaixam em qualquer tipo de máquina de estado. Algumas máquinas precisam apenas das chamadas 'execute', outras precisam do 'enter' e 'exit', e outras ainda precisam das três.

Exemplo 1 : Gatilho de metralhadora.

  • Execute: dispare balas na taxa definida.

Exemplo 2 : ponte de força

  • Enter: fazer a ponte aparecer
  • Sair: fazer a ponte desaparecer

Exemplo 3 : Armadura de poder pessoal.

  • Entrar: dar proteção extra ao jogador
  • Executar: descarregar baterias
  • Sair: remova proteção extra
Jari Komppa
fonte
8

Não é necessariamente um sinal de qualquer falha. Nem toda entidade ou estado terá uso para todos os métodos disponíveis. Deixar o método execute () vazio seria bom, IMO.

Nathan Reed
fonte