1

PHP ブラックジャック スクリプトはシンプルです。カードの配列があり、ランダムに 1 枚を選択して追加します。また、エースで難しい部分が入ってくるカウントを維持するのも非常に簡単です。

ブルートフォース以外にそれらをカウントする効率的な方法はありますか? 理論的には、連続して 4 つのエースを獲得することは可能ですが (可能性は非常に低いですが)、44、34、24 などではなく、14 としてカウントするにはどうすればよいでしょうか? (それを乗り越えずに21に最も近い)

4

2 に答える 2

2

エースを処理するには、次のようにします。

$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-26T14:42:29.947 に答える
0

エースのルールにより、ブラックジャックではカード自体に価値はありません。各カードを見て、値を決定し、それらを追加するわけではありません。

ハンドを見て、ハンドの価値を判断します。

ハンドの値を決定する場合、ほとんどのカードの値はカード番号と同じですが、フェイス カードとエースには特別なロジックが必要です。

したがって、デッキから「数字」を引き、「カード」を引き、「カード」の「手」(リスト) を値に評価する関数を記述しないでください。

于 2012-07-26T14:41:50.343 に答える