C/Visual C - barajar cartas

 
Vista:

barajar cartas

Publicado por Ale (1 intervención) el 19/05/2002 05:24:57
Saben como se puede hacer una función que baraje un mazo de cartas
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

RE:barajar cartas

Publicado por El mogur (202 intervenciones) el 24/05/2002 18:14:22
Supongo que tienes algún tipo de datos para representar cada carta (vamos, dos enteros indicando el palo y el número o algo así). Los metes todos seguidos en un array, y con un generador de números aleatorios, eliges dos índices del array, y los intercambias. Vuelves a elegir dos números, y los intercambias... y así mucho rato, hasta que el orden original no se parece en nada.
Otra forma: tienes las cartas en un array, tienes otro array que rellenaras con las cartas en desorden, y otro array de valores booleanos. En un bucle vas eligiendo una carta de las cartas originales. Si esa carta ya está en el array final, eliges otra, hasta que encuentres una que no esté en el array, y la añades, así hasta que hayas cogido todas. Para saber si la carta ya la tenias, consultas el de booleanos. Mäs o menos:

Carta cartasOrdenadas[40];
Carta cartasBarajadas[40];

void barajar() {
bool cartaUsada[40];

// Inicializo el array cartaUsada todo a false
...
// Empiezo
for (int i = 0; i < 40; i++) {
int aleatorio = eligeNumeroEntre1y40();
while (cartaUsada[aleatorio - 1])
aleatorio = eligeNumeroEntre1y40();

cartasBarajadas[i] = cartasOrdenadas[i];
cartaUsada[i] = true;
}
}

Espero que te sirva... y no haberme confundido :)

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