Algo de tirage de cartes

Algo de tirage de cartes - Java - Programmation

Marsh Posté le 13-02-2006 à 12:12:56    

Salut tout le monde.
 
Bon alors je suis en train de coder un petit jeu de cartes. Alors le probleme ( qui n'en est pas vraiment un), se situe au tirage de carte.
Je crée une classe Cartes avec ma methode qui va bien pour tirer une carte dans un jeu de 52.  
Mais au 2eme tirage, je voudrais une nouvelle carte moins la première. Au troisieme tirage une nouvelle moins les 2 premières, etc.
Alors ce que je fais c'est que je remplis un tableau de 52 int. Je fais un random sur le tableau. A la place de la valeur lue, je fous un 0 par exemple. Si au 2eme tirage le random tombe sur le zero, il retire. dans la pratique, sa marche.
Dans la théorie, si j'ai distribué 50 cartes et qu'il en reste donc 2 à tirer, sa me fait un peu chier que ma methode pioche sans arret avant de tomber sur une des 2 cartes restantes...
 
Donc ma question est : y a t'il un moyen plus "propre" de faire la meme chose ? Style un Random(52) -36, -4, -41. enfin un truc du style. Ou encore mieu, les cartes piochées je les fous dans un nouveau tableau et je fais Random(52)-nouveau_tableau.
 
Si vous avez des pistes de réponses, merci à vous  :jap:

Reply

Marsh Posté le 13-02-2006 à 12:12:56   

Reply

Marsh Posté le 13-02-2006 à 12:15:43    

ben tu fais un random sur le nombre de cartes qu'il reste et tu utilises ce résultat comme l'index à chopper dans ton tableau, que tu auras mélangé au préalable? :heink:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-02-2006 à 12:26:26    

Ya des fois, j'ai un peu honte  :o  
J'étais tellement parti sur la solution Random(52) -nouveau tableau que j'ai pas pensé à ça...
 
Merci à toi en tout cas  :jap:  
 
( ya un truc pour mélanger un tableau viteuf ou je fais ça a "l'ancienne" ?)

Reply

Marsh Posté le 13-02-2006 à 12:29:43    

Code :
  1. Collections.shuffle


Message édité par the real moins moins le 13-02-2006 à 12:30:29

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 13-02-2006 à 12:31:10    

merki  :jap:

Reply

Marsh Posté le 13-02-2006 à 15:25:39    

Bon alors je me suis penché sur la chose et je galère comme un con... J'arrive pas a y arriver  :fou: ( et sa m'énerve de pas trouver la réponse tout seul !).
 
J'ai cherché dans la doc, et d'après ce que j'ai compris ( pas grand chose mafois! ) on peut faire un shuffle sur une liste, style :
 
var liste = new Array(9, 5, 1, 7, 0, 3, 2, 8, 6, 4);
tablo.shuffle();
 
Mais j'y arrive pas si j'ai un truc du style:
 
int tab[] = new int[10];
for (int i = 0; i<=9; i++){
   out.println("Rentrer un nombre :" );
   tab[i] = lecture.nextInt();
}
//et c'est là que je voudrais mélanger mon tableau...
alors j'ai essayé pleins de choses, j'ai cherché dans la JavaDoc ( qui n'est pas encore très claire pour moi ), mais impossible d'arriver a mes fins...
 
Donc si tu peux encore me filer un chtit coup de pouce... sa serai super sympa.
Je sais bien quec'est pas toujours super rigolo de répondre a des neb's comme moi, mais faut bien qu'on début un jour et qu'une ame charitable nous file un petit coup de pied au cul au début pour avancer plus vite...
 
Enfin merci à toi en tout cas :jap:  

Reply

Marsh Posté le 13-02-2006 à 15:35:11    

J'ai trouvé:
 
Random rgen = new Random();  // Random number generator
int[] cards = new int[52];  
 
//--- Initialize the array to the ints 0-51
for (int i=0; i<cards.length; i++) {
    cards[i] = i;
}
 
//--- Shuffle by exchanging each element randomly
for (int i=0; i<cards.length; i++) {
    int randomPosition = rgen.nextInt(cards.length);
    int temp = cards[i];
    cards[i] = cards[randomPosition];
    cards[randomPosition] = temp;
}
 
 
source >> http://www.leepoint.net/notes-java [...] fling.html

Reply

Marsh Posté le 13-02-2006 à 15:41:29    

J'ai trouvé queudalle oui, il se sert pas du tout du Collections.shuffle là....

Reply

Marsh Posté le 13-02-2006 à 17:27:15    

Le Collections.shuffle(maListe), c'est pour "mélanger" un objet de type java.utils.List.
 
Tu ne pourras pas utiliser ça car tu as avec un tableau.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed