Llevo años programando pero vengo de otros lenguajes y aqui tengo algun problemita que ya me tiene aburrido
Basicamente es conceptual..... intento mezclar una "cola" que tiene cartas con una idea que tuve de crear otra (doble) e insertar en esta segunda arriba o abajo segun tiro un dado.
La cuestion es que no mezcla nada!!!
Se que la mas facil es crear un vector y aplicarle un shuffle() pero quisiera saber si fuera posible QUE estoy haciendo mal......
Como creo voy a actualizar el codigo que tengo publicado en otro hilo....... lo dejo como referencia del codigo global pero el metodo mezclar() actual (que no funciona) lo coloco aqui:
Código C++:
Ver original
void mezclar() { Baraja carta; int up_down; std::deque<Baraja> nuevo_mazo; // copio el mazo for (int i=0;i<54;i++) { carta = cartas.front(); cartas.pop(); nuevo_mazo.push_front(carta); } for (int i=0;i<1000;i++) { // decido si coloco la carta arriba o abajo (cada vez) // saco siempre del mismo lado carta = nuevo_mazo.front(); nuevo_mazo.pop_front(); if (up_down==0){ nuevo_mazo.push_front(carta); //cout << "arriba\n"; } else{ nuevo_mazo.push_back(carta); //cout << "abajo\n"; } } // lo copio al mazo original for (int i=0;i<54;i++) { carta = nuevo_mazo.front(); nuevo_mazo.pop_front(); cartas.push(carta); } };
OBVIAMENTE... como sigue SI funciona...... aunque quisiera ENTENDER porque de la primera forma no
Código C++:
Ver original
// SI funciona bien usando vectores void mezclar() { Baraja carta; vector<Baraja> nuevo_mazo (54); int up_down; // copio el mazo for (int i=0;i<54;i++) { carta = cartas.front(); cartas.pop(); nuevo_mazo.at(i) = carta; } random_shuffle (nuevo_mazo.begin(), nuevo_mazo.end()); // lo copio al mazo original for (int i=0;i<54;i++) { carta = nuevo_mazo.at(i); cartas.push(carta); } };
Dejo entonces referencia al resto del codigo del otro hilo
GRACIAS!