いつかキングになりたい・・・
おはようございます。本日の当番、プログラマーのM.Oです。
すっかり暑くなって、液状化です。
そんな私がお送りする、今日のネタは「状態と遷移」です。
いつもどおりな私。夏バテでぷるぷるしてる私。寝苦しくて目の焦点があっていない私。微ハイテンションで頭が変にとんがってる私。色んな状態の私がいるけれど、ゲームにも色んな状態があります。
例えば、次のような簡単なメニューがあったとします。
・各項目はすべてフォントを使った文字列で表現される。
・メニューが始まるときは、各項目の文字列が浮き上がってくる。
・メニューが終わるときは、各項目の文字列が薄れて消えていく。
・各項目の文字列は選択時は若干大きく、非選択時は通常の大きさで表示される。
・選択項目が決定されると文字列が明滅する。
・上下ボタンが押されると、選択項目が変更される。
・決定ボタンが押されると、選択項目が決定され、メニューが終了する。
・キャンセルボタンが押されると、メニューが終了する。
・メニューの項目は一つのみ選択されている状態となる。
この時、とり得る状態を書いてみます。
●メニューの各項目の文字列(ニューゲーム、コンテニュー、オプション等)
A.状態なし(メニュー画面に移行してきた瞬間)
B.表示移行待ち状態
C.選択されていない状態
D.選択演出状態
E.選択されている状態
F.非選択演出状態
G.決定演出状態
H.非表示移行待ち状態
I.非表示状態
●メニュー全体
0.状態なし(メニュー画面に移行してきた瞬間)
1.表示物の表示移行待ち状態
2.ユーザ入力待機状態
3.選択演出状態
4.決定演出状態
5.表示物の非表示移行待ち状態
6.非表示状態
これだと、メニュー全体と各項目で同じ状態があり、あれ?と思うかもしれませんが、メニュー全体の状態を元に、一括処理できるから各項目の状態いらないんじゃない?って判断すると、後々面倒なことが起こりえます。
「一斉に浮き出てきてるのを、上から順番にしてくれない?」とか。各項目ごとに制御する必要があるので、個別で状態を管理できる方が分かりやすいです。
次に状態がどのように遷移するか書いてみます。
遷移元(遷移条件) →遷移先
●メニューの各項目の文字列
| A.状態なし(メニューから遷移) | →B.表示移行待ち状態 |
| B.表示移行待ち状態(表示完了) | →C.選択されていない状態 |
| C.選択されていない状態(選択された) | →D.選択演出状態 |
| (キャンセルされた) | →H.非表示移行待ち状態 |
| D.選択演出状態(演出が完了) | →E.選択されている状態 |
| E.選択されている状態(別項目が選択) | →F.非選択演出状態 |
| (決定された) | →G.決定演出状態 |
| (キャンセルされた) | →H.非表示移行待ち状態 |
| F.非選択演出状態(非選択演出が完了) | →C.選択されていない状態 |
| G.決定演出状態(決定演出が完了) | →H.非表示移行待ち状態 |
| H.非表示移行待ち状態(非表示完了) | →I.非表示状態 |
●メニュー全体
| 0.状態なし(メニューに遷移してきた) | →1.表示物の表示移行待ち状態へ |
| 1.表示物の表示移行待ち状態(全項目の状態がC) | →2.ユーザ入力待機状態< |
| 2.ユーザ入力待機状態(上下ボタンが押された) | →3.選択演出状態 |
| (決定ボタンが押された) | →4.選択決定演出状態 |
| (キャンセルボタンが押された) | →5.表示物の非表示移行待ち状態 |
| 3.選択演出状態(全項目の状態がE) | →2.ユーザ入力待機状態 |
| 4.選択決定演出状態(表示決定演出が終わった) | →5.表示物の非表示移行待ち状態 |
| 5.表示物の非表示移行待ち状態(全項目の状態がI) | →6.非表示状態 |
| 6.非表示状態 | →次の画面 |
このように、状態がどう遷移するか挙げていけば、考えやすくなります。
しかし、いくらさまざまな条件を考えても、スライミィな私ではキングスライミィには状態遷移しねぇぇ。
| 固定リンク
「プログラマー」カテゴリの記事
- ポジティブシンキング♪(2012.01.25)
- Simple is best(2011.12.19)
- 残り半月!(2011.12.16)
- もしもの時の為に(2011.12.15)
- OpenCVと某カメラを使う(2011.12.14)












コメント