c# - 从 7 张牌中选出最好的一手牌(德州扑克)

标签 c# algorithm oop

我已经使用 C# 实现了德州扑克游戏。
我写了 Card、Deck、Player、Table 等类...
例如:

    Player player1 = new Player("player1");
    player1.Card1 = new Card(4, Symbol.Clubs, true);
    player1.Card2 = new Card(5, Symbol.Clubs, true);

    Card card1 = new Card(4, Symbol.Clubs, true);
    Card card2 = new Card(7, Symbol.Hearts, true);
    Card card3 = new Card(2, Symbol.Spades, true);
    Card card4 = new Card(4, Symbol.Diamonds, true);
    Card card5 = new Card(4, Symbol.Clubs, true);
    Card[] tableCards = {card1, card2, card3, card4, card5};

我也写了一些评估卡片数组的方法,比如IsFlush、IsStraight、IsPair等等。
我的问题是,如果我有 7 张牌(2 手, table 上 5 张),我应该如何选择最佳手牌组合。
在此代码示例中,它是 {4,4,4,4,7}。

最佳答案

不要针对 5 张手牌编写代码。而是笼统地写。所以,

ContainsStraightFlush
ContainsFourOfAKind
ContainsFullHouse

等如果这些牌的某些子集分别是同花顺、四张等,则会吃掉一组牌并返回 true。

然后从排名最高的手向后运行到最低的。如果这些方法之一返回 true,那么您可以轻松地挑选出满足该条件的最佳手牌。例如在

2h Kh Qh Jh Th 9h 6c

ContainsStraightFlush 将返回 true,然后您可以选择 9h Th Jh Qh Kh 作为最好的牌。

关于c# - 从 7 张牌中选出最好的一手牌(德州扑克),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5874228/

相关文章:

c# - 在 Windows 应用程序 ListView 控件中包装项目

javascript - 如何使用正确的大小写在 SignalR 中传递复杂对象?

c# - 如何将 Microsoft Silverlight for Symbian 编译为 .SIS(独立)应用程序?

java - 如何设置该对象的值? (Java 14)

c# - CaSTLe Windsor 依赖注入(inject),基于客户的自定义实现

algorithm - Ukkonen 的广义后缀树算法

algorithm - 计算 PDF 文件页数的代码改进

java - 在java中将大文件的数据缓存在内存中

python - PyCharm如何继承抽象类

c# - 业务逻辑类的正确接口(interface)