PSSもうちょっと詳細

真面目に考える。
たとえば敵と敵の弾。
敵は出現してからクラスで定義されたとおりに動く。
そーすると、移動しつつ、あるタイミングで弾を撃つことに、普通はなる。
敵が決めるのはタイミングと、撃つ弾に渡す角度と、数だ。弾の種類はパラメータで渡すことになるだろう。
この敵と弾との間にショットジェネレータを挟む。


敵はあるタイミングである角度に弾を撃とうとして、ショットジェネレータを起動する。起動するジェネレータは敵のパラメータで設定する。
ジェネレータも後から動的に追加可能なクラスである。
このショットジェネレータが、起動されてからどのタイミングでどの角度にどの弾を生成するか、を決める。
5連発で狙い弾を撃つ、とか、3方向に撃つ、とか、美しい弾幕を生成する、とか、そういう感じで。


ショットジェネレータを挟むことで、敵の動きと、攻撃方法を分離することができる。
同様に自機と自機の弾の間にも挟めば、自機がパワーアップしたときにそれを差し替えることで攻撃方法が変わることを表現できるし、武器のチェンジも表現できる。