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

254
Vistas
¿Por qué este bucle `while` no itera y simplemente sale?
function aiPick() { let aiCell = null; while (aiCell == null) { let aiColIndex = Math.floor(Math.random() * 7) console.log(aiColIndex) aiCell = getFirstOpenCellForColumn(aiColIndex) console.log(typeof(aiCell)) console.log(getClassListArray(aiCell)) } aiCell.classList.add('red') checkStatusOfGame(aiCell) yellowIsNext = !yellowIsNext aiClassList = getClassListArray(aiCell) aiColClass = aiClassList.find(className => className.includes('col')); let aiColIndex = parseInt(aiColClass[4], 10); clearColorFromTop(aiColIndex) }

Estoy trabajando en un oponente para un juego Connect Four. Hago que elija una de las siete columnas al azar, y luego la función getFirstOpenCellForColumn marcará la primera celda abierta agregando una clase de red a ese div .

Luego, el código verifica si el movimiento es una victoria con checkStatusOfGame(aiCell) , intercambia al jugador y elimina una ficha que aparece en la parte superior de la columna, fuera del tablero, que sirve como "selector".

Estaba buscando una manera de hacer que la computadora generara un nuevo número aleatorio para elegir una columna cuando el último espacio en la columna estaba ocupado. Pensé que esto sería suficiente, ya que cuando la computadora selecciona una columna completa, me da este mensaje de error:

 script.js:39 Uncaught TypeError: Cannot read properties of null (reading 'classList') at getClassListArray (script.js:39) at aiPick (script.js:274) at HTMLDivElement.handleCellClick (script.js:258)

Pero luego parece que no vuelve a elegir un número aleatorio, sino que simplemente salta a yellowIsNext = !yellowIsNext modo que ahora estoy colocando la ficha roja de la computadora en lugar de las amarillas.

Básicamente, quiero que el código

  1. elige un número al azar
  2. poner la ficha en la columna correspondiente a ese número
  3. si esa columna está llena, vuelve al #1

¿Sabes por qué esto no funciona? ¿Hay otra forma de escribir el ciclo while , o es let aiCell = null ?

¡Gracias!

about 4 years ago · Santiago Gelvez
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