だから私はJavascriptを使って古いメモリベースのゲームSimonをエミュレートしようとしています.
私は現在、「サイモン」に「再生」するランダム化されたコマンドを生成させようとしています(divを点灯させ、オーディオを再生します)。コマンドのリスト/配列を入力として受け取る関数を作成しました。Simon は、各コマンドの再生の間に 1 秒間隔でsetInterval
.
function go_simon(simon_array) {
var counter = 0;
var interval = setInterval( function() {
var current_val = parseInt(simon_array[counter]);
switch (current_val) {
case 1:
TL_lightOn();
var interval_1 = setTimeout( function() { TL_lightOff() }, 600);
break;
case 2:
BL_lightOn();
var interval_2 = setTimeout( function() { BL_lightOff() }, 600);
break;
case 3:
BR_lightOn();
var interval_3 = setTimeout( function() { BR_lightOff() }, 600);
break;
case 4:
TR_lightOn();
var interval_4 = setTimeout( function() { TR_lightOff() }, 600);
break;
}
counter++;
if (counter >= simon_array.length)
clearInterval(interval);
}, 1000);
}
この関数do-while
を、メインのゲーム ループとして機能するループ内に配置しました。このループでは、ランダム コマンドが生成され、進行中のコマンド リストに追加され、現在のコマンド リストを再生する「go-simon」関数が呼び出されます。 .
各ループ反復が次のもので構成されることを意図していました。
•Generate random command (1-4)
•Append to running array of commands
•Playback array of commands over time duration - # of commands * seconds
代わりに、loop... は go_simon 関数を何秒も実行せずにループします。alert()
for each 反復を使用して、ループを 10 反復に制限しました。これにより、アラートが立て続けに 10 回呼び出され、最後に go_simon() が 1 回だけ呼び出され、10 個のコマンドで満たされた配列が再生されます。
do {
// create int 1-4 and append to global array
generate_value();
alert(simon_array);
go_simon(simon_array);
if (simon_array.length >= 10) {
alert(simon_array);
condition = false;
}
} while (condition);
このdo-while
ループを取得して、反復ごとに go_simon 関数を適切に実行する方法について何か提案はありますか?
どうもありがとう