PHP二十一点脚本很简单,我有一系列卡片,我选择一个随机的卡片并添加它,并且很容易保持计数的难度与aces一起出现。
除了强制执行之外,还有什么有效的方法来计算它们吗?从理论上讲,有可能(虽然极不可能)连续获得4个ace,我怎么算数14而不是44,34,24等? (最接近21而没有越过它)
答案 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值逻辑。
因此: 不要从你的牌组中抽取“数字”,画“牌”,并编写一个评估“牌”“手”(列表)为值的函数。