【问题标题】:OOP style questionOOP 风格问题
【发布时间】:2009-07-29 07:18:14
【问题描述】:

现在我正在编写一个程序来确定一手牌的价值。一共五个。我有一个 cardHand 对象。我打算写一个对象来比较两个对象,以确定哪只手具有更高的价值。将要比较的两个对象是包含可能手值的对象(一对、三个同类...等)。

stackoverflow 会认为这是一种适合 OOP 的方法吗?

PS:我确实知道该算法在互联网上流传,但我首先尝试自己为 XP 执行此操作。

【问题讨论】:

    标签: c++ coding-style object


    【解决方案1】:

    你想要做的是这样的:

    • 创建一个卡片类。将operator< 添加到此类中,以便您确定各个卡片的排序方式。
    • 创建一个卡片集合(手)类来存储这些卡片的集合。也为这个类定义一个运算符

    如果您将卡片存储在手中的std::multiset 中,您的卡片会自动组合在一起。

    也就是说,如果您插入 2, 7, 3, 4, 3,它们将按以下顺序排列:2, 3, 3, 4, 7。这将帮助您确定诸如对和连音之类的东西。

    【讨论】:

    • +1 路要走。在合理的情况下使用运算符重载以允许对对象进行“标准处理”。或者换句话说:使您的对象尽可能与基本对象无法区分。这样才能获得共同处理和理解的幸福。
    【解决方案2】:

    定义决定哪一手牌高的规则。

    规则1 > 规则2 > 规则3...

    与最大的比较。

    决定手是否符合规则1而不是手1。

    决定手是否符合规则2而不是手2。

    ..

    如果它们在同一个规则中,则在每个规则中创建一个类似的算法。

    这只是一个想法……你可以考虑一下……

    【讨论】:

    • 我想我以为是扑克??
    【解决方案3】:

    每个手对象不应该都有固有的价值吗?然后你可以让另一个对象(庄家?)比较每手牌的价值。庄家也可用于实例化每个手牌对象。

    再一次,也许我把整个“建模问题域”的方法走得太远了。 ;-)

    【讨论】:

      猜你喜欢
      • 2017-07-22
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多