ゲームを作る時にお勧めしたいクラス - ステートマシン -

なんでステートマシンを勧めるの?

ゲームにはいたる所に状態、つまりステートがあります。大きいところだとタイトルからゲーム本編、エンディングといった状態があります。

graph TD
タイトル <--> ゲーム本編
ゲーム本編 --> ゲームオーバー
ゲーム本編 --> エンディング
ゲームオーバー --> タイトル
エンディング --> タイトル

キャラクターにも、移動や待機、攻撃、ダメージ、死亡などの状態があります。

graph TD
移動 <--> 待機
移動 <--> 攻撃
待機 <--> 攻撃
移動 <--> ダメージ
待機 <--> ダメージ
移動 --> 死亡
待機 --> 死亡
攻撃 --> 死亡

このようにゲームにはステート管理する事がとても多いのですが、この状態管理をswitch文で処理している事を学生作品でよく見かけたので、ステートマシンを紹介します。

switchによる状態管理の例

switch (state)
{
case StateA:
  stateA();
  break;
case StateB:
  stateB();
  break;
}

動画

サンプルコード

StateMachine.cpp