JAVA - Distribution d'un jeu de carte

JAVA - Distribution d'un jeu de carte - Java - Programmation

Marsh Posté le 07-11-2015 à 13:18:03    

Salut les Hardwarien !  :p  
 
J'ai pour tâche de développer un genre de jeu de carte en Java. Là où je bloque c'est dans la distribution des cartes aux nbJoueur joueurs. Je m'explique, je possède :  
 
- un Integer nbJoueur : contenant le nombre de joueur par exemple 3  
- un Integer nbCarte : contenant le nombre de carte par exemple 6  
- une arrayList paquet : contenant la liste de toutes les cartes dans un ordre aléatoire par exemple {5;3;1;2;4;6}  
 
1. Pour distribuer les cartes de l'arrayList paquet, il faut d'abord créer le paquet de carte pour chaque joueur (dans une arraylist je suppose?). Donc Arraylit Joueur1, ArrayList Joueur 2 ... Jusqu'à ArrayList Joueur nbJoueur.  
 
Seulement, je ne vois pas comment créer automatiquement des Arraylist de Joueur 1 jusqu'à Joueur nbJoueur.  :ouch:  
 
2. Une fois les ArrayList créé, comment distribuer les cartes de l'arraylist paquet vers les arraylist Joueur 1, Joueur 2 => Joueur nbJoueur?  :pt1cable:  
 
Voici mon code pour les courageux. On ne s'occupe que de la méthode "distribution" :  
 
 

Citation :


package JeuDeCarte;  
 
import java.util.*;  
 
public class GestionJeuDeCarte  
{  
 public static void main(String[] args)  
 {  
  JeuDeCarte jdc = new JeuDeCarte();  
  jdc.creationPaquetDeCarte();  
  jdc.distribution();  
   
 }  
}  
 
 
 
class JeuDeCarte  
{  
 int nbJoueur;  
 int nbCarte;  
 int[] paquet;  
   
 public void creationPaquetDeCarte()            //Declaration de la fonction de creation de paquet de carte  
 {  
  Scanner scannbCarte = new Scanner(System.in);           //Instanciation des scanners  
  Scanner scannbJoueur = new Scanner(System.in);  
   
  System.out.println("Bonjour, combien y a t-il de joueur?" );  
  int nbJoueur = scannbJoueur.nextInt();              //Associe la valeur rentree par l'utilisateur dans l'entier nbJoueur  
   
  while (0 < nbJoueur && nbJoueur > 11)              //Boucle qui redemande de rentrer le nombre de joueur si le nombre rentre n'est pas compris entre 0 et 10  
  {  
   System.out.println("Entree incorrecte ... Merci de renseigner un nombre de joueurs compris entre 1 et 10:" );  
   nbJoueur = scannbJoueur.nextInt();              //Associe la nouvelle valeur rentree par l'utilisateur dans l'entier nbJoueur  
  }  
   
  System.out.println("Merci, combien y a t-il de cartes dans votre paquet?" );  
  nbCarte = scannbCarte.nextInt();               //Associe la valeur rentree par l'utilisateur dans l'entier nbCarte  
   
  while (0 < nbCarte && nbCarte > 101)             //Boucle qui redemande de rentrer le nombre de joueur si le nombre rentre n'est pas compris entre 0 et 100  
  {  
   System.out.println("Entree incorrecte ... Merci de renseigner un nombre de cartes compris entre 1 et 100:" );  
   nbCarte = scannbCarte.nextInt();              //Associe la nouvelle valeur rentree par l'utilisateur dans l'entier nbCarte  
  }  
   
  while (nbCarte % nbJoueur != 0)               //Boucle qui indique que le reste de la division de nbCarte par nbJoueur doit etre nul pour que les deux valeurs soient des multiples entre eux  
  {  
   System.out.println("Le nombre de carte n'est pas un multiple du nombre de joueur, merci de saisir un nouveau nombre de carte :" );  
   nbCarte = scannbCarte.nextInt();  
  }  
       
  System.out.println("La partie commence avec " + nbCarte + " cartes, et " + nbJoueur + " joueurs. C'est parti !" );  
   
  scannbCarte.close();  
  scannbJoueur.close();  
 }  
   
 public void distribution()  
 {  
   
  ArrayList <Integer> paquet = new ArrayList <Integer> (nbCarte);       //Creation du paquet de carte dans une arraylist  
   
  int length = 0;  
   
   while (length < nbCarte)                //Melange des cartes de maniere aleatoire  
   {  
    int n = (int) (Math.random() * nbCarte);  
    if (!paquet.contains(n))  
    {  
     paquet.add(n);  
     length += 1;  
    }  
   }  
   
   for (int i=0; i < nbCarte; i++)  
   {  
    System.out.println("Le paquet est melange ! Voici les valeurs dans l'ordre : " + paquet.get(i)); //Affiche la liste des cartes melangees  
   }  
   
 }  
}  
 

Reply

Marsh Posté le 07-11-2015 à 13:18:03   

Reply

Marsh Posté le 07-11-2015 à 13:27:17    

hum je n'ai pas lu le code fournit, mais par rapport à ta question (créer un array list/joueur):
 
Tu as pas mal de façon, la plus simple étant une liste de liste:

Code :
  1. List<List<Individual>> group = new ArrayList<List<Individual>>(4);


 
Par exemple, va pré-allouer 4 arraylist (donc pour 4 joueurs)

Message cité 1 fois
Message édité par Devil'sTiger le 07-11-2015 à 13:27:56
Reply

Marsh Posté le 07-11-2015 à 16:30:16    

Devil'sTiger a écrit :

hum je n'ai pas lu le code fournit, mais par rapport à ta question (créer un array list/joueur):
 
Tu as pas mal de façon, la plus simple étant une liste de liste:

Code :
  1. List<List<Individual>> group = new ArrayList<List<Individual>>(4);


 
Par exemple, va pré-allouer 4 arraylist (donc pour 4 joueurs)


 
Merci pour ta réponse,
 
D'accord je vois, donc dans mon exo je dois remplacer le 4 par "nbJoueur" normalement.
 
Ensuite pour la distribution des cartes de l'arraylist "paquet" vers toutes les arrayliste "joueur" as-tu une idée? Ca m'a l'air très complexe  :??:

Reply

Marsh Posté le 07-11-2015 à 17:18:51    

Hum le hic est que autant que je sache, tu ne peux pas réaliser ce que tu souhaites faire avec ce code:
 
Ton arrayList doit gérer une classe "Carte" qui stocke son numéro integer, mais aussi son type (carré, pique, treffle...), ce que tu ne fais pas actuellement.
 
Une fois ca fait, tu mélange ton paquet, et ensuite tu prends la dernière carte de l'array list paquet, que tu retires, et ajoute à une des array list joueur.
 
En gros
 

Code :
  1. // i étant la taille de la liste, mais tu peux aussi le faire à l'envers
  2. // ca ne pose pas de soucis, vu que ton paquet est mélangé...
  3. Carte carte = paquet.get(i);
  4. // J'ajoute à un utilisateur (ici 0), la carte
  5. // C'est une liste de liste, donc get(0) me redonne une liste
  6. listJoueur.get(0).add(carte);
  7. // Je retire du paquet
  8. paquet.remove(i);


 
Grosso merdo ;)

Reply

Sujets relatifs:

Leave a Replay

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