我正在创建一个可以根据图像猜测名称的游戏。每局游戏有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);
}
答案 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
}
}