PHP大酒杯脚本很简单,我有一个卡片阵列,我选择一个随机的卡片,并添加它,并且保持计数的硬盘部分与ace一起也很容易。PHP Blackjack ace
除bruteforcing之外,是否有任何有效的方法来计算它们?从理论上讲,有可能(虽然极不可能)连续得到4个ace,但我怎样才能将它计为14而不是44,34,24等? (最接近21而没有超过它)
PHP大酒杯脚本很简单,我有一个卡片阵列,我选择一个随机的卡片,并添加它,并且保持计数的硬盘部分与ace一起也很容易。PHP Blackjack ace
除bruteforcing之外,是否有任何有效的方法来计算它们?从理论上讲,有可能(虽然极不可能)连续得到4个ace,但我怎样才能将它计为14而不是44,34,24等? (最接近21而没有超过它)
像这样的东西来处理王牌:
$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;
}
}
您可能需要稍微调整一下,例如,给定3张牌:5,A,7;你会破灭;当它真的应该是13.当然,如果你对你的列表进行排序,以便你总是最后使用ace,你会没事的。 – 2012-07-26 14:54:16
是的,这就是为什么我编写'处理其他卡'首先 – 2012-07-26 15:00:08
代码无法正常工作,因为$总+ = 11执行每次卡不是一个王牌,但psuedocode是好的,我写了我的代码基于此。 – Madmadmax 2012-07-31 13:22:32
由于ace的规则,大二十一点的牌本身并不具有价值。你不看每张卡,确定一个值,并添加这些值。
你看看手,并确定手的价值。
现在,当确定一只手的值时,对于大多数卡片来说其值为真,这个值等于卡片号码,但是你需要特殊的面部卡片和王牌。
因此: 不要在你的套牌中画出“数字”,画出“牌”,并写一个函数来评估“牌”的“手牌”(列表)为一个值。
它会很高兴看到你的代码。 – Adi 2012-07-26 14:37:32
其中一个可能是:总是选择最大的一个,如果超过21个,则减去10个最大的a个数。 4xAces = 44-> 34-> 24-> 14 – 2012-07-26 14:39:44
重复的答案见:http://stackoverflow.com/questions/837951/is-there-an-elegant-way-to-deal-with-the- ace-in-blackjack?rq = 1 – 2012-07-26 14:41:28