Estoy escribiendo una función para un juego de acorazados que crea una cuadrícula de 8x8 y luego coloca dos 'barcos' en posiciones aleatorias dentro de esa cuadrícula:
//generates 8x8 board const generateBoard = () => { const gridRow = [] const gridContainer = [] for(let i=0; i<8; i++){ gridRow[i] = ['x'] gridContainer.push(gridRow) } return gridContainer } //puts ships at two random positions const generateBoardWithShips = (board) => { for (let i=0; i<2; i++) { const x = Math.floor(Math.random() * 8); const y = Math.floor(Math.random() * 8); board[y][x] = ['🚢']; coordinates.push(x,y) } return board } //I also have an entire grid saved to variable initialBoardState const initialBoardState = [ [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']], [['x'],['x'],['x'],['x'],['x'],['x'],['x'],['x']] ] Lo que me confunde es esto: cuando paso initialBoardState como argumento para generateBoardWithShips , funciona como se desea y crea una cuadrícula de 8x8 con barcos en dos posiciones aleatorias.
Sin embargo, cuando paso la salida de generateBoard (también una cuadrícula de 8x8) a generateBoardWIthTwoShips , la salida es una cuadrícula con dos barcos en la misma posición en cada fila.
He registrado la salida de createBoard y es idéntica a initialBoardState , así que si estoy poniendo exactamente la misma entrada en generateBoardWithTwoShips , ¿por qué me da salidas diferentes?
Resumen:
const grid = generateBoard() generateBoardWithTwoShips(initialBoardState) : works fine generateBoardWithTwoShips(grid) : prints 2 ships, but in every row