1

私は Ruby on Rails を使用してリスクのようなゲームを開発し、キャラクター間で (ランダムに) 領土をディスパッチし、キャラクターのユニットをそれぞれの領土に (ランダムに) ディスパッチする手順を開発する必要があります。

このゲームには、5 人のキャラクターに対して 42 のテリトリーがあります。3 人のキャラクターは 8 つのテリトリーを受け取り、2 人のキャラクターは 9 つのテリトリーを受け取ります。各キャラクターには、割り当てられたテリトリー間で派遣するための 25 ユニット (9 つのテリトリーを持つキャラクターの場合は 27) のプールがあります。各テリトリーには、少なくとも 1 つのユニットが必要です。

私のモデルは次のとおりです。必要に応じて変更しても大丈夫です。

  • ユーザー;
  • ゲーム ;
  • 領域 ;
  • キャラクター、ユーザーをゲームにバインドし、展開する残りのユニットを保持します。
  • 領土、キャラクターをエリアにリンクし、そのエリアのユニット数を保持します。

ここに私の考えがあります。

  • 2 つの操作 (テリトリー ディスパッチとユニット ディスパッチ) は、たとえパフォーマンスが劣っても分離する必要があります。
  • より簡単にテストするには、出力状態は同じ入力で同じにする必要があります。ランダム部分は外部から取得する必要があります。

そのようなシナリオに対してどのようなアサーションを書きますか? Rails 3 のデフォルトのテスト スタックである Test::Unit とフィクスチャを使用します。

コードは GiitHub で入手できます

ありがとう!

4

2 に答える 2

1

必要なアサーションは非常に単純に見えます:

  • ゲームには42の領域があります

  • 5文字用。

  • 3人のキャラクターは8つの領土を受け取り、2人のキャラクターは9つの領土を受け取ります。

  • 各キャラクターには25ユニットのプールがあります

など...

私のモデルは以下の通りです。必要に応じて変更しても大丈夫です。

  • ユーザー;
  • ゲーム ;
  • エリア ;
  • キャラクター、ユーザーをゲームにバインドし、残りのユニットを保持して展開します。
  • テリトリー、キャラクターをエリアにリンクし、そのエリアのユニット数を保持します。

これが私の考えです。

  • パフォーマンスが低くても、2つの操作(テリトリーディスパッチとユニットディスパッチ)を分離する必要があります。
  • より簡単にテストするには、出力状態が同じ入力で同じである必要があります。ランダムな部分は外部から来る必要があります。

ちなみに、ここでは先行設計を十分に行っていると思います。TDDは、コードの設計を出現させ、進化させることになっているため、最初はこれらの事前に確立されたルールに固執することができますが、テストを作成するときに、それらに変更を加えたり、完全に消去したりすることを恐れないでください。 。

実装をテストドライブするための最良の方法は、最初のテストを開始し、次に別のテストを実行することです...そして、最初から完璧なモデルを構築しようとするのではなく、最適な設計がどのように見えるかを徐々に発見します。

于 2012-07-29T21:54:54.347 に答える
-1

ある種の PlayerSelector は便利ではないでしょうか?

メソッド Player selectPlayer() または Player ID かもしれません。次に、ある種の CyclicSelector スタブを使用して決定論的な選択を行うことができます...最初に選択した国はプレイヤー 1 に、2 番目はプレイヤー 2、3、1、2、3 などになります。

于 2014-05-14T11:24:06.627 に答える