ボス敵にはザコ敵にはないボスらしい攻撃をさせたいものです。そこでボスからは放射状に大量の弾丸を発射させます。それからプログラミング講座 第33回【シューティングゲーム作成(13)弾幕/JavaScript】と同じようにボスが放つ弾丸は最初はボスの周りに出現して、それから周囲に広がっていくようにします。

ボスが放つ弾丸はザコ敵のものとは動き方が違うので、EnemyBurretクラスを継承してBossEnemyBurretクラスをつくります。IsMoveフラグをつくって最初は動かないようにします。また同時に弾丸を発生させるのではなく、Boss.Move()が実行されるたびにひとつずつ発生してボスの周囲が弾丸で囲まれてから動き出す仕様にします。

ボスが放つ弾丸は最初はボスの周りに配置されるだけで動かないように見えます。しかし実際にはY座標はForm1.Speedだけ増えています。それからボスは左右に移動しているので止まっている弾丸もボスにあわせて左右に動かないとおかしな描画になってしまいます。

そこでBossEnemyBurretのコンストラクタにボス自身をわたすことにします。そして前回のボスのX座標との差分をもとめて弾丸を移動させます。

ボスの周囲が完全に弾丸で囲まれたらIsMoveフラグをtrueにします。あとは通常の敵弾と同じです。

ではBossクラスに弾丸を発射する機能を追加しましょう。弾丸をつくったらフィールド変数bossEnemyBurretsのなかにも格納します。そしてボスの周囲が弾丸で囲まれたらBossEnemyBurret.IsMoveを trueに変更します。すると弾丸が放射状に飛び始めます。

それからプログラミング講座 第33回【シューティングゲーム作成(13)弾幕/JavaScript】ではボスのHPが低下すると攻撃パターンを変えています。そこで同じように変えてみましょう。

Lifeが半分以下になったらザコ敵をつくって参戦させます。これをForm1.Enemiesに格納すればよさそうなのですが、Form1.MoveEnemies()メソッドのなかでforeach文が実行されているときにEnemiesの要素を変更すると例外が発生します。そこでいったんBossクラスのなかで新しく作成したボス支援ザコキャラを保存しておき、foreach文が実行されていないときにForm1.Enemiesに追加します。

まずどんな敵を参戦させるかですが、サングラスをした小型のやさぐれひよこにするのがいいかなと思ったのですが、じっさいに試してみるとイマイチだったので黄色のひよこを使います。

そしてボスが死ぬときはザコ敵にもいっしょに死んでもらいましょう。「死なばもろとも」です。

それからボスが死んでもボスが発した弾丸は飛び続けてもよいと思いますが、飛ぶ前の状態の弾丸が環状になってしばらく残るのはちょっと見た目的におかしいので、これも消えてもらいます。