switchで帰宅を命じられる理由
Suzumeさんより質問がありましたので理由です。
とりあえずですが「家に帰れ」は単に揶揄です。(一応)
そしてなぜそうした揶揄されることなのかと言えばC++(Cでも……なんですが)でこういう書き方はありえないからです。
executeメソッドは(ゲームだと)毎フレーム呼ばれる「実行処理」であって、クラスがタスクとかに登録されているものと思ってください。(定期的に呼ばれるTimerメソッドと同じように考えてもOKです)
とすると、ミニゲームなら少なくとも、
class CRaceGame : public CTask {
class CBingoGame : public CTask {
的にタスクのインターフェイスを持つクラスにすることで振る舞い(executeの実行内容)を変えることができるわけで、一つのクラスの中に二つのゲームの内容を書かなければならない理由はまるでありません。
CならCで恐らく関数ポインタを使ったタスク(個々のゲームごとにinitHogeGame,execHogeGame,exitHogeGame的な関数をstructに押し込んでタスクに登録する)で実装になると思います。
なので、こういう場合にswitchを使うことはほぼあり得ないです。
しかも、対象のソースをもうちょっと詳しく書くと、(変数名は仮です)
void execute() { switch( ... ) { case HOGE_GAME: // ミニゲーム1の処理(例えばレースゲーム) swtich( scene ) { case INIT: break; case READY: break; case READY_GO: break; case RACING: break; case GOAL: break; } break; case FOO_GAME: // ミニゲーム2の処理(例えばビンゴゲーム) switch( scene ) { case INIT; // 延々同じような処理 } break; } }
のようになっていました。
この人はclassの使い方を明らかに違えており、この人がもし2つでなく3つや4つ(あるいは10)のミニゲームを担当した場合に頭痛の種になること間違いなしです。
まだ何か不明な点があればお知らせくださいまし。