私は10ピンボウリングスコアリングシステムのために以下のコードを持っており、スコアが上がるにつれてコンソール内の「スコア」変数にアクセスしようとしています。 var game = new BowlingGame()
と入力して新しいゲームを作成すると、というコマンドを実行してスコアを取得しますが、var myScore = game.score()
と入力してmyScore
と入力してNaNを取得します。私もちょうどgame.score()
を入力しようとしましたが、それを取得することはできません。新しいロールを作成し続けるうちに、更新されたスコアを取得する方法はありますか?コンソールのJavascript関数内のいくつかの変数の1つにアクセスします。
var BowlingGame = function() {
this.rolls = [];
this.currentRoll = 0;
};
BowlingGame.prototype.roll = function(pins) {
this.rolls[this.currentRoll++] = pins;
};
BowlingGame.prototype.score = function() {
var score = 0;
var frameIndex = 0;
var self = this;
function sumOfBallsInFrame() {
return self.rolls[frameIndex] + self.rolls[frameIndex + 1];
}
function spareBonus() {
return self.rolls[frameIndex + 2];
}
function strikeBonus() {
return self.rolls[frameIndex + 1] + self.rolls[frameIndex + 2];
}
function isStrike() {
return self.rolls[frameIndex] === 10;
}
function isSpare() {
return self.rolls[frameIndex] + self.rolls[frameIndex + 1] === 10;
}
for (var frame = 0; frame < 10; frame++) {
if (isStrike()) {
score += 10 + strikeBonus();
frameIndex++;
} else if (isSpare()) {
score += 10 + spareBonus();
frameIndex += 2;
} else {
score += sumOfBallsInFrame();
frameIndex += 2;
}
}
return score;
};