Czy istnieje błąd projektowy, gdy stan encji nie w pełni wykorzystuje enter (), execute () i exit ()?

9

Podążam za przykładem Maty Buckland w grze programistycznej AI i stwierdzam, że nie zawsze używam enter (), execute () i exit () w stanie jednostki. Na przykład w grze RPG broń może mieć stan na wyposażeniu, a ja mogę użyć enter () i exit () dla tego stanu, aby dodać lub odjąć modyfikator umiejętności gracza, ale tak naprawdę nie ma potrzeby wykonywania ( ). Czy to wada konstrukcyjna mojego silnika, czy wada tego podejścia?

Charanor
źródło

Odpowiedzi:

8

Nie czytając książki, połączenia te brzmią jak normalne punkty wejścia do automatu stanów. Aby zrozumieć połączenia, spójrzmy na to, co robią.

enter () - wykonywane, gdy stan jest aktywowany.

execute () - wykonywane, gdy stan jest aktywny.

exit () - wykonywane, gdy stan jest dezaktywowany.

Pasują one do każdego rodzaju maszyny stanowej. Niektóre maszyny potrzebują tylko wywołań „wykonania”, inne wymagają „wejścia” i „wyjścia”, a jeszcze inne wszystkich trzech.

Przykład 1 : Spust karabinu maszynowego.

  • Wykonaj: strzelaj pociskami z ustaloną prędkością.

Przykład 2 : Wymuś most

  • Enter: wyświetl most
  • Wyjdź: spraw, aby most zniknął

Przykład 3 : Pancerz osobisty.

  • Enter: daj graczowi dodatkową ochronę
  • Wykonaj: rozładuj baterie
  • Wyjdź: usuń dodatkową ochronę
Jari Komppa
źródło
8

Nie musi to oznaczać żadnej wady. Nie każda jednostka lub stan będzie miał zastosowanie do każdej dostępnej metody. Pozostawienie pustej metody execute () byłoby w porządku, IMO.

Nathan Reed
źródło