2012-07-26 3 views
1

PHP 블랙 잭 스크립트는 간단합니다. 카드 배열을 가지고 있으며 무작위로 하나를 선택하여 추가합니다. 또한 어려운 부분이 에이스와 함께 오는 횟수를 유지하기가 쉽습니다.PHP 블랙 잭 에이스

bruteforcing을 제외하고 계산에 효율적인 방법이 있습니까? 이론적으로 4 개의 에이스를 연속적으로 얻는 것은 가능할 지 모르나 (어떻게 될지는 모르겠지만), 44, 34, 24 등이 아닌 14로 계산하면 어떨까요? (넘어서 가지 않고 21에 가장 가깝다)

+4

당신의 코드를 볼 것이 좋을 것이다. – Adi

+0

하나는 다음과 같을 수 있습니다. 초과하는 경우 가장 큰 것을 선택하고 21의 최대 수에 대해 10을 뺍니다. 4xAces = 44-> 34-> 24-> 14 –

+1

중복, 답변보기 : http://stackoverflow.com/questions/837951/is-there-an-elegant-way-to-deal-with-the- ace-in-blackjack? rq = 1 –

답변

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; 
    } 
} 
+0

예를 들어,이 3 개의 카드 드로우 : 5, A, 7; 당신은 흉상 것입니다; 정말 13이되어야합니다. 물론, 당신이 항상 에이스를 마지막으로 적용 할 수 있도록 목록을 정렬한다면; 너 괜찮을거야. –

+0

그게 바로 내가'Handle other cards'를 먼저 코딩 한 이유입니다. –

+0

카드가 에이스가 아니지만 psuedocode가 좋을 때마다 $ total + = 11이 실행되기 때문에 코드가 제대로 작동하지 않으며 이에 근거하여 코드를 작성했습니다. – Madmadmax

0

에이스에 대한 규칙 때문에, 블랙 잭의 카드는 그 자체로 가치가 없다. 당신은 각 카드를보고, 가치를 결정하고, 카드를 추가하지 않습니다.

손을보고 손의 가치를 결정하십시오.

이제 손의 가치를 결정할 때 대부분의 카드에 해당하는 값은 카드 번호와 동일하지만 카드와 에이스에는 특별한 논리가 필요합니다.

따라서 : 덱에서 "숫자"를 그려 "카드"를 그려 넣지 말고 "카드"의 "손"(목록)을 값으로 평가하는 함수를 작성하십시오. 에이스를 처리하기 위해이 같은

관련 문제