0

ボードゲームで「動き」をモデル化する良い方法を探しています。プレイヤーに彼らの動きが何であるかを尋ね、彼らに反応させ、そして彼らの動きに基づいてボード上で正しいアクションを実行できるようにしたいと思います。問題は、いくつかのタイプの移動があり、それぞれが独自のデータセットを持っていることです。たとえば、スクラブルでは、単語、その位置と方向(または位置などを含むタイルのセット)を返す単語を再生できますが、タイルを交換することもできます(これには、必要なタイルを返す必要があります)スワップ)またはパス。

同様に、チェスでは、通常、駒を移動します。これにより、駒とその移動先の動きが返されますが、2つの駒とその位置、または側面(キング/クイーン)などを示す城もあります。ピース/位置以外の情報。

プレイヤーがMoveオブジェクトを返すのが最善の方法だと思いますが、他のモデリングの選択肢や提案も受け入れます。

ありがとう!

4

5 に答える 5

1

これらはあなたが探しているものと正確に一致しないかもしれませんが、この古い投稿にはたくさんの素晴らしいアイデアがあるようです:

ボードゲームをモデル化するためのパターンはありますか?

いくつかの答えには、Move実装の提案が含まれており、うまくいけば、いくつかの新しいアイデアが得られる可能性があります。

于 2012-11-09T19:48:00.823 に答える
1

経験則として、モノに対して共通のタイプで異なる動作(ここでは移動)が必要な場合は、モノに動作を実装させる必要があります。したがって、ボードが2つの異なる動きをどのように異なる方法で解釈できるかを尋ねる代わりに、2つの異なる動きがそれらの動きを実行するときにボードを異なる方法で使用する方法を検討する必要があります。

つまり、基本クラス(おそらくインターフェイスである必要があります)はMoveであり、perform()メソッドがあり、2種類のmoveにはperform()メソッドの実装が異なります。

于 2012-11-10T08:57:49.363 に答える
0

優れたモデルは、常に要件、データフロー、制御フロー、システムアーキテクチャ全体などの詳細な知識に基づいています。手振りと哲学的な議論によってアプリケーションを設計することはあまり有益ではありません。

あなたの特定の質問に関して、一般的に正当なモデルの1つは、プレイヤーがMoveを返すことですが、完全な詳細に応じて、その実際のメリットは、完全な成功から完全な災害にまで及ぶ可能性があります。

于 2012-11-09T19:23:56.603 に答える
0

ゲーム内の動きは実際にはオブジェクトではありません。それはイベントです。

あなたのチェスの例が最も簡単です。移動すると、ボード上のピースと新しい位置が返されますが、城のイベント、キャプチャイベント、および/またはピースのプロモーションイベントも返される可能性があります。

同様に、スクラブルゲームでは、移動によって言葉遊びイベント、交換タイルイベント、またはパスイベントが返される可能性があります。

イベントは、ゲームの残りの部分へのメッセージと考えてください。クラスと同じようにイベントをコーディングできます。このイベントクラスは、モデルがメッセージを作成できるように、さまざまなゲームクラスにアクセスできる必要があります。

イベントハンドラークラスは、すべてのゲームイベントを処理します。このクラスは、他のゲームクラスを操作するクラスになります。イベントはすべて、イベントハンドラーが処理できる形式である必要があります。

于 2012-11-09T19:35:39.410 に答える
0

異なる実装が外の世界にどのように現れるか以外に共通点がない場合、それはあなたの説明から出てきます。Moveは、異なるゲーム間でそれぞれの実装が独自のことを行う、大まかに定義されたインターフェイスである必要があります。

しかし、私の主な質問は、このインターフェースをさまざまなゲームで知ってもらう理由が本当にあるかどうかです。異なるゲーム間で特定のアクション形式を期待するある種の共有ハンドラーがない場合、私はわざわざ異なるゲーム固有のMoveクラスを定義することはありません。

于 2012-11-09T19:45:33.653 に答える