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 == ""を使用して、答えが値を取得するまで関数をビジー状態に保ちましたが、これはスクリプトをフリーズさせるだけです。また、回答変数のステータスを監視するために間隔をいじり、間隔をクリアして、これが発生したときに値を返しますが、関数はすぐに値を返さずに完了するため、単に false を返します。