遊戯王デュエル用の単純な C++ プラットフォームを構築していますが、カードの効果に問題が見つかりました。ほとんどすべてのカードが異なる効果を持っているので、これはカードごとに異なる関数を書かなければならないことを意味します。これを簡単にする方法はありますか、それともゲームのすべてのカードに対して関数を作成する必要がありますか?y
2 に答える
いずれにせよ、すべてのエフェクトを何らかの方法で実装する必要があります。それらを異なる関数、または異なるクラスに配置すると、コードを整理するのに役立ちます。関数ヘッダーは、自分自身へのインラインリマインダーとして考えてください。「ここから、この特定のチャンクの実装が開始されます」。
言い換えれば、関数を節約しないでください。後で自分に感謝します。
理論的には、すべての効果を1つの巨大な関数に配置することは可能ですが、特に長期的には、意味のある意味で「簡単」になることはありません。
そして、一般的なプログラミングについての本を読んでください。StackOverflowは学校ではありません。Steve McConnell(ISBN 1556154844)による「CodeComplete」は優れています。
デザインパターンの仕事のように聞こえます。私はyu-gi-ohにあまり詳しくありませんが、あなたが望むことを達成できると確信しています。これらのアプローチでは、古き良きオブジェクト指向プログラミングを使用する必要があります。これがあなたを助けるかもしれないいくつかの開始パターンです:
戦略パターン(ダメージやトラップなどの一般的なタイプの「カード効果」を見つけて機能を拡張する): http ://sourcemaking.com/design_patterns/strategy/cpp/1
デコレータパターン(エフェクトの一部が他の「カードエフェクト」と類似している場合、エフェクトがさまざまなことを行う場合は、デコレータパターンを使用して、別のカードからのダメージエフェクトと、これに適用されるスリープエフェクトを組み合わせることができます。カードなど): http ://sourcemaking.com/design_patterns/decorator
いずれにせよ、これらのパターンのいずれかをオンラインソースから学ぶことは非常に困難です。これがあなたが興味を持っているもののように聞こえるなら、私は外に出て良いデザインパターンブックを手に入れることをお勧めします。残念ながら、c++用のデザインパターンブックについての良い提案はありません。