2014/01/17(金) [n年前の日記]
#1 [dxruby] STGサンプルを弄ってたり
STGサンプルをちょこちょこ弄っているところ。
◎ シーン管理部分を追加中。 :
ゲームオーバーの仕様を入れるためには、少なくともタイトル画面ぐらいは必須。なので、シーン管理を追加したり。
「えっ? どうしてゲームオーバーを入れるために、タイトル画面が必要なの?」と思う人も居るかもしれない…。
ゲームオーバーになったら、次はどんな画面になるか、思い出すべし。えてして、ランキング入力画面か、タイトル画面に戻ってきますよね。
これがもし、タイトル画面すらないプログラムでは、ゲームオーバー仕様も存在できない。「区切り」が一切無かったら、ゲームオーバーと言う区切りも、あり得ない。
故に、ゲームオーバー仕様を入れるためには、タイトル画面ぐらいは必須。そしてタイトル画面を出すためには、シーン管理が必要。つまり、ゲームオーバー仕様を入れるためには、シーン管理を実装しないといかんわけで。
さておき、シーン管理の中身だけど。自分は頭が悪いので、switch〜case で ―― Rubyなら case〜when でやってしまうのですが。オブジェクト指向とやらを意識した場合は、これは望ましくないのだろうなと。まあ、そのあたりは今後の課題ってことで。
「えっ? どうしてゲームオーバーを入れるために、タイトル画面が必要なの?」と思う人も居るかもしれない…。
ゲームオーバーになったら、次はどんな画面になるか、思い出すべし。えてして、ランキング入力画面か、タイトル画面に戻ってきますよね。
これがもし、タイトル画面すらないプログラムでは、ゲームオーバー仕様も存在できない。「区切り」が一切無かったら、ゲームオーバーと言う区切りも、あり得ない。
故に、ゲームオーバー仕様を入れるためには、タイトル画面ぐらいは必須。そしてタイトル画面を出すためには、シーン管理が必要。つまり、ゲームオーバー仕様を入れるためには、シーン管理を実装しないといかんわけで。
さておき、シーン管理の中身だけど。自分は頭が悪いので、switch〜case で ―― Rubyなら case〜when でやってしまうのですが。オブジェクト指向とやらを意識した場合は、これは望ましくないのだろうなと。まあ、そのあたりは今後の課題ってことで。
◎ ファイルを分割中。 :
今まで、一つのファイルにずらずらと書いていたけど、さすがに見通しが悪くなってきたので、各クラスを別ファイルにする作業もし始めたり。
しかし、ちょっと悩んでしまう部分が。グローバル変数の扱いをどうすべきか、みたいな。
その手のゲームにおいては、グローバル変数ってどうしても必要になりそうな気がしていて。
例えば、敵がプレイヤーを狙って弾を撃つ、てな場合。敵は、プレイヤー座標を見て、角度を決めて、弾クラスのインスタンス生成時して、どこかに登録する、という処理をするのだけど。プレイヤー座標にしろ、オブジェクトを登録する何かにしろ、グローバル変数に近い状態になってないと、処理ができないわけで。
「自分の座標とプレイヤー座標から角度を返す」メソッドや、「発生座標や角度を与えると弾を生成・登録してくれる」メソッドを用意すればいいだろう、と言われそうだけど。そのメソッドは、色んな種類の敵から呼ばれるので、結局、変数がグローバルだったあたりが、メソッドがグローバル(?)相当になりましたよ、ぐらいの違いしか無いだろうと。
こういう場合は、どういう書き方、まとめ方をするのが、ベターなんだろう…? _Singleton を使うとか?
しかし、ちょっと悩んでしまう部分が。グローバル変数の扱いをどうすべきか、みたいな。
その手のゲームにおいては、グローバル変数ってどうしても必要になりそうな気がしていて。
例えば、敵がプレイヤーを狙って弾を撃つ、てな場合。敵は、プレイヤー座標を見て、角度を決めて、弾クラスのインスタンス生成時して、どこかに登録する、という処理をするのだけど。プレイヤー座標にしろ、オブジェクトを登録する何かにしろ、グローバル変数に近い状態になってないと、処理ができないわけで。
「自分の座標とプレイヤー座標から角度を返す」メソッドや、「発生座標や角度を与えると弾を生成・登録してくれる」メソッドを用意すればいいだろう、と言われそうだけど。そのメソッドは、色んな種類の敵から呼ばれるので、結局、変数がグローバルだったあたりが、メソッドがグローバル(?)相当になりましたよ、ぐらいの違いしか無いだろうと。
こういう場合は、どういう書き方、まとめ方をするのが、ベターなんだろう…? _Singleton を使うとか?
[ ツッコむ ]
以上です。