Banda Ancha EU

Comunidad de usuarios
de fibra, móvil y ADSL

[Java] Extraer elementos de un array sin que se repitan hasta que se vacíe el array

BocaDePez
BocaDePez

Hola, estoy intentando hacer un juego de memoria que consiste en doce casillas que hay que emparejar dos a dos. El juego es que al pinchar sobre cada una de ellas aparece un número (de 1 a 6) para ello tengo dos arrays cada uno con seis números de 1 a 6 el primer array para las seis primeras casillas y el segundo para las otras seis.

Bueno he hecho que los números aparezcan aleatoriamente extraidos del array pero claro no soy capaz de hacer que al extraer uno de los elementos del array éste desaparezca, es decir sea borrado del array, con lo que en la siguiente casilla vuelve a recorrer todo el array con el riesgo de que el mismo número vuelva a salir y fastidiando el juego. Necesito que en las primeras seis casillas NO se repita ningún número y exactamente igual para las seis últimas.

He intentado muchas cosas todas infructuosas (como por ejemplo buscar la posición del array que sale de cada jugada e igualarlo a 0 y otras más pero nada), me he cansado de buscar en internet y no he encontrado nada que me sirva.

En fin, pues a ver si algún alma caritativa me soluciona esto o me da algún indicio que me pueda servir. Hala pues un saludo.

sierpinski
0

No tengo ni idea de lo que quieres decir pero para sacar y eliminar un valor de un array la mayoría de lenguajes de programación tienen una función llamada .pop()

BocaDePez
BocaDePez

no he entendido mucho pero creo que el plan es:

llenar el array (del 1 al 6) y hacerlo aleatorio:

borrame.com/recortes/javascript/fisher-yates.html

cuando ya ha salido pones el elemento a 0 y desactivas el botón

para saber si ha acabado el juego cuentas intentos, o miras si todo el array está a 0 (por ejemplo: sumas los 6 elementos)

🗨️ 1
keved

Estás poniendo un ejemplo de javascript, ojo. El preguntaba sobre java.

keved

Arrays? Usa un ArrayList y el método remove.

vukits

tienes varios subproblemas aqui. Te contestaré a uno, por el momento.

¿Cómo generar un array de 6 numeros que no se repitan?

  1. Antes de nada, trabaja con ArrayList, que es más fácil
  2. vamos a suponer que quieres generar miArray de 6 elementos aleatorios, sin repetidos
  3. Generas un arraylist llamado 'array1a6' , donde en la posición a, se encuentra el entero a .... p.e. a[1]=1 , a[2]=2 etc,etc
  4. en un bucle de 6 vueltas, lo que haces es generar un nº random (minimo 1, máximo la longitud de 'array1a6'), te guardas el entero que está en la posición que acabas de generar y lo guardas en miArray[vuelta] , borras el elemento que acabas de guardarte de 'array1a6'
🗨️ 2
BocaDePez
BocaDePez

OK, muchas gracias por las respuestas. Las probaré. Gracias

🗨️ 1
vukits

segundo y ultimo suproblema.

una vez tengas generados dos arrays , com o te he dicho arriba, vamos a llamarlos array1 y array2.

Los juegos son siempre un bucle infinito tipo 'while true ...... break ...'

así que pinchas en 1ª celda , guardas el valor (p.e. '5' en 'aux'), pinchas en 2ª celda.... y si coinciden, borras dicho valor de array1 y array2 (array1.remove(new Integer (aux)) ; array2.remove(new Integer (aux)) ;))

y ya está