Java - Ayuda con mazo de cartas sin repetir con arrays ( nivel muy basico ) SIN POO

 
Vista:

Ayuda con mazo de cartas sin repetir con arrays ( nivel muy basico ) SIN POO

Publicado por Juan Cruz (1 intervención) el 07/12/2021 20:22:24
String[] mazo = { "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14",
"c15", "c16", "c17", "c18", "c19", "c20", "c21", "c22", "c23", "c24", "c25", "c26", "c27", "c28", "c29",
"c30", "c31", "c32", "c33", "c34", "c35", "c36", "c37", "c38", "c39", "c40", "c41", "c42", "c43", "c44",
"c45", "c46", "c47", "c48", "c49", "c50", "c51", "c52" };

Boolean rep[] = new Boolean[52];
int c , tot=0 , jugada ;



for (int j = 0; j <= 51; j++) {
rep[j] = false;
System.out.println("pos " + rep[j]);
}


c=(int)(Math.random() * 52 + 1);
System.out.println(c);

while (rep[c] == true) {
c=(int)(Math.random() * 52 + 1);
}
rep[c] = true ;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Ayuda con mazo de cartas sin repetir con arrays ( nivel muy basico ) SIN POO

Publicado por Kabuto (1381 intervenciones) el 09/12/2021 20:40:43
¿Se ha de usar un array secundario de booleans?

Lo digo porque una posible forma es marcar con valor null las cartas que se han ido "sacando del mazo" para distinguir las que aún no han salido.

Se pueden ir generando números aleatorios hasta encontrar un valor QUE NO SEA null, o sea, una carta aún incluida en el mazo.
Una vez encontrada, se muestra en pantalla y se marca con valor null para que en el siguiente proceso, ya no vuelva a salir evitando así que se repita.

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
public class MazoCartas {
 
	public static void main(String[] args) {
		String[] mazo = { "c1", "c2", "c3", "c4", "c5", "c6", "c7", "c8", "c9", "c10", "c11", "c12", "c13", "c14",
				"c15", "c16", "c17", "c18", "c19", "c20", "c21", "c22", "c23", "c24", "c25", "c26", "c27", "c28", "c29",
				"c30", "c31", "c32", "c33", "c34", "c35", "c36", "c37", "c38", "c39", "c40", "c41", "c42", "c43", "c44",
				"c45", "c46", "c47", "c48", "c49", "c50", "c51", "c52" };
 
		//Proceso se repite una vez por cada carta
		for (int i = 0; i < mazo.length; i++) {
			boolean fueraMazo = false;
 
			while (!fueraMazo) { //Se repite hasta encontrar una carta que podamos sacar del mazo
				int c=(int)(Math.random() * 52);
				if (mazo[c] != null) {
					//Carta encontrada, la sacamos del mazo
					System.out.println(mazo[c]);
					mazo[c] = null;
					fueraMazo = true;
				}
			}
		}
 
		System.out.println("\n\t\tFIN DE PROGRAMA");
	}
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar