【问题标题】:My number of guesses wont stop at correct level我的猜测次数不会停在正确的水平
【发布时间】:2016-03-21 13:21:00
【问题描述】:

我目前只使用 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) 如何正确设置每个难度?

【问题讨论】:

    标签: javascript numbers getelementbyid elements


    【解决方案1】:

    尝试让所有三个选项都设置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:另外,在您的代码中,您调用了 3 次 number_of_guesses++;,这就是每次猜测计数 3 次的原因。要使它们仅计为一个,您只需要第一个。每次检查时,数字都将保持不变,因此您不需要增加 3 次。

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

    【讨论】:

    • 谢谢,我已经改了。我的猜测现在计数为 1 而不是 3。当我选择中间时,它应该停在 40,但它继续上升到 45,当我按高级时,它应该停在 35,但又变成 45。我需要改变什么让它工作?
    • 我的代码应该已经解决了这个问题,因为中级和高级级别都在修改 maximum_guesses 变量,然后由我代码中的最后一个 if 语句检查。你把intermediate_guessesadvanced_guesses改成maximum_guesses了吗?
    • 另外,您可能希望将> 符号更改为>==,以便在用户 35、40 或45 次猜测时停止,不仅仅是上面它。
    • 是的,intermediate_guesses 和 advanced_guesses 现在显示 maximum_guesses,但它仍然不起作用。
    • 有没有我可以发给你完整的代码副本,让你看看为什么它不起作用?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多