PHP 21点脚本很简单,我有一组牌,我随机选择一张牌并添加它,它也很容易保持计数,困难的部分与A一起出现。
除了暴力之外,有没有什么有效的方法来计算他们的数量?从理论上讲,连续获得4个A是可能的(尽管可能性很小),我如何才能让它算作14而不是44,34,24等等?(最接近21岁,但不能克服它)
发布于 2012-07-26 22:42:30
类似下面这样的代码来处理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;
}
}发布于 2012-07-26 22:41:50
由于aces的规则,21点中的卡片本身没有值。您不需要查看每张卡,确定一个值,然后将其相加。
你看着这只手,然后确定这只手的价值。
现在,当确定手牌的值时,对于大多数牌来说,该值等于牌号,但对于面牌和A,您需要特殊的逻辑。
因此:不要从你的牌组中抽取“数字”,而是抽取“卡片”,并编写一个函数,将“卡片”的“手”(列表)求值为一个值。
https://stackoverflow.com/questions/11671638
复制相似问题