Cybersnap
Messages postés19Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention17 août 2007
-
17 mai 2007 à 16:06
Cybersnap
Messages postés19Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention17 août 2007
-
25 mai 2007 à 16:26
Bonjour, je réalise un jeux de poker. Je dois générer 9 cartes 2 pour le 1er joueur, 2 pour le 2eme. Et les 5 cartes du millieu.
J'ai un probleme car le jeu de poker ce joue qu'avec un seul jeux de carte :(
et ici, il me génére des fois les mm cartes donc j'aimerais trouver un algorithme qui me permet de générer 9 cartes différentes.
voici mon code :
CJ1[1] = Hasard.
Hasard.RandomMinMax(1, 52);
// utilise la fct hasard et genere un nbr entre 1 et 52CJ1[2] = Hasard.
Hasard.RandomMinMax(1, 52);
// pour afficher une des 52 cartes 1-13 coeur 14-26 pique ...CJ2[1] = Hasard.
Hasard.RandomMinMax(1, 52);CJ2[2] = Hasard.
Hasard.RandomMinMax(1, 52);CJ3[1] = Hasard.
Hasard.RandomMinMax(1, 52);CJ3[2] = Hasard.
Hasard.RandomMinMax(1, 52);CJ3[3] = Hasard.
Hasard.RandomMinMax(1, 52);CJ3[4] = Hasard.
Hasard.RandomMinMax(1, 52);CJ3[5] = Hasard.
Hasard.RandomMinMax(1, 52);
CarteJ11.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ1[1] +
".bmp");
// affichage des cartes en bitmapCarteJ12.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ1[2] +
".bmp");CarteJ21.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ2[1] +
".bmp");CarteJ22.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ2[2] +
".bmp");CarteJ31.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ3[1] +
".bmp");CarteJ32.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ3[2] +
".bmp");CarteJ33.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ3[3] +
".bmp");CarteJ34.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ3[4] +
".bmp");CarteJ35.Image =
new
Bitmap(
"Resources\\Bitmap_" + CJ3[5] +
".bmp");
gbourgeois0019
Messages postés152Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention 2 juin 20081 17 mai 2007 à 19:00
Garde les cartes que tu as déjà dans un tableau et puis lorsque tu prend une autre carte au hasard vérifie qu'elle n'est pas dans le tableau ;-)
________________________________________________________________________
Hardware is what we play with until it breaks, Software is what we play with until it works !
cs_0xYg3n3
Messages postés115Date d'inscriptionmardi 1 février 2005StatutMembreDernière intervention 8 octobre 2007 18 mai 2007 à 11:13
Et pourquoi pas une collection, hashtable ou liste.
Lorsque tu fais ton random (valeur X), tu le bornes de 0 a Collection.Count ensuite tu supprime l'élement à la position X.
Bien sûr en début de chaque partie tu réinitialise ta collection, hashtable ou liste.
}
Alors soit tu construits un paquet trié avec BuildOrderedDeck et tu tires les carte aléatoirement dans ce paquet à l'aide de la méthode DrawRandomCard, soit tu construits ton paquet brassé avecBuildShuffledDeck, et tu peux les tirer à la suite.
Amicalement, SharpMao
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 25 mai 2007 à 13:58
@#°#@#@§
(pour ne pas dire autre chose)
Désolé pour le formattage, cette fois j'espère que ça va passer.
/// <summary>
/// Tire une carte au hasard dans un paquet et l'enlève du paquet.
/// </summary>
/// Le paquet de cartes.
/// Générateur de nombres pseudo-aléatoirs.
/// <returns>La carte tirée.</returns>
private int DrawRandomCard(List deck,Random r)
{
int index = r.Next(deck.Count);
int res = deck[index];
deck.RemoveAt(index);
return res;
}
/// <summary>
/// Construit un paquet de cartes ordrées
/// </summary>
/// La capacité du paquet.
/// <returns>Le paquet de carte</returns>
private List BuildOrderedDeck(int capacity)
{
List res = new List(capacity);
for (int i=0;i<capacity;i++)
res.Add(i);
return res;
}
/// <summary>
/// Construit et brasse un paquet de carte.
/// </summary>
/// La capacité du paquet.
/// Le nombre d'échange de carte pour brasser le paquet.
/// <returns>Le paquet de carte</returns>
private List BuildShuffledDeck(int capacity, int swapCount)
{
List deck =BuildOrderedDeck(capacity);
Random r = new Random();
for (int i = 0; i < swapCount; i++)
{
int index1 = r.Next(capacity);
int index2 = r.Next(capacity);
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 25 mai 2007 à 14:15
Ou alors, une autre méthode pour avoir un paquet brassé :
/// <summary>
/// Construit et brasse un paquet de carte.
/// </summary>
/// La capacité du paquet.
/// <returns>Le paquet de carte</returns>
private List BuildShuffledDeck(int capacity)
{
List deck = BuildOrderedDeck(capacity);
List result = new List(capacity);
Random r = new Random();
for (int i = 0; i < capacity; i++)
{
result.Add(DrawRandomCard(deck,r);
}
return result;
}
Amicalement, SharpMao
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
Cybersnap
Messages postés19Date d'inscriptionjeudi 14 décembre 2006StatutMembreDernière intervention17 août 2007 25 mai 2007 à 14:53
Oui ca fct comme ca. Pour ma boucle for, je déclare tt mes variables au dessus de mon programme. Et ce qui est du i ==52 ca fct aussi puisque je part de 1 jusque la 52eme carte donc qd je suis à la 52eme je quitte la boucle.
SharpMao
Messages postés1024Date d'inscriptionmardi 4 février 2003StatutMembreDernière intervention 7 juin 201069 25 mai 2007 à 15:46
Ecoute, si ton code fonctionne, je veux bien manger mon diplôme.
Essaie ça :
for (
int
i = 1;
i == 52;
i++)
{
MessageBox.
Show(
"J'y suis.");
}
MessageBox.
Show(
"J'ai terminé.");
D'après ce que tu me dis, cette boucle devrait s'effectuer 52 fois et t'afficer 52 fois "J'y suis."
Tu verras bien qu'en fait il affiche directement "J'ai terminé.".
Amicalement, SharpMao
"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)