我正在编写二十一点的 PHP 版本。我在处理 ace 时遇到了麻烦。我知道在编写这个游戏时这是一个特殊的问题。我环顾了其他人提出的其他一些问题,但我找不到我正在寻找的东西。
我认为问题在于,一旦为特定卡调用 getValue 函数,它就不会再为该卡调用它。有没有办法让它再次调用 getValue 函数,例如,如果你用 ace 和 7(即 8 或 18)击中并且你得到 10(将其变为 18 或 28)。在我构建的游戏中,它在那种情况下会失败,因为它不会再次检查卡片以获得总数。
代码如下。我希望它在上下文中有意义,并且我已经很好地解释了这个问题。
function getValue($drawn, $total){
$splitter = str_split($drawn);
$value = $splitter[0];
if($value == 'j' or $value == 'q' or $value == 'k' or $value == 1){
$value = 10;
}else if($value == 'a' and (($total + 11) > 21)){
$value = 1;
}else if($value == 'a' and (($total + 11) <= 21)){
$value = 11;
}else{
$value = $value;
}
return $value;
}
function calculateScore($cardsArray){
for($i = 0; $i < count($cardsArray); ++$i){
$total += getValue($cardsArray[$i]);
}
return $total;
}