いつもご質問に答えていただきありがとうございます。
今回ご相談させていただきたいのはSTGの弾のクラスの設計についてです。
現在、現在、龍神録プログラミングの館を参考にSTGを作成しているのですが、
次に13章を参考に敵が弾を撃つようにしようと思っております。
その際、弾のクラスを別に作成しようと思っているのですが、13章を見る限り、
一部の箇所で敵のパラメータを使っているみたいなので、敵のクラスで敵のパラメータ
の構造体をポインタで返す関数を作成し、それを弾のクラスで受け取り、それを基に
弾のクラスを作成しようと思っております。
もし第13章で記載されているやり方で行う場合、この方法はやめたほうがいいでしょうか?
もし、この方法でもできる場合、気を付けた方がいい点等ございますでしょうか?
またやめた方がいい場合他に良い方法はございますでしょうか?
ご教授いただけたらと思います。
どうかよろしくお願い致します。
一応プロジェクトをアップしておきました
http://xfs.jp/du66hQ
弾につきましては3Dモデルが用意できなかったので2D画像をDXライブラリの
DrawModiBillboard3D関数
を用いて表示しようと思っております。
STGの弾のクラスの設計について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: STGの弾のクラスの設計について
ソースコードは見てませんが、龍神録の最後の方にC++版があるので参考になると思います。
なお、C言語版は初めての人の分かり易さ最優先なので設計としては褒められてものではないとDixqさん本人も言われております。
で、敵のパラメータが動的に変化するなら弾に渡す必要性も出てくるかもしれませんが、そうで無いのなら一方通行で事足りるはずです。
渡すにしても最低限でインターフェイスを受け持つクラス経由を検討して下さい。
なお、C言語版は初めての人の分かり易さ最優先なので設計としては褒められてものではないとDixqさん本人も言われております。
で、敵のパラメータが動的に変化するなら弾に渡す必要性も出てくるかもしれませんが、そうで無いのなら一方通行で事足りるはずです。
渡すにしても最低限でインターフェイスを受け持つクラス経由を検討して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: STGの弾のクラスの設計について
ご回答ありがとうございます。
C++のコードが公開されていたのですね。
実際見てみたのですが私の設計と全然違っており、自分の設計力のなさに絶望しております。
やはり設計は経験等を積んでいかないとなかなか良い設計が組めないのでしょうか・・・・・・
C++のコードが公開されていたのですね。
実際見てみたのですが私の設計と全然違っており、自分の設計力のなさに絶望しております。
やはり設計は経験等を積んでいかないとなかなか良い設計が組めないのでしょうか・・・・・・
ここがどういったことがわからないのですが最低限といいますと弾のクラスで使う敵の構造体のパラメーターのみを渡すということでしょうか?softya(ソフト屋) さんが書きました:渡すにしても最低限でインターフェイスを受け持つクラス経由を検討して下さい。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: STGの弾のクラスの設計について
> やはり設計は経験等を積んでいかないとなかなか良い設計が組めないのでしょうか・・・・・・
1年で劇的に良くなるものでもないですね。徐々に良くなっていくって感じです。
常に考え続けるべき一生の課題だと思います。
その他、良い設計のコードを見るのは勉強になりますね。
ただ、一気にきれいな設計を目指すばかりに迷宮入りする初心者の方は多いです。
設計ばかり気にして作品が完成しない人も多く質の悪い病といえるかもしれません。
1.完成 2.設計を綺麗に ぐらいの優先度で考えた方が良いかと思います。
> ここがどういったことがわからないのですが最低限といいますと弾のクラスで使う敵の構造体のパラメーターのみを渡すということでしょうか?
まず渡す必然があるのか、生の敵データじゃないとダメな理由は何か(C++なのでバグで書き換えられる危険性を冒してまで)、渡すことでメンテナンス性低下の可能性はどのぐらいか、などなどを考えます。
つまり、発射した瞬間の座標だけで良いのなら、座標だけを渡すべきですし、シンプルな方がトレースが容易です。
1年で劇的に良くなるものでもないですね。徐々に良くなっていくって感じです。
常に考え続けるべき一生の課題だと思います。
その他、良い設計のコードを見るのは勉強になりますね。
ただ、一気にきれいな設計を目指すばかりに迷宮入りする初心者の方は多いです。
設計ばかり気にして作品が完成しない人も多く質の悪い病といえるかもしれません。
1.完成 2.設計を綺麗に ぐらいの優先度で考えた方が良いかと思います。
> ここがどういったことがわからないのですが最低限といいますと弾のクラスで使う敵の構造体のパラメーターのみを渡すということでしょうか?
まず渡す必然があるのか、生の敵データじゃないとダメな理由は何か(C++なのでバグで書き換えられる危険性を冒してまで)、渡すことでメンテナンス性低下の可能性はどのぐらいか、などなどを考えます。
つまり、発射した瞬間の座標だけで良いのなら、座標だけを渡すべきですし、シンプルな方がトレースが容易です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: STGの弾のクラスの設計について
設計をきれいにしたいとは思っていますがそれで完成しなかったら確かに本末転倒ですね・・・・・
第一に完成をめざし、その上で反省してし・・・・の繰り返しをするしかないんですね。
上達への道かはわかりませんが練って似合った「毎日最低5分は必ずプログラムと向き合う」は実行しています。
一度、龍神録の第13章を見直して必要なパラメータを割出し、それぞれを返す関数を作成しようと思います。
最後までありがとうございました。
第一に完成をめざし、その上で反省してし・・・・の繰り返しをするしかないんですね。
上達への道かはわかりませんが練って似合った「毎日最低5分は必ずプログラムと向き合う」は実行しています。
一度、龍神録の第13章を見直して必要なパラメータを割出し、それぞれを返す関数を作成しようと思います。
最後までありがとうございました。