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

  FORUM HardWare.fr
  Programmation
  Java

  JAVA - Distribution d'un jeu de carte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

JAVA - Distribution d'un jeu de carte

n°2269225
jumpin
Posté le 07-11-2015 à 13:18:03  profilanswer
 

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  
   }  
   
 }  
}  
 

mood
Publicité
Posté le 07-11-2015 à 13:18:03  profilanswer
 

n°2269226
Devil'sTig​er
Posté le 07-11-2015 à 13:27:17  profilanswer
 

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
n°2269241
jumpin
Posté le 07-11-2015 à 16:30:16  profilanswer
 

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  :??:

n°2269247
Devil'sTig​er
Posté le 07-11-2015 à 17:18:51  profilanswer
 

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 ;)


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

  JAVA - Distribution d'un jeu de carte

 

Sujets relatifs
Besoin d'aide pour programme sous Java's Cool !Appel concurent de procedure stocké oracle dans mon programme java
[java] cherche aide sur getters setterssimulation d'un systeme d'exploitation en java
[java]comment compter les cases identique d'un tableau ?Java map vers Javascript map ?
Recherche développeur FullStack Java/AngularJspropriétés des objets java (en nombre de bits )
progamme javajava virtual machine dans une fenêtre tkinter
Plus de sujets relatifs à : JAVA - Distribution d'un jeu de carte


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