我正在尝试使用 HTML5 画布、JavaScript 和 XML 制作一种游戏。这个想法是,您可以通过将问题和答案放在 XML 文件中来进行测验。我写了一个循环遍历所有问题的主循环,提出它们并检查答案的正确性。现在我只是使用警报和对话框来回答问题问题是我的主循环是一个相互关联的大整体,它从头到尾遍历整个游戏,而不是让警报框提出问题和对话框回答,紧接着,我想要一些用户交互。问题的答案出现在屏幕底部的方框中,用户可以控制起重机来选择正确的答案。这是我坚持的主循环中的代码片段:
answer = loadQuestion(i);
if (answer == "correct") {
// answered correctly, update scoreArray and load next question
scoreArray[currentQuestion] = "correct";
// show 'next'-button and wait for press to continue
} else {
// answered incorrectly again, update scoreArray and load next question
scoreArray[currentQuestion] = "error";
// show 'next'-button and wait for press to continue
}
如您所见,我正在调用 loadQuestion,它会立即加载问题,显示可能的答案,并且现在会立即抛出一个对话框,您可以在其中输入答案。返回并验证此答案。
我已经对起重机的控制进行了编程,用户已经可以用它拿起一个盒子。但是因为我正在调用 loadQuestion 并期望它返回一个值,所以这不起作用。如何让我的主循环“暂停”,直到玩家使用起重机给出答案,然后继续?我已经尝试将答案设为全局变量,并且只有一个空的while answer == ""以使函数忙于什么都不做,直到 answer 得到一个值,但这只会冻结脚本。我还弄乱了区间以试图监视答案变量的状态,并在发生这种情况时清除区间并返回值,但这只是返回 false,因为函数完成而没有立即返回值。