Javascript / HTML不会输入默认情况下的switch case

时间:2018-01-29 05:26:24

标签: javascript html

我的任务是尝试编写Pig游戏。我试图让代码使用switch语句来确定要遵循的代码块,但它正在跳过案例1和案例2并直接转到默认情况。 roll.score来自此Javascript文件:

function Dice(d1, d2){      //d1 = die 1   d2 = die 2
    this.d1 = d1?d1:parseInt(Math.random()*6 + 1);
    this.d2 = d2?d2:parseInt(Math.random()*6 + 1);
}

Dice.prototype.score = function(){         //d1 = die 1   d2 = die 2
    if(this.d1 == 1 || this.d2 == 1){
        return 1;   //return score 0 for turn
    }else if(this.d1 == 1 && this.d2 == 1){
        return 2;    //return 13 as code to reset score to 0 
    }else
        return parseInt(this.d1 + this.d2);
}

Dice.prototype.toString = function(){
    return "Rolled " + this.d1 + " and " + this.d2;
}

它应该做的是返回1,2或者加在一起的2个数字。就像我上面提到的,无论roll.score()返回什么,switch语句总是转到默认情况。

var again = true;
do {
    var roll = new Dice(parseInt(Math.random() * 6 + 1), parseInt(Math.random() * 6 + 1));
    window.alert(roll.toString());           
    turnCounter++;
    switch (roll.score) {
        case 1: // 1 die = 1
            playerScore = roll.score();
            again = false;
            rollCounter++;
            turnCounter++;
            document.write("Enters case 1");
            break;
        case 2: //2 = snake eyes       
            playerTotal = 0;
            playerScore = 0;
            again = false;
            rollCounter++;
            turnCounter++;
            break;
        default:
            playerScore += roll.score();
            rollCounter++;
            displayScore();
            document.write(roll.score() + "<br/>");
            var rollAgain = window.prompt("Do you want to roll again?(Y/N)");
            if (rollAgain.toUpperCase() === "N") {
                again = false;
                playerTotal += playerScore;
                displayScore();
                turnCounter++;
                if (playerScore > highScore)
                   highScore = playerScore;
            }
            break;
     }

     rollCounter++;
}while (again);

1 个答案:

答案 0 :(得分:5)

switch (roll.score) {switch (roll.score()) {

不同

roll.score是一个函数,而您想在返回的结果(roll.score())上打开结果。