「DirectXによるゲームプログラミング」を一通りやると、とりあえず2Dゲームが作れるかな
っていう気になります。で、実際にシューティングを作ってみたのですが、
「なんじゃこの巨大なソースファイルは!」
っていう物になってしまいました。
関数化を心がけながら作ったものの、所詮1本のソースなのでどうやっても巨大になってしまい、
誰も触れないんじゃないかというものになってしまいました。
そこで、参考書のプログラムやMSSDKのサンプルプログラムなどを参考(ごちゃ混ぜ?)に、
ソースファイルの分割をして2Dゲームのサンプルというか、基本のプログラムを作って
みました。
このプログラムを元にして、いろんなプログラムが作れるのではないでしょうか?
「GameSamp.lzh」をダウンロードし、解凍すると 次のファイルが作成されます。
| ファイルの種類 | ファイル名 | 説明 |
|---|---|---|
| BITMAPファイル | backImage.bmp | 背景画像(640×480) |
| Chara.bmp | キャラクタ画像 | |
| Menu.bmp | スタート画面メニュー画像 | |
| String.bmp | 文字列画像(キャラクタコード順に並べたもの) | |
| ソースファイル | ddutil.cpp | MSSDKのDirectDrawサンプルについているラッパー関数 |
| diutil.cpp | DirectInputのラッパー関数(自作) | |
| Game.cpp | ゲーム画面のプログラム | |
| mydraw.cpp | DirectDraw関係の共通プログラム | |
| Openning.cpp | スタート(オープニング)画面のプログラム | |
| WinMain.cpp | 基本プログラム | |
| ヘッダファイル | DDSp.h | define文など |
| ddutil.h | ddutil.cppのヘッダファイル | |
| diutil.h | diutil.cppのヘッダファイル | |
| Game.h | Game.cppのヘッダファイル | |
| mydraw.h | mydraw.cppのヘッダファイル | |
| Openning.h | Openning.cppのヘッダファイル | |
| WinMain.h | WinMain.cppのヘッダファイル |
上記のファイルを任意のフォルダに格納し、プロジェクトを作成します。作成方法は 次のとおりです。
| 画像の種類 | ファイル名 | 付ける名前 |
|---|---|---|
| 背景画像 | backImage.bmp | "BACKIMAGE" |
| キャラクタ画像 | Chara.bmp | "CHARACTER" |
| メニュー画像 | Menu.bmp | "MENU" |
| 文字列画像 | string.bmp | "STRINGS" |
以上の設定を行い、ビルドすればexeファイルが出来上がる・・・はずなんですが、 どうでしょう。成功すればこんなんが出来ると 思うのですが・・・
エラーもなくビルドできたら実行してみましょう。「SampleGame」というオープニング画面
が出ると思います。
音関係は何も組み込んでないのでとても寂しいですが、サンプルということで許してください。
ちなみにDirectSoundにもラッパー関数が用意されていて、簡単に組み込めます。
ゲームパッドの十字ボタンまたはキーボードのカーソルキーで、画面上のカーソルが上下に 移動します。「START」を選んでゲームパッドのAボタンまたはキーボードのAボタンを 押すとゲームが開始します。「END」ならプログラムが終了します。なお「CONTINUE」 を選んでも何も反応しません。m(__)m
ゲーム画面では、自機と変な穴(?)があります。自機はゲームパッドの十字ボタンまたは
キーボードのカーソルキーで移動できます(それしか出来ない)。
自機と穴にはあたり判定があって、当たるとスタート画面に戻ります。
あたり判定は画像の大きさをそのまま使っているので見た目と当たり判定の大きさは
ずいぶん違いますが、気にしないで下さい。
オープニング画面はOpenning.cppを、ゲーム画面はGame.cppをいじればどのようにも
改造できるって言うのが判るのではないでしょうか?
面クリア型のゲームならGame.cppを面数分作ったりといったことも出来そうです。
このプログラムがいいか悪いかはわかりませんが、とりあえず開発効率が上がりました。
それにこうやって分割しておけば、複数の人と一緒に作るときも便利です。
ちなみに画像ファイルは256色じゃないと使えません。自分で用意するときは気をつけましょう。
私のように情報処理技術者試験2種レベルのC言語しか知らない&数学を知らないといった
人にはゲーム開発はそうとう難しいです。でも、このプログラムを使えば基本的なところ
だけは抑えてあるので、拡張していけば少しずつでもゲームっぽいものが作れるように
なるんじゃないかな?
プログラムの中身自体は「DirectXによるゲームプログラミング」のプログラムとMSSDKの
パクリで、少しでも判りやすいようにコメントを多く付けてあります。
とりあえず何でもいいから作ってみたいという人はこのソースを全てプリントアウトして、
参考書と照らし合わせてどこで何をやっているかを解析してみてはいかがでしょうか?