スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

階層型状態遷移機械実装してみた

HSM - GameObj - Trac (http://gameobj.issei.org/trac/wiki/HSM)を参考に階層型状態遷移機械を実装してみたらしい。以下のように使える。多分、メソッド自体に各状態をメソッド自体で表現して、なおかつ振る舞いも持たせたかったんだと思う。LimeWireなんかのソースを見ると非同期IOで状態遷移機械を使っていて、あぁやっぱり同じ事考えるんだなぁとか思ったけど、この実装は埋もれたままだったのでどうせなら公開しておく。
class ExampleStates
  : public StateMachine<ExampleStates>
{
public:
  void Opened(Activity a) {
    switch (a) {
    case FSM::SM_ENTRY :
      break;
    case FSM::SM_EXIT :
      break;
    case FSM::SM_DO :
      transit(&ExampleStates::Closed);
      break;
    }
  }

  void Closed(Activity a) {
    switch (a) {
    case FSM::SM_ENTRY :
      break;
    case FSM::SM_EXIT :
      break;
    case FSM::SM_DO :
      transit(NULL);
      break;
    }
  }
};
...
ExampleStates* fsm = new ExampleStates();
fsm->startUp(&ExampleStates::Opened);
while (!fsm->isFinalState()) {
  fsm->perform();
}
ソース
スポンサーサイト

この記事へのトラックバックURL

http://memolet.blog22.fc2.com/tb.php/950-cf21e102

この記事へのトラックバック

この記事へのコメント



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。