ご無沙汰しております。マシュマロです。
現在オブジェクト指向プログラミングにおいて役立つ様々なデザインパターンについて学んでおります。
以前からSTGの制作に取り組んでおりますが、デザインパターンの練習の為に
本プロジェクトから少し離れて、「弾幕クリエイター」
と言うサイドプロジェクトに移る事にしました。
プロジェクトの目的はユーザーが自由に弾幕を「クリエイト」することです。主に難易度の調整や演出のデザインをしていき、それを基に本プロジェクトに応用できればいいなと思います。
使えそうなデザインパターンを掲示板の皆様と一緒に考えていきたいと思ってトピックを立てました。よろしければお付き合いください。
プロジェクトの内容と基本的な流れは以下のようになります。
1.ユーザーが弾、弾幕、敵の種類を選択
2.選択された項目の各パラメータをユーザーが入力(敵の座標や弾幕のパラメータ)
2.5 敵の座標は弾幕の開始座標となる。
3.プログラムは入力された情報を基に弾幕を演出
4.演出中にユーザーがパラメータを調整できる
5.4により弾幕演出は動的に更新される
これだけではイメージしづらいと思いますが、後に具体的な設計図をアップロード致します。
現在自分が「これは使えそう」と思うパターンとその理由を幾つか挙げてみます。
1.Strategy 「弾」というオブジェクトは様々な振る舞いがある
2.Command 項目を選択する時や切り替える時に使えそう
3.Flyweight 描画する弾の数が多くなる
4.Factory 資料の1の組み合わせを行う
デザインパターンの一覧は
http://marupeke296.com/DP_main.htmlに色々載ってます
皆様の意見と推薦を基に具体的なクラス関係図を作成していき、コードを完成させたいと思います。内容がかなり長くなってしまいましたが、どうぞよろしくお願い致します。
[相談]C++OOPデザインパターンについて
Re: [相談]C++OOPデザインパターンについて
Flyweightパターンについて。
弾に使用するテクスチャの共有にFlyweightパターンを使うことはできますが、弾自体の管理には使えないと思います。
リンク先の「ゲームつくろー!」では弾の管理にFlyweightパターンを使っていますが、Flyweightパターンのサンプルとしては不適切だと思います。
オブジェクトの共有をしているわけではなく使用済みのインスタンスの使い回しをしているので、FlyweightパターンではなくFacotry Methodパターンの応用です。
肝心の共通部分である絵柄のハンドル(pNORMALBULLTEPICT, pCANBREAKINGPICT)が単なるグローバル変数になってしまっていますが、本来はここにFlyweightパターンを適用するべきです。
http://marupeke296.com/DP_Flyweight.html
弾に使用するテクスチャの共有にFlyweightパターンを使うことはできますが、弾自体の管理には使えないと思います。
リンク先の「ゲームつくろー!」では弾の管理にFlyweightパターンを使っていますが、Flyweightパターンのサンプルとしては不適切だと思います。
オブジェクトの共有をしているわけではなく使用済みのインスタンスの使い回しをしているので、FlyweightパターンではなくFacotry Methodパターンの応用です。
肝心の共通部分である絵柄のハンドル(pNORMALBULLTEPICT, pCANBREAKINGPICT)が単なるグローバル変数になってしまっていますが、本来はここにFlyweightパターンを適用するべきです。
http://marupeke296.com/DP_Flyweight.html
Re: [相談]C++OOPデザインパターンについて
設計が煮詰まったところで適切なデザインパターンを選択するべきなのでは?
どんなパターンがあるのか知っていることは設計の際に役立ちますが、デザインパターンを決めて設計するというのは本末転倒だと思います。
デザインパターンが典型的なものであるというのはGoFも述べていることです。
どんなパターンがあるのか知っていることは設計の際に役立ちますが、デザインパターンを決めて設計するというのは本末転倒だと思います。
デザインパターンが典型的なものであるというのはGoFも述べていることです。