ゲームの状態推移に付いて考えている
しばらく間が空いてしまいましたが、取り掛かっています。
ゲームを良く観察してみると、色々なシチュエーションが有るのがわかります。
- タイトル画面
- デモ画面
- ステージ表示
- 実際のゲーム
- クリアした時のメッセージ
- ゲームオーバー
- ネームエントリー
などなど。
これらをループでつなぎ合わせる事で、一つのゲームが成り立っているのだと考えられる。
では、これらの処理をどのようにつなぎ合わせれば良いのだろうかという話になり、
「各処理の引き継ぎ」と「各処理の並び」という考えが出て来た。
例えば、ゲームのプログラムを立ち上げて何もしなければ、
タイトル画面→デモ画面→タイトルが面→デモ画面・・・
とゲームを開始するサインが入力されない限り、ループする事になります。
また、タイトル画面→デモ画面という一区切りを取っても、
タイトル画面を表示する→そのままある一定時間待つ→デモ画面に切り替える
というように「待ち」がある事がわかり、それも必要です。
つまり、ゲームの流れのプログラムをプログラムで表現しなければならないのです。
今考えているのは、
- 汎用の関数ポインタを用意して、それをVブランクに同期して実行させる様にします。
- その関数ポインタにその時々に行う処理の関数のアドレスを入れる。
- また、次に実行させる処理の関数はどの関数かがわかるように、関数の順番の管理をする。
このような考え方で、プログラムを組んでみようと考えています。
関数ポインタ、構造体、配列を使えば、表現出来ると思います。