Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1041 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Algo de tirage de cartes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Algo de tirage de cartes

n°1304202
tanshiro
Posté le 13-02-2006 à 12:12:56  profilanswer
 

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:

mood
Publicité
Posté le 13-02-2006 à 12:12:56  profilanswer
 

n°1304206
the real m​oins moins
Posté le 13-02-2006 à 12:15:43  profilanswer
 

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 ?
n°1304213
tanshiro
Posté le 13-02-2006 à 12:26:26  profilanswer
 

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" ?)

n°1304215
the real m​oins moins
Posté le 13-02-2006 à 12:29:43  profilanswer
 

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 ?
n°1304216
tanshiro
Posté le 13-02-2006 à 12:31:10  profilanswer
 

merki  :jap:

n°1304422
tanshiro
Posté le 13-02-2006 à 15:25:39  profilanswer
 

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:  

n°1304430
tanshiro
Posté le 13-02-2006 à 15:35:11  profilanswer
 

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

n°1304440
tanshiro
Posté le 13-02-2006 à 15:41:29  profilanswer
 

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

n°1304592
Bidem
Posté le 13-02-2006 à 17:27:15  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Algo de tirage de cartes

 

Sujets relatifs
[Algo] Axes d'un graphiquealgo (qqchose compris entre 2 nombres)
[SGBD] Algo d'une requêteL' algo d' une équation
[Algo] Algorithme d'un Tetris (et programmation)Algo MINI-MAX/ alphabeta
Algo suite logiquealgo/Python : point à l'intérieur d'un polygone ?
[Algo] Echecs[Algo] Conversion hexa -> decimale
Plus de sujets relatifs à : Algo de tirage de cartes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR