首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP Blackjack aces

PHP Blackjack aces
EN

Stack Overflow用户
提问于 2012-07-26 22:32:37
回答 2查看 1.2K关注 0票数 1

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

除了暴力之外,有没有什么有效的方法来计算他们的数量?从理论上讲,连续获得4个A是可能的(尽管可能性很小),我如何才能让它算作14而不是44,34,24等等?(最接近21岁,但不能克服它)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-26 22:42:30

类似下面这样的代码来处理aces:

代码语言:javascript
复制
$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;
    }
}
票数 2
EN

Stack Overflow用户

发布于 2012-07-26 22:41:50

由于aces的规则,21点中的卡片本身没有值。您不需要查看每张卡,确定一个值,然后将其相加。

你看着这只手,然后确定这只手的价值。

现在,当确定手牌的值时,对于大多数牌来说,该值等于牌号,但对于面牌和A,您需要特殊的逻辑。

因此:不要从你的牌组中抽取“数字”,而是抽取“卡片”,并编写一个函数,将“卡片”的“手”(列表)求值为一个值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11671638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档