ゲームプログラミング第3回までで、自機と弾の表示、そして弾のクラス化まで終わりました。前回をふりかえってみると、弾幕を出すために内部の構造変更を進めた回であり、とても大事な会ではあったのですが、読者の皆さんからみると、とりたてて派手なことはなく、つまらないカンジだったのかもしれません。それはこれから高くジャンプするために、しゃがんだ様なものなのです。ジャンプするのは、今回ですよ!さて、いよいよ、前回のそのクラスを「配列」という仕組みを使って弾幕にしてしまいましょう。配列というのは、たくさんの変数をしまっておき、必要に応じて取り出すことができる、プログラムには欠かせない、頼りに相棒です。クラスと一緒で、理解するためにはチョット大変かもしれませんが、がんばって理解しましょう。いう、いつでも増やしたり減らしたりできる配列を作れるクラスを使って、弾を弾幕にしていきます。前回のソースをちょっと改造してみましょう。ソースコードが長くなってきたので、今回から、変更の中で主な部分だけこのページで紹介し、全体のソースはリンク先での紹介にしていこうと思います。(Tama)danmaku.get(i);t.update();}}サンプルプログラム04-1どうでしょう?たくさんの弾が、バラバラと落ちてきましたね。座標は、ランダムで設定してしまいました。ついて図を用意しました。詳細はともかく、こういうふうな動作をするのだとイメージしておいてください。関数を呼び、動かしているわけです。いう関数を呼び出すことで、今、何個のインスタンスが入っているか数えて、その数だけループするようにしているというわけです。呼び出してくれるというわけなのです。便利ですね!しかし、この動作では、まったく弾幕ゲームに見えません。弾幕ゲームというからには、もっと弾がバラバラに、キレイに飛び散って欲しいものです。されるだけだからです。解決策として、それぞれのインスタンスが別々の動きをするように改造すればいいのです。それぞれのインスタンスが別々の動きをするためには、座標同様に、毎フレームにXとYの移動量を覚えている必要がありますね。して、その変数をクラスに追加し、適当な値を設定するようにしてみます。クラス変数に追加したのですが、今回は、Tamaクラスのインスタンスを作る際に、丸く動くように36個のインスタンスを生成してみたのです。設定しているのですね。いう三角関数を使いました。関数内の該当箇所を見てもらえるとわかりますが、360度ぐるっと10度に1発つづ、インスタンスを生成しています。関数内では移動後に、画面外にでたらまた、真ん中に戻すように変更してみました。移動量は変えてません。これだけでも、ずいぶんとそれぽく見えるものですね。いう三角関数は清水さんも記事で書かれています。この2つの関数はゲーム内で、なにかを動かそうとするときに、欠かせない大切な相棒です。ついて、図を用意しました。こちらもみて、参照にしてください。このように、動かしたい方向がわかった後、実際にプログラムに落とすには、x成分とy成分に分解し、指示してあげる必要があるのです。欠かせないというわけなんですね。関数を呼んで、変換してます。いい感じに弾幕っぽくなってきたところで、これまで適当に出してきた弾幕をちゃんとボスから発射されるように、ボスを作成してみましょう。クラスを作っていきましょう。略}サンプルプログラム04-3前回のソースとちょっと変わってしまいました。変数はBossクラス内に移動しています。こんなふうに、クラス内の管理で済むものは、クラス内に入れてしまうほうが良いです。しておくと、将来、ボスを2匹だすことになっても、全く変更なしで済むわけですね。呼んで削除してしまっています。弾はBossクラス内で、じゃんじゃん生成していけるのですね。