为什么我猜年龄的分数不起作用?

时间:2018-10-18 00:43:10

标签: javascript html css

我正在创建一个可以根据图像猜测名称的游戏。每局游戏有10个回合,在10个回合之后有一个额外的回合,您必须猜测它们的年龄,然后下注。您必须在他们年龄的2年内猜测。如果您猜对了,那么您下注的金额将添加到您的现有分数中。如果不正确,则您的得分会降低您下注的金额。

如果我猜比实际年龄低2,那么它正确加起来。 如果我猜确切的年龄,它正确地加起来。 但是,如果我猜比实际年龄高2岁,它将降低分数,这是不应该做的。我不知道我在做什么错。

这是我的代码的预览:

var age = calcAge(celeb_q_a[celeb_q_a.length-1].dob);
        age = age.toFixed(0);
        alert(age);
        var user_age = document.getElementById("answer-age").value;
        var prev_score = score * 10;
        if ((((age - 2) == user_age)) || (age == user_age) || ((2 + age) == user_age)) {
            prev_score += (document.getElementById("wage").value  * 1);
        }else{
            prev_score -= (document.getElementById("wage").value * 1);
        }

3 个答案:

答案 0 :(得分:0)

我建议更改为一对“小于或等于”和“大于或等于”以分别包含age + 2和age-2之间的所有值。即

if ((age + 2) <= user_age && (age - 2) >= user_age) {
    // do stuff
}

答案 1 :(得分:0)

您可以通过测试失效年龄来简化条件:

if ((age - 2) < user_age) || ((age + 2) > user_age) {
    prev_score -= (document.getElementById("wage").value * 1);
} else {
    prev_score += (document.getElementById("wage").value * 1);    
}

答案 2 :(得分:0)

  

您必须在他们年龄的2年内进行猜测

您可以使用以下代码简化远程验证:

/* run tests */
console.log(isAnswerCorrect(17, 20, 2)) // expect false
console.log(isAnswerCorrect(18, 20, 2)) // expect true
console.log(isAnswerCorrect(19, 20, 2)) // expect true
console.log(isAnswerCorrect(20, 20, 2)) // expect true
console.log(isAnswerCorrect(21, 20, 2)) // expect true
console.log(isAnswerCorrect(22, 20, 2)) // expect true
console.log(isAnswerCorrect(23, 20, 2)) // expect false

/* checker */
function isAnswerCorrect(guess, actual, range) {
  if (guess < actual - range || actual + range < guess) {
    return false
  } else {
    return true
  }
}