1

PHP二十一点脚本很简单,我有一组牌,我随机选择一张并添加它,而且保持计数也很容易,其中最难的部分与 A 一起出现。

除了暴力破解,还有什么有效的方法来计算它们吗?从理论上讲,有可能(尽管极不可能)连续获得 4 个 ace,我如何让它算作 14 而不是 44、34、24 等?(最接近 21 没有克服它)

4

2 回答 2

2

像这样处理王牌的东西:

$total = 0;
// Sort in a way that the aces are last, handle other cards FIRST
foreach($cards as $card)
{
    switch($card)
    {
        case "king":
        case "queen":
        case "jack":
        case "10":
            $total += 10;
            break;

        // Etc, other cards

        case "ace":
            if($total >= 11)
            {
                $total += 1;
            }
            else
            {
                $total += 11;
            }
            break;
    }
}
于 2012-07-26T14:42:29.947 回答
0

由于 A 的规则,二十一点中的牌本身没有价值。您无需查看每张卡,确定一个值,然后添加它们。

您查看手牌,并确定手牌的价值。

现在在确定一手牌的价值时,对于大多数牌来说,它的价值等于牌号,但你需要针对面牌和 A 的特殊逻辑。

因此:不要从你的牌组中抽出“数字”,抽出“牌”,然后编写一个函数,将“牌”的“手”(列表)计算为一个值。

于 2012-07-26T14:41:50.343 回答