構造体とクラス構造
クラスにする方法が分かったところでではこれから設計に入ります。
クラスの大変な所と、面白いところと、やりがのある所はこの設計の部分です。
クラス設計の面白さがわかれば(大変さも)立派なオブジェクト指向プログラマです。
背景クラスに必要なものは
1 背景データのファイル読み込み
2 背景CGの読み込み
3 背景描画
4 背景の移動(スクロール)
5 移動可能範囲判定
といった所でしょうか。
結構ありますねー。
なんか当たり前の感じがします。
ときどき、人の思い付かない斬新な設計をする人もいます。
一つづつやってみましょう。
ここで必要なのは動的なメモリ確保です。
動的なメモリ確保というのは、大きさの違うファイルを不都合無く読み込むということです。
必要な量のメモリを必要な量だけ確保する、ということですね。
動的な確保の逆は静的な確保です。
これは一番大きなマップにあわせてメモリを静的に確保しておく方法です。
たとえば
byte d_map[1000*1000];
などという書き方です。
こうすると、中味が空の(1000×1000)バイトのメモリが確保されます。
ここに100×100のマップを入れると、1%しか使われず、残りの99%は無駄というか、遊んでいるわけですね。
そこで、100×100しか使わない場合は
byte d_map[100*100];
だけメモリを使うというほうが合理的です。
ウィンドウズのプログラムの作法としては、他にもアプリケーションが動いているのだから、個々のアプリケーションはなるべくメモリを節約するべきだ、という訳です。
各アプリケーションが好きなだけメモリを使うとウィンドウズの動作がどんどん遅くなってユーザーはむかつくわけです。
ユーザーが満足するといろいろな意味で好ましいので、このむかつく仕様は割けるべきでしょう。
でもゲームの場合はどうでしょうか?
ゲームとエクセルを同時に使う人はいるでしょうか?
ゲームとワードを同時に使う人は?
ゲームとライトウェーブを同時に使う人は?
ゲームの場合はメモリをふんだんに使うと、動作が早くなります。
ゲームの場合は他のアプリケーションとの共存より、ゲーム単体のスピードのほうが重視されるような気がします。
という訳で、動的確保と、静的確保の両方のやり方を覚えましょう。