Bonjour,
je stocke une jeu de cartes dans un vector, et j'ai écrit une méthode permettant de mélanger les cartes.
dans le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class Croupier { public : static std::vector<Carte> Paquet; static std::vector<Carte> Defausse; Croupier() {/*nothing to do */} ~Croupier() {/*nothing to do*/} void Melanger() { int i = 0; for (auto c : Paquet) { do { i = rand() % Paquet.size(); }while (Paquet.at(i) == c); std::swap(c, Paquet.at(i)); } }
Apres c.init_32_cartes(); si je vérifie le contenu du vector rien à dire, tout est normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 std::vector<Carte> Jeu::Croupier::Paquet; int main() { //initialisation des textures des cartes Carte::InitTextureCartes(); //initialisation de la graine srand((unsigned)time(NULL)); //instanciation de la fenetre sf::RenderWindow App(sf::VideoMode(width,height,32), "testSFML"); //instanciation des joueurs Joueurs::Joueur j1("Kamui"), j2("Alu"), j3("7"), j4("TeK"); //instanciation du croupier Jeu::Croupier c; //le croupier choisit un jeu de 32 cartes c.Init_32_cartes(); c.Melanger(); Joueurs::Distribuer(Jeu::Croupier::Paquet); //[...]
Apres c.Melanger();, des doublons sont apparus et (forcément) des cartes ont disparu...
Je cherche depuis un bon moment une explication maintenant, mais je ne trouve rien dans cet algo qui ne pose problème...
(j'ai un petit doute sur ce que fait swap dans mon cas d'utilisation...)
Vous avez une idée?
Partager