1

我使用 Ruby on Rails 开发了一个类似风险的游戏,我必须开发一个程序来在角色之间(随机)分配领土并将角色的单位(随机)分配到他们的领土。

游戏有 5 个角色的 42 个地区。3 个角色获得 8 个领土,2 个角色获得 9 个领土。每个角色都有 25 个单位(有 9 个领土的单位为 27 个)在分配的领土之间派遣。每个领土必须以至少 1 个单位结束。

我的模型如下。如果需要,我可以更改它。

  • 用户;
  • 游戏 ;
  • 区域 ;
  • 角色,将用户绑定到游戏,持有剩余单位进行部署;
  • 领土,将一个角色链接到一个区域,保存该区域的单位数量。

现在这是我的想法。

  • 我应该将这两个操作(领土调度和单位调度)分开,即使它的性能较差;
  • 为了更容易测试,输出状态应该与相同的输入相同:随机部分应该来自外部。

对于这种情况,你会写什么断言?我使用默认的 Rails 3 测试堆栈:Test::Unit 和固定装置。

该代码可在 GiitHub 上找到

谢谢!

4

2 回答 2

1

您需要的断言看起来很简单:

  • 游戏有42个地区

  • 5个字符。

  • 3 个角色获得 8 个领土,2 个角色获得 9 个领土。

  • 每个角色都有一个 25 个单位的池

等等……

我的模型如下。如果需要,我可以更改它。

  • 用户;
  • 游戏 ;
  • 区域 ;
  • 角色,将用户绑定到游戏,持有剩余单位进行部署;
  • 领土,将一个角色链接到一个区域,保存该区域的单位数量。

现在这是我的想法。

  • 我应该将这两个操作(领土调度和单位调度)分开,即使它的性能较差;
  • 为了更容易测试,输出状态应该与相同的输入相同:随机部分应该来自外部。

附带说明一下,我认为您在这里的前期设计已经做得足够多了。TDD 应该使您的代码设计出现和发展,因此虽然您可以一开始坚持这些预先制定的规则,但您不应该害怕在编写测试时对它们进行更改甚至完全清除它们.

测试驱动实施的最佳方法是进行第一次测试,然后进行另一次测试……并逐步发现最佳设计似乎是什么,而不是从一开始就尝试构建完美的模型。

于 2012-07-29T21:54:54.347 回答
-1

某种 PlayerSelector 不是有用的吗?

也许是一个方法 Player selectPlayer() 或 Player ID。然后,您可以使用某种 CyclicSelector 存根进行选择确定性...您选择的第一个国家/地区进入玩家 1,其次是玩家 2、3、1、2、3 等。

于 2014-05-14T11:24:06.627 回答