#javascript
Вопрос:
Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий, я несколько раз тестировал код, но я не могу решить эту проблему. Вот весь сценарий, я несколько раз тестировал код, но я не могу решить эту проблему. Вот весь сценарий
// Constantes const container = document.querySelector('.plateau'); const scoreBoard = document.querySelector('.score'); const btnStart = document.querySelector('.btnStart'); // Variables let derniereCachette = false; let gameOver = false; let score = 0; btnStart.addEventListener('click',startGame); function startGame(){ btnStart.getElementsByClassName.display = 'none'; creationPlateau(); startZombies(); score = 0; scoreBoard.innerHTML = score; scoring(); } //Fonction pour faire apparaitre les zombies aléatoirement function startZombies(){ let cachette = randomUp(); let temp = Math.floor(Math.random() *3) 1; let tempClass = temp gt; 1 ? 'up' : 'up2'; cachette.classList.add(tempClass); //calcul du tps d'apparition: const time = Math.round(Math.random()* (1500 - 250) 250); setTimeout(function(){ cachette.classList.remove(tempClass); if(!gameOver) startZombies(); },time); } function randomUp(){ //On crée une variable pour aller chercher ttes les div qui ont la class = "cachette" const cachettes = document.querySelectorAll('.cachette'); //constante qui va générer un chiffre aléatoire parmi les 9 occurences const idx = Math.floor(Math.random() * cachettes.length); if(cachettes[idx].zombieId === derniereCachette){ console.log; //on relance la génération de l'index return randomUp(); } //ON STOCKE le résultat dans la variable derniereCachette derniereCachette = cachettes[idx].zombieId; //ON RETOURNE à la valeur obtenue return cachettes[idx]; } function creationPlateau(){ let cachetteCrees = 9; container.innerHTML = ' '; //Création d'une boucle pour la création des div qui représentent les cachettes (pas plus de 9) for(let x = 0; xlt; cachetteCrees; x ){ //console.log('apparitions'); //Créer les div let div = document.createElement('div'); //On ajoute une classe à chaque div nouvellement crées div.setAttribute('class', 'cachette'); div.zombieID = x; //On crée dynamiquement uen div avec une classe et un évenement (tie) pour les zombies, Lola. //Zombies let zombie = document.createElement('div'); zombie.setAttribute('class','zombie'); zombie.onclick = tir; div.appendChild(zombie); //Lola let lola = document.createElement('div'); lola.setAttribute('class','lola'); lola.onclick = tir2; div.appendChild(lola); // Mur let mur = document.createElement('div'); mur.setAttribute('class','mur'); div.appendChild(mur); //On rattache nos div (9) à la div plateau container.appendChild(div); } } function scoring(){ scoreBoard.innerHTML ="Score: " score; let message = score gt;=10 ? "C'est gagné !" : "Vous avez perdu, voulez vous refaire une partie ?"; if(score gt;= 10 || score lt;0){ gameOver = true; btnStart.getElementsByClassName.display = 'block'; confirm(message); document.location.href = "index.html"; } } function tir(e){ score ; this.parentNode.classList.remove('up'); scoring(); } function tir2(){ score = score-5; this.parentNode.classList.remove('up2'); scoring(); }
Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий Я несколько раз тестировал код, но не могу решить эту проблему. Вот весь сценарий
Ответ №1:
У каждой рекурсии должен быть базовый случай, то есть, в какой момент она остановится.
Из вышесказанного следует, что он будет продолжать работать и, вероятно, не остановится, так как у браузера полностью закончится память, следовательно, появится сообщение об ошибке.
Предоставьте полную информацию о своем коде там, а не ниже
Комментарии:
1. спасибо за вашу помощь, вы найдете полный сценарий