C'è un difetto di progettazione quando lo stato di un'entità non utilizza completamente enter (), execute () e exit ()?


9

Sto seguendo l'intelligenza artificiale del gioco di programmazione di Mat Buckland con l'esempio e trovo che non ho sempre uso di enter (), execute () e exit () sullo stato di un'entità. Ad esempio, in un gioco di ruolo, un'arma può avere uno stato equipaggiato e io posso usare enter () ed exit () per quello stato per aggiungere o sottrarre il modificatore di abilità di un giocatore, ma non è davvero necessario eseguire ( ). È un difetto di progettazione nel mio motore o un difetto di questo approccio?

Risposte:


8

Non avendo letto il libro, quelle chiamate sembrano normali punti di ingresso per una macchina a stati. Per capire le chiamate, diamo un'occhiata a cosa fanno.

enter () - eseguito quando lo stato è attivato.

execute () - eseguito mentre lo stato è attivato.

exit () - eseguito quando lo stato è disattivato.

Si adattano a qualsiasi tipo di macchina statale. Alcune macchine necessitano solo delle chiamate "esegui", altre richiedono "invio" e "uscita", altre ancora tutte e tre.

Esempio 1 : grilletto della mitragliatrice.

  • Eseguire: proiettili di fuoco a velocità fissa.

Esempio 2 : Force bridge

  • Enter: fa apparire il bridge
  • Esci: fai sparire il ponte

Esempio 3 : armatura potenziata personale.

  • Enter: dai al giocatore una protezione extra
  • Eseguire: scaricare le batterie
  • Esci: rimuove la protezione aggiuntiva

8

Non è necessariamente un segno di alcun difetto. Non tutte le entità o stati avranno un uso per ogni metodo disponibile. Lasciare vuoto il metodo execute () andrebbe bene, IMO.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.