评估牌的一手视频扑克

Evaluating Card for a hand of Video Poker

本文关键字:一手 视频 扑克 评估      更新时间:2023-10-16

我将卡片按等级排序,使事情更容易。在如何设置这些检查方面,我需要在正确的方向上得到指导。

例如,要检查是否为直牌,我知道我只需要遍历已排序的牌,看看每个秩是否比前一张牌多1。下面是我对直线的描述。

对于两对,我不确定如何检查两张具有相同秩的连续牌,两次。

一个满屋基本上和两对是一样的,但第二对(或第一对)实际上是一个三胞胎。

我敢肯定,四个人的方式和三个人的方式一样。

直同花顺只是直和同花顺的组合。皇家同花是以10开头的顺花。

这是我的代码。任何帮助都将不胜感激,请提供示例(如果有帮助,我也有SortBySuit函数)。
NewGame.SortByValue();
for( int i = 0; i < 5; i++ )
    tempHand[ i ] = NewGame.SetArray( i );
if( tempHand[ 0 ].GetValue() == tempHand[ 1 ].GetValue() + 1 && tempHand[ 0 ].GetValue() == tempHand[ 2 ].GetValue() + 2 && 
    tempHand[ 0 ].GetValue() == tempHand[ 3 ].GetValue() + 3 && tempHand[ 0 ].GetValue() == tempHand[ 4 ].GetValue() + 4 )
    winType = 4;
    //straight
//for( int i = 0; i < 5; i++ )
//  for( tempHand[ i ].GetValue() == tempHand[ i + 1 ].GetValue() ||
for( int i = 0; i < 5; i++ )
{
    if( tempHand[ i ].GetValue() >= 11 || tempHand[ i ].GetValue() == 1 )
    {
        if( tempHand[ 0 ].GetValue() == tempHand[ 1 ].GetValue() || tempHand[ 1 ].GetValue() == tempHand[ 2 ].GetValue() || 
            tempHand[ 2 ].GetValue() == tempHand[ 3 ].GetValue() || tempHand[ 3 ].GetValue() == tempHand[ 4 ].GetValue() )
            winType = 1;
    }
}//jack or better

您需要从排名最高的手开始,然后向后工作…就像玩扑克一样。

我有同花吗?是皇家的吗?我有直筒裤吗?
我的房间满了吗?

为什么从高层开始?因为这样你就可以安全地从手牌计算中解脱出来,因为你知道你有最优的手牌。
对于两对问题/满屋问题。你需要推广你的手牌计算算法,取一个等于或小于7的数字(所以你也可以玩hold'em),然后递归地调用它,直到你没有剩下的牌。

例如:你的手牌是3 J和2 Q。
迭代1(传入5张牌)-检测3j。
迭代2(传入2张卡)-检测2个Q。
最终通过-计算手牌总价值(由2个解决方案组成)。

对于2对也是一样。
迭代1(传入5张牌)-检测2张J。
迭代2(传入2张卡)-检测2个Q。
迭代3(传入1张卡)-检测1 K。
最终通过-计算手牌总价值(由3个解决方案组成)。发现2对,皇后高和一张k。k很重要,因为除了单张牌之外,你可能会遇到与之匹配的手牌。

简而言之,需要一个从主函数调用的递归函数。函数的每次迭代都应该从传递给它的牌中检测出最优的手牌。

你(1)最后检查千斤顶,(2)当你发现匹配时没有提前退出。

假设你有一个满屋子(Q-Q-Q-9-9)。如果你先查一下是否满座,会匹配的。但随后你可能会检查同一种类的3个(也会匹配),两对(也会匹配)和一对(仍然匹配,因为至少有两个Q)。最后,你会说Q-Q-Q-9-9是一对皇后。

你需要从排名较低的手开始,或者从排名最高的手开始,一旦找到匹配就退出。

为了检查你是有一对还是三组,你可以计算一种卡片的直方图。例如,遍历所有可用的牌,并增加找到的每张牌的计数,这样,如果你有一手牌

2 4 4 5 A

你的箱子会记录

Card - Count
A - 1
2 - 1
3 - 0
4 - 2
5 - 1

然后你可以遍历它并计算你拥有的两类、三类和四类的数量。2 ×两个相同=两对,1 ×两个相同+ 1 ×三个相同=满屋