チェスのようなゲームのルール/検証システムを作成するために使用できるデザインパターン(これは単なる例であり、実際のゲームにはより難しいルールのセットが必要です)
私はこのサイトでいくつかの質問を読みましたが、決定的な答えも、正しい方向に向かっている答えも見つかりませんでした。
このシステムには次のものが必要です。
- ルールが適用されているすべてのオブジェクトは、検証の開始点であるメソッドを持つ特定のインターフェースを実装する必要があります
- ルールは2つのステップで適用する必要があります。まず、検証する必要があります(ポーンAが正方形D4に移動できます)。trueの場合はメソッドAを実行し、falseの場合はメソッドBを実行します。
- すべてのオブジェクトには、特定の順序で適用する必要がある複数のルールを含めることができます。ルール1が終了すると、ルール2が検証を開始します。
- すべての個別のルール(たとえば、1つの正方形のみを移動でき、斜めにしか移動できないなど)は、独自のクラスに属し、再利用可能で、ルールを必要とするオブジェクトに適用できる必要があります。
- これはバックエンドのマルチプレイヤーゲームで使用されることに注意してください
- すべてのルールは、その有効性をテストするために複数のオブジェクトを必要とすることに注意してください。たとえば、通常、ポーンは1マス移動できますが、今度はゲームボードの次のスクエアが対戦相手のポーンで埋められます。結果:ポーンは移動できません。ポーンには、他のポーンの位置、または検証にゲームボードを含める必要があります。
これらのルールの別の言葉は、行動の制限です。