首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TDD Spider纸牌

TDD Spider纸牌
EN

Stack Overflow用户
提问于 2009-01-07 00:40:31
回答 4查看 1.2K关注 0票数 2

我提出的另一个关于TDD的问题。我读过一些关于TDD的文章和书中的章节,我理解为什么你应该TDD,我理解简单的例子,但似乎当我在现实世界中尝试时,我很容易被卡住。

如果你要编写Windows Vista附带的著名Spider纸牌,你能给我一些简单的TDD示例吗?你会从哪些测试开始?

EN

回答 4

Stack Overflow用户

发布于 2009-01-07 01:28:58

好吧,当你问到蜘蛛纸牌的TDD时,你基本上是在问如何设计这样的游戏。测试将是设计决策的结果。纸牌是一个简单的游戏,但是从头开始设计这样的游戏并不是一件容易的事情(有不止一种方法可以做到)。

您可能想要从一些更简单的设计开始,比如猜数游戏(系统生成一个随机数,您尝试在尽可能少的尝试中猜出它)。

这样一个简单游戏的一些特性是:

  1. 功能可随机生成1到10之间的秘密数字。生成新数字可启动新游戏。
  2. 功能可比较玩家的输入是否高于或低于该数字,或者
  3. 功能上的猜测是否正确以计算

的猜测次数

因此,您可以尝试以下测试(就像粗略的示例,但很容易编码):

  1. 运行你的生成器1000次。确保每次都赢。
  2. 对于一组样本数字(随机生成),比较函数是否在number > secret_number时返回"HIGH“,在number < secret_number时返回"LOW”,在number == secret_number时返回"WIN“?
  3. 重复上一次测试,但跟踪测试的项目数。当返回"WIN“时,确保您的计数器功能与测试的项目数相匹配。

这只是一个非常粗略的提纲,决不是完整的。但是您可以从英文描述中看到,代码示例将更加冗长。我认为如果你想要更具体的答案,你必须问一个更具体的问题。

票数 3
EN

Stack Overflow用户

发布于 2009-01-07 01:52:35

纸牌游戏包括纸牌。

因此,您可以想到一个Card类。您可以为各个Card对象编写一些测试。您可以编写Card类来通过测试。

你需要一副牌来洗牌,并在布局中进行交易。您可以考虑Deck类和shuffle算法,以及它如何维护处理的状态。你为一个洗牌和交易的Deck写了一些测试。您可以编写您的Deck类来通过测试。注意,这需要一个模拟随机数生成器,它实际上不是随机的。

纸牌游戏包括一种带有空白空间和卡片的布局。规则中的一些空格(仅限国王或王牌)。纸牌游戏有时会涉及一支股票,或多或少是甲板的残余物。

因此,您可以考虑一个Layout类,其中包含卡片的空间。您为布局编写了一些测试,并放入了各种卡片。您可以编写布局类来通过测试。

然后是关于哪些卡片可以从布局中移出的规则。全堆,子堆,顶牌,什么都行。您有一个AllowedMove或GameState或类似的类。一样的演练。粗略地定义它的作用,编写测试,完成类。

你有用户界面和显示东西。演练是一样的。

  1. 定义类。
  2. 定义测试。
  3. 完成类。

等。

我在一本关于OO Design的书中详细介绍了这一点。

票数 3
EN

Stack Overflow用户

发布于 2009-01-07 09:39:33

首先,你应该从引擎中分离出图形用户界面。TDDing图形用户界面是最难的部分,所以你应该保持你的图形用户界面层尽可能的薄。在谷歌上搜索“谦逊的对话框”,然后阅读tddui list on Yahoo! groups

引擎层将实现游戏规则。我不确定Spider纸牌与古老的纸牌(即Windows 3.1)有什么不同,我基于以下内容:

以下是我将开始的初始测试列表:

  • 您始终可以将卡片移动到空堆叠中
  • 卡片具有值,并且可以与卡片进行比较
  • 您只能将卡片移动到非空堆叠中当顶部的卡片低于移动的卡片
  • 您始终可以将多张卡片移动到空堆叠中H112>当顶部的卡片低于移动的卡片
  • 从堆叠中移动所有翻转的卡片时,您只能将多张卡片移动到非空堆叠中。第一张牌可以退回(或者应该自动退回?)
  • 您可以从码头上取出第一张牌,并将其放入任意堆栈(?)

我对规则不太确定,但我想这已经足够让我明白了。

最后,从最简单的测试开始,当你有一个新的测试想法时,或者当你发现自己有疑问时,将测试添加到列表中:如果……会发生什么?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/418778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档