2016-10-11 10 views
0

私は、Javascriptでブラックジャックゲームを構築するためのCodecademyのレッスンを行っています。Forループでコンストラクタの関数を使用

for-loopに入れるコードがうまくいきません。私は、ハンドコンストラクタに "score"メソッドを書くはずです。これは、ハンド内のすべてのカードをループし、それぞれに「getValue」コールの結果を合計し、その合計を返します。

誰かが私を助けてくれますか?ありがとうございました。ここで

は私の試み、関連するコードです下部のforループの内部にある。このようなものが動作するはず

// 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; 
}; 
関連する問題