private void Distribution_Aleatoire() { clean(); int i_carte, i_paire; Random g = new Random(); // On utilise la LotoMachine pour générer une série aléatoire LotoMachine hasard = new LotoMachine(nbCartesDansSabot); // On veut une série de nbCartesSurTapis cartes parmi celles // du réservoir int[] tImagesCartes = hasard.TirageAleatoire(nbCartesSurTapis / 2, false); // La série d'entiers retournée par la LotoMachine correspondra // aux indices des cartes dans le "sabot" // Affectation des images aux picturebox PictureBox carte, paire; int i_image; for (int i = 0; i < nbCartesSurTapis / 2; i++) { i_carte = g.Next(0, nbCartesSurTapis); carte = (PictureBox)tlp_cartes.Controls[i_carte]; i_paire = g.Next(0, nbCartesSurTapis); paire = (PictureBox)tlp_cartes.Controls[i_paire]; while (carte.Tag != null || i_carte == i_paire) { i_carte = g.Next(0, nbCartesSurTapis); carte = (PictureBox)tlp_cartes.Controls[i_carte]; } while (paire.Tag != null || i_carte == i_paire) { i_paire = g.Next(0, nbCartesSurTapis); paire = (PictureBox)tlp_cartes.Controls[i_paire]; } i_image = tImagesCartes[i + 1]; // i_carte + 1 à cause // des pbs d'indices carte.Tag = i_image; paire.Tag = i_image; carte.Image = il_Sabot.Images[0]; paire.Image = il_Sabot.Images[0]; //carte = (PictureBox)tlp_cartes.Controls[rand]; //carte.Tag = i_image; } }
private void Distribution_Aleatoire() { // On utilise la LotoMachine pour générer une série aléatoire LotoMachine hasard = new LotoMachine(nbCartesDansSabot); // On veut une série de nbCartesSurTapis cartes parmi celles // du réservoir cartesDistribuees = new int[nbCartesSurTapis]; int[] tImagesCartes_temp = hasard.TirageAleatoire(nbCartesSurTapis / 2, false).Skip(1).ToArray(); // On copie deux fois le tableau temporaire pour avoir 4 doublons d'images tImagesCartes_temp.CopyTo(cartesDistribuees, 0); tImagesCartes_temp.CopyTo(cartesDistribuees, nbCartesSurTapis / 2); // On mélange le tableau Random rnd = new Random(); cartesDistribuees = cartesDistribuees.OrderBy(x => rnd.Next()).ToArray(); }
/* Méthode distribuant 16 cartes aléatoires parmi les cartes disponibles */ private void Distribution_Aleatoire() { PictureBox carte; int i_image, i_carte = 0, i_tapis = 0; // On utilise la LotoMachine pour générer une série aléatoire LotoMachine hasard = new LotoMachine(NB_CARTES_SABOT); // On veut une série de nbCartesSurTapis/2 (pour constituer les paires) cartes parmi celles du réservoir tImagesCartes = hasard.TirageAleatoire(NB_CARTES_TAPIS / 2, false); // Affectation des images aux picturebox // Position aléatoire des cartes LotoMachine hasard2 = new LotoMachine(NB_CARTES_TAPIS - 1); int[] indiceTapis = hasard2.TirageAleatoire(NB_CARTES_TAPIS - 1, false); // On disperse la première moitié des cartes aléatoirement dans le jeu while (i_tapis < indiceTapis.Length / 2) { carte = (PictureBox)tlpTapisDeCartes.Controls[indiceTapis[i_tapis]]; i_image = tImagesCartes[i_carte + 1]; // i_carte + 1 à cause des pbs d'indices carte.Image = ilSabotDeCartes.Images[i_image]; carte.Tag = i_carte + 1; i_tapis++; i_carte++; } i_carte = 0; // Puis on remplit le reste du tapis avec les paires manquantes while (i_tapis < indiceTapis.Length) { carte = (PictureBox)tlpTapisDeCartes.Controls[indiceTapis[i_tapis]]; i_image = tImagesCartes[i_carte + 1]; // i_carte + 1 à cause des pbs d'indices carte.Image = ilSabotDeCartes.Images[i_image]; carte.Tag = i_carte + 1; i_tapis++; i_carte++; } }
private void Distribuer_aleatoire() { LotoMachine hasard = new LotoMachine(nbCartesDansSabot); int randomNumber; tImagesCartes = new int[nbCartesSurTapis]; tImagesCartes = hasard.TirageAleatoire(nbCartesSurTapis, false); int nb = nbCartesSurTapis; for (int i = 1; i <= nbCartesSurTapis / 2; i++) //boucle pour rajouter les images déjà présentes dans le tableau à la suite du tableau -> obtenir des paires { nb += 2; tImagesCartes[nb / 2] = tImagesCartes[i]; } //tImagesCartes[5] = tImagesCartes[1]; //tImagesCartes[6] = tImagesCartes[2]; //tImagesCartes[7] = tImagesCartes[3]; //tImagesCartes[8] = tImagesCartes[4]; List <int> liste = new List <int>(tImagesCartes); //on transforme en liste pour simplifier la suite // La série d'entiers retournée par la LotoMachine correspondra // aux indices des cartes dans le "sabot" // Affectation des images aux picturebox PictureBox carte; for (int i_carte = 0; i_carte < nbCartesSurTapis; i_carte++) { randomNumber = random.Next(1, liste.Count); carte = (PictureBox)tlpTapisDeCartes.Controls[i_carte]; carte.Image = ilSabotDeCartes.Images[liste[randomNumber]]; tImagesCartes[i_carte + 1] = liste[randomNumber]; liste.RemoveAt(randomNumber); //on supprime la valeur pour ne pas l'avoir encore une fois } }