2017-11-06 16 views
2

을에 에이스 3 , 수트 : 1}); // Ace-3은 앞으로 오는 카드에 따라 4 또는 14가 될 수 있습니다프로그래밍 내가 에이스 값이 1 또는 11 예를 들어</p> <p>해야할지 여부를 계산하는 문제로 실행하고 자바 스크립트

현재 계산으로 처리하지 못하고 구현할 수 없습니다.

function dealCards(player, dealer, deck){ 
    player.push(deck.pop()); 
    dealer.push(deck.pop()); 
    player.push(deck.pop()); 
    dealer.push(deck.pop()); 

} 

그런 다음 내 방식이 단순히 단지의 값을 반환하는 손

function calcHand(Hand){ 
    var handValue = 0; 
    for(let hand of Hand){ 
     handValue += hand.value; 
    } 
    return handValue; 
} 

를 계산하기 : 첫번째

나는 카드 객체와

function fillDeck(numDecks, deck){ 
    cardNum = 0; 
    for(let i =0;i <= numDecks -1; i++){ 
     for(let s = 1; s<=4; s++){ 
      for(let v = 2; v <= 14; v++){ 
       cardType = calcCard(v); 
       value = calcValue(v); 
       suit = calcSuit(s); 
      deck[cardNum] = new Card(value, s, 'img/cards/' + cardType + '_' + 'of_' + suit + '.png'); 
      cardNum++; 
      } 
     } 
    } 
} 
Deck = []; 
fillDeck(5, Deck); 

거래 카드 배열을 채우기 14.

그래서 다음에

Hand.push(Deck.pop()); 

내가

Hand({value: 11, suit: 2}, {value: 3, suit: 1}, {value: 2, suit: 1}); 

지금 손이 6/16

입니다 손에 새 카드를 추가하지만, 3 또는 4 번째 카드가 에이스가 무엇인지 경우 명중 ? 이것이 내가이 문제를 해결하는 문제로 계속 달리고있는 곳입니다.

내 현재 솔루션은 다음과 같습니다

while(calcHand(playerHand) <=16 && dealerHand[1].value > 6 | calcHand(playerHand) <12) 
    { 
      var currentCard = Deck.pop(); 


      if(currentCard.value === 11 && calcHand(playerHand) < 11){ 
       currentCard.value = 11; 
       console.log("Ace = 11 : Value : " + currentCard.value); 

      }else if(currentCard.value === 11 && calcHand(playerHand) >= 11){ 
       currentCard.value = 1; 
       console.log("Ace = 1 : Value : " + currentCard.value); 
      } 
      if(hasAce && (calcHand(playerHand) + currentCard.value) > 21 && 
       playerHand.map(x => x.value).indexOf(11) > -1){ 
       var acePosition = playerHand.map(x => x.value).indexOf(11); 
       playerHand[acePosition].value = 1; 

      } 
     playerHand.push(currentCard); 
     } 
+0

합계 논리는 에이스에 대해 구체적으로 알아야합니다. 첫 번째 패스는 최대 값 (11)으로 에이스를 계산해야하며, 한도를 넘으면 1을 낮추십시오. 한도를 초과하면 다음 값을 1로 낮추십시오. 그것 또는 당신은 당신의 손이 가질 수있는 모든 가능한 합계를 계산하고 최상의 합계에 기초하여 당신의 플레이 결정을 기반으로합니다. – jfriend00

+0

에이스를'[1, 11]'배열로 정의 해 보았습니까? – guest271314

+0

플레이어가 더 이상 히트를 원할 때 Ace 값을 원하는대로 선택해야합니다. – PHPglue

답변

0

처리는 당신이 선택의 여지 결코 실현하면 간단 블랙 잭의 에이스. 규칙은 다음과 같습니다.

  1. 에이스 개수가 1입니다. 기간. 이제 손을합시다.
  2. 총계가 12 미만이고 손에 적어도 에이스가 포함되어 있으면 10을 더하고 "소프트"라고 표시하십시오.

완료.