Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

249
Views
¿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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!