PHP二十一点王牌

时间:2012-07-26 14:32:37

标签: php

PHP二十一点脚本很简单,我有一系列卡片,我选择一个随机的卡片并添加它,并且很容易保持计数的难度与aces一起出现。

除了强制执行之外,还有什么有效的方法来计算它们吗?从理论上讲,有可能(虽然极不可能)连续获得4个ace,我怎么算数14而不是44,34,24等? (最接近21而没有越过它)

2 个答案:

答案 0 :(得分:2)

这样处理aces:

$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;
    }
}

答案 1 :(得分:0)

由于aces的规则,二十一点的牌本身没有价值。您不会查看每张卡片,确定一个值并添加它们。

你看着手,并确定手的价值。

现在,当确定一只手牌的价值时,对于大多数牌而言,这个值都等于牌号,但你需要特殊的面值牌和A值逻辑。

因此: 不要从你的牌组中抽取“数字”,画“牌”,并编写一个评估“牌”“手”(列表)为值的函数。