Estoy trabajando en una parte de una IA minimax para una placa Connect Four.
Tengo un tablero de juego paralelo para probar que se ve así:
let parallelBoard = [ [1,2,3,4,5,6,7], [8,9,10,11,12,13,14], [15,16,17,18,19,20,21], [22,23,24,25,26,27,28], [29,30,31,32,33,34,35], [36,37,38,39,40,41,42] ]; La findAvailableSpots(board) me da una matriz que consta de los números en la primera fila que todavía están disponibles para jugar. Utilizo la primera fila para determinar esto porque empalmo "Rojo" o "Amarillo" en la matriz cada vez que se toma un lugar, y si la primera fila de esa columna está ocupada, ya no se puede seleccionar.
Luego recorro la longitud de los lugares disponibles y tomo cada uno como el índice de la columna en la que quiero poner un marcador y probar.
A continuación, para cada uno de estos lugares disponibles, hago un bucle hacia arriba desde la fila inferior o sexta para colocar la ficha donde no hay una cadena "roja" o "amarilla" en ese lugar.
Me gustaría que se detuviera una vez que encontrara un lugar y pasara al siguiente número en el arreglo parallelAvailable disponible.
Pero si no pongo un retorno, pone un token en cada fila de esa columna.
Si pongo una devolución, se breaks después de empalmar [parallelAvailable][0] .
Me gustaría ejecutar el bucle i para ver en qué fila puede colocar un token y luego pasar a la siguiente en [parallelAvailable][s] .
¿Qué tengo que hacer? ¿Estoy colocando el return en el lugar equivocado, o hay una mejor manera de hacer esto por completo, tal vez con otra if condicional?
function pickBestMove() { // let bestScore // let bestColumn let parallelAvailable = findAvailableSpots(parallelBoard) console.log(parallelAvailable) for (s=0; s<parallelAvailable.length; s++) { let i; let j = parseInt(parallelAvailable[s] - 1) console.log(j) for (i = 5; i > -1; i--) {if (Number.isInteger(parallelBoard[i][j])) { parallelBoard[i].splice((j), 1, currentPlayer) } // let positionScore = scorePosition (parallelBoard, currentPlayer) // console.log(gameboard[i][j] + " gets " + positionScore) // parallelBoard[i].splice((indexPick), 1, gameboard[i][j]) // if (positionScore > bestScore) { // bestScore = score // console.log(bestScore) // bestColumn = s // console.log(bestColumn) // } // // return // } // } } // return bestColumn console.log(parallelBoard)} };