JavaScript - Cómo barajar un mazo de cartas?, Alguien me ayuda?

 
Vista:

Cómo barajar un mazo de cartas?, Alguien me ayuda?

Publicado por principiante (4 intervenciones) el 26/03/2021 12:30:45
Buenos días, a ver si me podeis echar una mano con esto:

Estoy intentado hacer una función que baraje (mezcle) el mazo de cartas. Me planteé la función así:
1º- Creo un array como mazo de cartas. (Esto sin problema)
2º- Creo otro array que representa al nuevoMazo (inicialmente vacio).
3º- Selecciono aleatoriamente un objeto del array, lo inserto en la última posición del nuevoMazo.
4º- Elimino el objeto seleccionado del array mazo.
5º- Devuelvo el valor de nuevoMazo.

El código es este:

1
2
3
4
5
6
7
8
9
10
function barajar(mazo){
    var mazo = crearmazo(); //Crea el mazo de cartas.
    var nuevomazo = []
    for(var i = 0 ; i>48 ;i++){
        var j = Math.floor(Math.random() * (48)); // Número aleatorio.
        nuevomazo[nuevomazo.length]={valor: mazo[j].valor, palo: mazo[j].palo}; //Insertar en última posición
        mazo = mazo.splice(j, 1); //Elimina objeto del mazo
    }
return nuevomazo
}

El resultado del nuevo mazo es un array vacío y por mas vueltas que le doy no veo el problema, a si que espero que alguno de vosotros me podáis orientar.

Dejo también la función para crear el mazo por si estuviera ahí el problema:

1
2
3
4
5
6
7
8
9
10
function crearmazo() {
var mazo = []
var palo = ["c", "d", "t", "P"]
for (var i = 1; i<=12; i++){
  for (var j = 0; j<palo.length; j++){
    mazo[mazo.length] = {valor: i, palo: palo[j]}
   }
  }
return mazo;
}


Gracias!
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

Cómo barajar un mazo de cartas?, Alguien me ayuda?

Publicado por principiante (4 intervenciones) el 26/03/2021 12:55:33
Resuelto, ya vi que tenía algunos errores.

1
2
3
4
5
6
7
8
9
10
11
function barajar(mazo){
    var mazo = crearmazo(); //Crea el mazo de cartas.
    var nuevomazo = []
    for(var i = 0 ; i<48 ;i++){
 
        var j = Math.floor(Math.random() * (48-i)); // Número aleatorio.
        nuevomazo[nuevomazo.length]={valor: mazo[j].valor, palo: mazo[j].palo};
        mazo.splice(j, 1);
    };
return nuevomazo
}

Ha quedado así
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de joel
Val: 3.506
Oro
Ha mantenido su posición en JavaScript (en relación al último mes)
Gráfica de JavaScript

Cómo barajar un mazo de cartas?, Alguien me ayuda?

Publicado por joel (895 intervenciones) el 26/03/2021 14:33:36
gracias por comentarlo!!!
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