ステートパターン
有限状態機械(FSM)
例えばアクションゲームで、「ジャンプしている間はジャンプできない」を作る時がステートパターンの出番
https://gyazo.com/eecf4301e54aea506811dc52d2b9f7a7
1度に1つの状態しかとることができない
各状態には遷移条件と遷移先が設定される
「状態」はclassをそれぞれ書いたり、enumで済ませることもある
フラグで済ませるのは危険な兆候
キャラクターアニメーションもこの機構を使うことが多い
ただ1度に1つの状態を厳密には守らずに、ブレンドしたりする
プッシュダウンオートマトン
プッシュダウンオートマトンは通常の有限オートマトンとは以下の二点で異なる。
スタックのトップを使って成すべき状態遷移を判断する。
遷移実行の一部としてスタック操作を行うことが出来る。
プッシュダウン・オートマトンは入力信号、現在状態、スタックのトップを使って状態遷移表内の位置を指定することで遷移先を選択する。通常の有限オートマトンは現在状態と入力信号しかなく、スタックは持たない。プッシュダウン・オートマトンはスタックを遷移先選択のパラメータに加える。つまり、入力信号と現在状態とスタックのトップにある文字から遷移先を選択する。
履歴の概念をFSMに追加する