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);
}
합계 논리는 에이스에 대해 구체적으로 알아야합니다. 첫 번째 패스는 최대 값 (11)으로 에이스를 계산해야하며, 한도를 넘으면 1을 낮추십시오. 한도를 초과하면 다음 값을 1로 낮추십시오. 그것 또는 당신은 당신의 손이 가질 수있는 모든 가능한 합계를 계산하고 최상의 합계에 기초하여 당신의 플레이 결정을 기반으로합니다. – jfriend00
에이스를'[1, 11]'배열로 정의 해 보았습니까? – guest271314
플레이어가 더 이상 히트를 원할 때 Ace 값을 원하는대로 선택해야합니다. – PHPglue