2016-10-11 3 views
0

Javascript로 블랙 잭 게임을 만드는 과정에 대해 Codecademy의 강의를 진행할 것입니다.For 루프에서 생성자의 함수를 사용합니다.

for-loop에 넣을 코드가 생기지 않습니다. Hand 생성자에 "score"메서드를 작성해야합니다. 그것은 손에있는 모든 카드를 반복해야 각 "getValue"호출의 결과를 요약하고 그 합을 반환해야합니다.

누군가 나를 도와 줄 수 있습니까? 고맙습니다. 여기

내 시도이다, 관련 코드는 내부의 맨 아래에있는 루프에 대한 :

// Card Constructor 
function Card(s, n) { 
    var suit = s; 
    var number = n; 
    this.getSuit = function() { 
    return suit; 
    }; 
    this.getNumber = function() { 
    return number; 
    }; 
    this.getValue = function() { 
    if (number >= 10) { 
     return 10; 
    } else if (number === 1) { 
     return 11; 
    } else { 
     return number; 
    } 
    }; 
}; 

//deal function 
var deal = function() { 
    var randNum = Math.floor(Math.random() * 13) + 1; 
    var randSuit = Math.floor(Math.random() * 4) + 1; 
    console.log(randNum, randSuit); 
    return new Card(randSuit, randNum); 
}; 


function Hand() { 
    var handArray = []; 
    handArray[0] = deal(); 
    handArray[1] = deal(); 
    this.getHand = function() { 
    return handArray; 
    }; 
    this.score = function() { 
    var sum; 
    for (var i = 0; i < handArray; i++) { 
     sum += handArray[i].getValue; 
     return sum; 
    } 
    }; 
}; 
+2

1) 루프에서 'return sum' 문을 이동하십시오. 2)'sum + = handArray [i] .getValue()'줄을 편집하면 함수 호출이되어야합니다. – raina77ow

답변

0
이 같은

그럼 뭔가가 작동합니다 :

this.score = function() { 
    return handArray.reduce(function(memo, val){ 
    return memo + val.getValue(); 
    }); 
}; 
0

난 당신이 점수를 반환 할 필요가 있다고 생각 , 루프 바깥 쪽, 이렇게 :

this.score = function() { 
    var sum; 
    for (var i = 0; i < handArray; i++) { 
    sum += handArray[i].getValue(); 
    } 
    return sum; 
}; 
0

이 문제를 해결했습니다. 당신의 도움을 주셔서 감사합니다!

this.score = function(){ 
    var sum =0; 
    for(var i =0; i<handArray.length; i++){ 
     sum += handArray[i].getValue(); 
    }; 
    return sum; 
};