我的猜测次数不会停留在正确的水平上

My number of guesses wont stop at correct level

本文关键字:水平 停留在 我的      更新时间:2023-09-26

我目前正在制作一个仅使用JavaScript的雷区游戏。我在游戏结束时遇到了问题。我有三个难度级别,所以很容易给用户 45 个猜测,中级 40 个猜测和高级是 35 个猜测。但是,由于某种原因,当我将其设置为中级/高级时,它会一直进行 45 次猜测,而不是应该停止的地方。

经过我花了很长时间查看它并更改不同的东西,例如变量的名称和编辑代码。猜测工作正常,因此每个猜测实际上都算作 1 个猜测,现在它们计为 3 个。代码现在停止在 35。

var number_of_guesses = 0;
var maximum_guesses = 45;
var intermediate_guesses = 40;
var advanced_guesses = 35;
var number_of_hits = 0;
var number_of_misses = 0;
var element = opener.document.getElementById("easy");
if (element.checked === true)
{
maximum_guesses = 45;
}
var intermediate = opener.document.getElementById("intermediate");
if (element.checked === true)
{
intermediate_guesses = 40;
}
var advanced = opener.document.getElementById("advanced");
if (element.checked === true)
{
advanced_guesses = 35;
}
number_of_guesses++;
if (number_of_guesses > maximum_guesses)
{
window.alert("Sorry, you have run out of guesses!");
return;
}
number_of_guesses++;
if (number_of_guesses > intermediate_guesses)
{
window.alert("Sorry, you have run out of guesses!");
return;
}
number_of_guesses++;
if (number_of_guesses > intermediate_guesses)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

有人可以告诉我:a) 如何让每个猜测计为 1 而不是 3?b) 如何正确设置每个难度?

尝试让所有三个选项都设置maximum_guesses变量,而不是为不同的难度设置三个不同的变量。然后只需检查一个变量。

var number_of_guesses = 0;
var maximum_guesses = 45;
var number_of_hits = 0;
var number_of_misses = 0;
// notice the missing intermediate_guesses and advanced_guesses vars
var element = opener.document.getElementById("easy");
if (element.checked)
{
maximum_guesses = 45;
}
var intermediate = opener.document.getElementById("intermediate");
if (intermediate.checked)
{
maximum_guesses = 40; // changed this to maximum_guesses
}
var advanced = opener.document.getElementById("advanced");
if (advanced.checked)
{
maximum_guesses = 35; // changed this to maximum_guesses
}
number_of_guesses++; // you only need this once
if (number_of_guesses > maximum_guesses)
{
window.alert("Sorry, you have run out of guesses!");
return;
}

编辑:你还有一个错别字,当你检查是否选中了中级和高级复选框时,你仍然在检查简单的元素。

编辑2:此外,在您的代码中,您调用了number_of_guesses++;三次,这就是为什么每个猜测都计数3次的原因。要让它们只算作一个,你只需要第一个。每次检查时,数字将保持不变,因此您无需将其增加三次。

编辑3:在我的代码中,请注意我如何删除if语句中的=== false部分,其中您选中了复选框是否被选中。