08/05/26 03:53:53 J4tqU4Kx
あー、ごめん。「点滅」は色とは関係ないつもりだった。実際は黄色か赤だろうけど。
つまり、State は4つで、夜間は殴ってもなにも起きなくていい。
つか、自分で仕様変更して自分でソース書いてるんだから、
「状態の数が違う」みたいな豪快なバグは入れないよ。
でも、状態が6つだとしても、>>158 はおかしいだろ。
夜間に殴りつづけると、点滅→赤→青→点滅……と変わっていくんじゃないの?
通常時の遷移はわざわざ書く必要もないだろうし、改行が多すぎて拒否されたんで省いたけど、
その部分だけ書くと、こんな感じかな。
class 信号 {
static const int 赤時間;
static const int 黄時間;
static const int 青時間;
int timer;
void SetState(State state) { this->state = state; timer = 0; }
void 赤処理() { if (++timer >= 赤時間) SetState(青); }
void 黄処理() { if (++timer >= 黄時間) SetState(赤); }
void 青処理() { if (++timer >= 青時間) SetState(黄); }
};
>StateをCommandとしてListに突っ込んで
というのが分からんのだが、List に突っ込むのは
タスク (この場合は信号オブジェクト) であって、State じゃないだろ。
状態ごとの処理は各タスク内で完結してるんだから、さらに複雑にはならんよ。