Я пытался понять, как запустить бесконечный цикл во время паузы для щелчка пользователя, а затем разрешить перерыв.
Когда цикл начинается, пользователю предоставляется изображение, и он должен выбрать идентичное изображение из одного из 4 отображаемых. Если они успешно нажимают на совпадение в течение 5 секунд, им предоставляется другое изображение, и игра продолжается. Если они либо выберут неправильное изображение, либо истечет 5 секунд, игра заканчивается.
У меня проработан весь функционал, кроме вот этой паузы в ожидании клика или истечения времени.
В идеале я также хотел бы, чтобы время настраивалось на каждой итерации. Скажем, начните с 5 секунд, затем немного сократите время (10 мс) на каждом цикле.
Я считаю, что это должно быть решаемо с помощью setTimeout() или setInterval(), но просто не могу обдумать это.
Вот минимальная концепция того, чего я пытаюсь достичь.
$('#playnow').on('click',function(){
var speed = 5000;
var speed_reduce = 10;
var game_running = true;
/* create array of images */
var imgs = ['puppy.png','kitten.png','bunny.png','goldfish.png'];
var runnow = setInterval(
function(){
//get random image from loaded theme
rand_img = imgs[Math.floor(Math.random() * imgs.length) ];
//display chosen image
$('#goal_image').html('<img src="'+theme_dir+rand_img+'" />');
// wait up to 5 seconds for user to click or time to expire
if(*clicked and matched*){
//get new random image and reset timer (less 10ms)
}
if(*time expired*){
//bail out and game ends
}
/* reduce time */
speed -= speed_reduce;
},
speed);
});