Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

271
Visualizações
Javascript: ¿cómo evito que una función llame a otra función si no se cumple ninguna de las condiciones?

Estoy creando un juego de tres en raya para la clase. En este momento, cuando el usuario hace su movimiento, la función de giro de la computadora está activada, pero estoy tratando de evitar que la "computadora" haga un movimiento cuando el usuario cumple con los criterios ganadores. ¿Me podría ayudar? Gracias

Así funciona mi sistema de turnos

 function leaveMark(){ let toes = document.querySelectorAll('img'); let toesId = this.getAttribute('data-id'); chosenToeId.push(toesId); takenId.push(toesId); userChoices.push(toesId); let chosenToe = chosenToeId[0]; toes[chosenToe].setAttribute('src','img/tic-tac-toe/hammer.png'); chosenToeId = []; userValidation(); // setTimeout(computerTurn, 1000); } /////computer turn//////// function computerTurn(){ let randomId = Math.floor((Math.random()*imgId.length)); let randomIdString = randomId.toString(); let toes = document.querySelectorAll('img'); if (!takenId.includes(randomIdString)){ toes[randomId].setAttribute('src','img/tic-tac-toe/boots.png'); takenId.push(randomIdString); computerChoices.push(randomId); } else{ computerTurn(); } computerValidation(); }

Al principio llamé a la función computerTurn cuando el usuario hacía clic en el tablero, pero ahora estoy tratando de vincularla con la lógica ganadora del juego. Pero dado que mis sentencias if están dentro de forEach, realmente no puedo llamar a la función computerTurn desde allí. También probé con una reasignación de variables, pero creo que no funcionará debido al alcance de forEach.

Gracias de nuevo

Esta es la lógica ganadora.

 function userValidation() { let nextTurn = false; let numberUser = userChoices.map(i=>Number(i)); winningCombos.forEach((e) =>{ let a = e[0]; let b = e[1]; let c = e[2]; if (numberUser.includes(a) && numberUser.includes(b) && numberUser.includes(c)){ console.log('user wins'); } else if (takenId.length === imgId.length){ console.log('This is a tie. Not bad, try again.'); } else { nextTurn = true; } }) if (nextTurn == true){ setTimeout(computerTurn, 1000) } } function computerValidation() { let numberComputer = computerChoices.map(i=>Number(i)); winningCombos.forEach((e) =>{ let a = e[0]; let b = e[1]; let c = e[2]; if (numberComputer.includes(a) && numberComputer.includes(b) && numberComputer.includes(c)){ console.log('Sorry, you lost. Try again!'); } else if (takenId.length === imgId.length){ console.log('This is a tie. Not bad, try again.'); } else { messages.textContent = 'Your turn, user.' } }); };
about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda