TNP資料室 @ ウィキ

どんな機能を持っているか

最終更新:

Bot(ページ名リンク)

- view
だれでも歓迎! 編集

どんな機能を持っているのか

 出来ることとか書きます
  • 最初にタイトル画面が表示される
  • 簡単にタイトル画面、ゲーム画面、ゲームクリア画面、ゲームオーバー画面に移動できる
  • 上の画面切り替えの際、それぞれの初期化を行うことが出来る関数が用意されている。また、画面切り替えの際、自動でBGMを切り替えてくれる
  • 簡単に音声を再生、切り替え、停止することが出来る
  • メインゲームの間、Aキーを押すことでポーズ状態になる

基盤から学ぶことが出来ること

 この基盤、そこそこ必要な機能はサポートしていると思います。一番重要なのは、関数の中身自体ではなくどのタイミングでどのような関数を呼び出せばいいのかが分かりやすいということだと思います。
 説明の便宜上、プログラムを「タイトル、ゲーム、クリア画面など、全てをまとめたもの」、ゲームを「プログラムの中の、プレイヤーが遊べるもの」とします。また、ゲームはミニゲームのようなもので、クリアまたは失敗した場合にタイトル画面に戻り、再びスタートすることが出来るものとします。

 3分逃げ切ったらクリア、逃げ切れなかったら失敗というゲームについて考えて見ます。
 このゲームをつくるには、以下のような考えの流れなどが必要です。一例です。
  1. タイトル画面を表示する
  2. タイトル画面を表示するにはタイトル画面の初期化が必要である
  3. タイトル画面に画像を表示する場合、その画像を読み込む必要がある
  4. タイトル画面で音声を再生する場合、その音声を読み込む必要がある
  5. さらにゲーム画面に進むためには、ゲームの初期化が必要である
  6. ゲームで画像を...
  7. ゲームで音声を...
  8. ゲーム画面に進むにはタイトル画面の音声を止める必要がある

 さて、これらの機能をどこに実装すればいいでしょうか?とても重要です。タイトル画面の画像を読み込む前にタイトル画面を表示しようとしても失敗してしまいます。よって、先に画像を読み込ませればいいのです。これは簡単な例でしたが、では、ゲームの初期化はどこで行えばいいのでしょうか?

 そもそも、プログラムにおける初期化は大きく2種類に分けることが出来ます。プログラム開始直後に1度だけ行う初期化毎回処理が始まる前に行う初期化です。ちょっと分かりにくいですね。

 基盤の場合、プログラム開始直後に行う初期化は全ての変数を0にするその後画像・音声データをロードするはじめの処理対象をタイトル画面にするです。これらは何度も実行する必要がありませんね。
 毎回処理が始める前に行う初期化はそれぞれどのような処理が開始するのかによって違います。現在共通しているのは、画面が切り替わるとき、BGMを変更する初期化だけです。

 上の3分間逃げ切るゲームについて考えて見ましょう。もし、ゲームの初期化をプログラムの開始直後にのみ行ったとしましょう。1分間経過した後に失敗してしまったとします。ゲームオーバー画面からタイトル画面に戻り、再びゲームをスタートするとすでに1分経過した状態からゲームが開始します。なぜなら、プログラムが開始するのは1度だけだから、ゲームが初期化されるのも1度だけだからです。ゲームは何回もスタートするので、そのたびに初期化が必要だということがわかります。つまり、ゲームの初期化のタイミングはタイトル画面からゲームに移動するときだということが分かります。
 私は初心者のとき、この考え方にたどり着くのに1週間ほど使いました(キリッ ダッテワカンネーンダモン


 基盤には呼び出されるタイミングを考えるサポートのために大量のダミー関数が用意されています。ダミー関数とは、中身はほとんどかかれてない関数です。ただし、ダミー関数はそれぞれ呼び出されるべきタイミングで呼び出されるという特徴を持っています。たとえば、基盤のゲームの初期化関数にはほとんど中身がかかれていませんが、タイトル画面からゲーム画面に移動するときに呼び出される位置に書かれています。他にも、画像や音声をロードするためのダミー関数も用意されています。そこにロードの記述を書き足せば、呼び出すべきタイミングで呼び出されます。

 基盤のソースは(構造体にメンバ関数を持っていること以外は)かなり見やすいと思います。ゲームの流れやちょっとしたテクニックを勉強してみてください。

タグ:

+ タグ編集
  • タグ:
ウィキ募集バナー