Estoy haciendo el juego de la serpiente y quiero aleatorizar la posición. La serpiente es una matriz de 3 objetos, cada uno con coordenadas x e y. Quiero aleatorizar solo el primer objeto, y el resto, ya sea las coordenadas x o y, solo agregaría 1 en él.
El siguiente código no funcionará porque cada xey está llamando a un número aleatorio diferente. ¿Cuáles son las soluciones?
function randomPos() { let x = Math.floor(Math.random()*numOfColumns + 1) let y = Math.floor(Math.random()*numOfRows + 1) return { x, y } } const snakeBody = [ {x: randomPos().x, y: randomPos().y}, {x: randomPos().x + 1, y: randomPos().y}, {x: randomPos().x + 2, y: randomPos().y} ]Está devolviendo una coordenada x e y en su función randomPos() pero solo está usando una de ellas.
Además, solo necesita una posición aleatoria, pero está llamando a randomPos() 6 veces.
Solo llámelo una vez, ya que calcula las coordenadas x e y y solo necesita una posición, no 6. Luego use ambos valores usando la desestructuración de objetos y utilícelos para calcular los otros dos valores.
const numOfColumns = 20; const numOfRows = 20; function randomPos() { let x = Math.floor(Math.random()*numOfColumns + 1) let y = Math.floor(Math.random()*numOfRows + 1) return { x, y } } const { x: x1st, y: y1st } = randomPos() const snakeBody = [ {x: x1st, y: y1st}, {x: x1st + 1, y: y1st}, {x: x1st + 2, y: y1st} ] console.log(snakeBody);