信大ロボ研のブログ

信州大学ロボット研究会のブログです。

DXライブラリとVisualC++によるシューティングゲーム制作その1

こんにちは。2年のたぬです。

NHKロボコン2010の書類制作で部室が大混乱している中、わずかな空き時間を使ってちょくちょくとC++を勉強中な今日この頃……。
いや、ものすごく忙しいんですけどね。

4月にこのサークルに入った後の新入生教育の後に、ある先輩からこんなことを言われたんですよ。
「興味あるなら、ゲーム作ってみる?」
即答で
「はい!」
実に初々しいですね。思えばこれが機械工学(信大的には機械システム工学)の私がプログラマへの道を進む第一歩だったんだな〜、と。プログラミング自体は厨房の頃からヤッテタンデスガ、Windowsアプリケーションを作るのは初めてです。大学の講義でも機シスはそんなことやりませんし。

そして、時間が無い時間が無いがエンドレスと嘆き続けて半年が過ぎ、いい加減先輩も卒業してしまうという今頃になってようやく、始めたんですねゲーム制作を。

といっても、今からWIN32APIを勉強していたのでは間に合いません。じゃあどうするのか?
最強のツールがあるんですねこれが。
『DXライブラリ』
早い話が「WIN32APIやDirectXとか知らなくてもグラフィックとか音とか含んでいるWindowsアプリケーションが作れるよ〜」っていうライブラリということで。ちなみにゲーム限定。メッセージループとかいうのも関数で肩代わりしてくれるし、DXライブラリのホームページにはWINMAIN関数のヒナ型も置いてあるし……。本当に助かるよ〜!
まぁ、実際詳しいことは知らないし、私も「14歳から〜(後忘れた)」とタイトルが付いていた本を先輩に渡されて知ったもので……。

そして実際につくってみたシューティングのヒナ型がこちら!

チーン……orz

うわぁ、これはひどい……。うわぁ……。
もっとまともなの作れなかったの?
すみません無理でした。
だって絵心無いんだもん!時間だってないんだもん!
果てしなくテキトーな絵で済ませています。
敵が右側の■で左が自分の●。そして敵味方問わず形が同じ弾!
しかも静止画だからどっちがどっちの弾だかわからない!
特徴として
・自身に弾が当たったら即終了
・敵は4回弾が当たると消える。あと色が変わる。
・実は敵は3体いる(時間差で出てくる)
・敵は後ろで振動している奴と前で円運動している2種類だけ
・全部の敵を倒すとクリア
・画面左上の数字は、円運動している敵のXY座標と極座標の動径とか
いやこれはひどい
あと背景なんとかしろ(え

とはいったものの、今回の目的は「シューティングのヒナ型をつくること」なので、これでOK(ということにしてください人)。
もっとも大事なことは「シューティングの基本の動きである『動いている敵を動き回って撃つ』ことを完成させる」ことであり、このプログラムでとりあえず実現はできている。
それにしても、もうちょっとグラフィックをなんとかしろどこ発売のクソゲーだよ。

ヒナ型ができたんだし、次は本番だよね!
いいえ。
機シスの私が作ったプログラムです。熟練の達人が作っているわけではありません。問屋がなかなか卸してくれません。
前期の講義で習った「構造化プログラミング」とかいう手法を使って作ったので、いかんせん拡張性に乏しい。
ゲームを構造的に考えて行ったら、処理がいろいろな関数に飛び回ってしまい、汚い。自分の技量では無理。まとめられない
キャラをひとつ増やすだけで関数いくつ編集しなくちゃいけないんですか先生!いやあきらかに自分のせいだろ。

というわけで、オブジェクト指向プログラミングという手法を使って、ヒナ型を1から作り直しているところです。
なにせ、CLASSの基礎の基礎から勉強を始めているものですから遅い遅い……。
イメージ的には、
私「俺が交通整理やってやるから、うまく動けよ」
CLASS「はいマスター」
とか
私「おいお前ちょっと動き回ってこい」
CLASS「はいマスター」
私「お前うまく勝手に動き回れよ」
CLASS「はい、マスター(はーと」
って感じです。いいですねマスターって響きが。

また進展があれば更新します。

そして開発画面

もっときれいにプログラムしろw

ちなみに前のPIC記事は、あと半年くらいは更新ないです。