[相談]C++OOPデザインパターンについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マシュマロモンスター
記事: 9
登録日時: 12年前

[相談]C++OOPデザインパターンについて

#1

投稿記事 by マシュマロモンスター » 12年前

ご無沙汰しております。マシュマロです。
現在オブジェクト指向プログラミングにおいて役立つ様々なデザインパターンについて学んでおります。
以前からSTGの制作に取り組んでおりますが、デザインパターンの練習の為に
本プロジェクトから少し離れて、「弾幕クリエイター」
と言うサイドプロジェクトに移る事にしました。
プロジェクトの目的はユーザーが自由に弾幕を「クリエイト」することです。主に難易度の調整や演出のデザインをしていき、それを基に本プロジェクトに応用できればいいなと思います。
使えそうなデザインパターンを掲示板の皆様と一緒に考えていきたいと思ってトピックを立てました。よろしければお付き合いください。

プロジェクトの内容と基本的な流れは以下のようになります。
1.ユーザーが弾、弾幕、敵の種類を選択
2.選択された項目の各パラメータをユーザーが入力(敵の座標や弾幕のパラメータ)
2.5 敵の座標は弾幕の開始座標となる。
3.プログラムは入力された情報を基に弾幕を演出
4.演出中にユーザーがパラメータを調整できる
5.4により弾幕演出は動的に更新される

これだけではイメージしづらいと思いますが、後に具体的な設計図をアップロード致します。

現在自分が「これは使えそう」と思うパターンとその理由を幾つか挙げてみます。
1.Strategy    「弾」というオブジェクトは様々な振る舞いがある
2.Command   項目を選択する時や切り替える時に使えそう
3.Flyweight   描画する弾の数が多くなる
4.Factory     資料の1の組み合わせを行う

デザインパターンの一覧は
http://marupeke296.com/DP_main.htmlに色々載ってます

皆様の意見と推薦を基に具体的なクラス関係図を作成していき、コードを完成させたいと思います。内容がかなり長くなってしまいましたが、どうぞよろしくお願い致します。

アバター
h2so5
副管理人
記事: 2212
登録日時: 14年前
住所: 東京
連絡を取る:

Re: [相談]C++OOPデザインパターンについて

#2

投稿記事 by h2so5 » 12年前

Flyweightパターンについて。
弾に使用するテクスチャの共有にFlyweightパターンを使うことはできますが、弾自体の管理には使えないと思います。

リンク先の「ゲームつくろー!」では弾の管理にFlyweightパターンを使っていますが、Flyweightパターンのサンプルとしては不適切だと思います。
オブジェクトの共有をしているわけではなく使用済みのインスタンスの使い回しをしているので、FlyweightパターンではなくFacotry Methodパターンの応用です。
肝心の共通部分である絵柄のハンドル(pNORMALBULLTEPICT, pCANBREAKINGPICT)が単なるグローバル変数になってしまっていますが、本来はここにFlyweightパターンを適用するべきです。

http://marupeke296.com/DP_Flyweight.html

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: [相談]C++OOPデザインパターンについて

#3

投稿記事 by ISLe » 12年前

設計が煮詰まったところで適切なデザインパターンを選択するべきなのでは?

どんなパターンがあるのか知っていることは設計の際に役立ちますが、デザインパターンを決めて設計するというのは本末転倒だと思います。
デザインパターンが典型的なものであるというのはGoFも述べていることです。

閉鎖

“C言語何でも質問掲示板” へ戻る