Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

270
Vistas
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 la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda