JAVA - Distribution d'un paquet de carte - Java - Programmation
Marsh Posté le 07-11-2015 à 13:18:47
http://forum.hardware.fr/hfr/Progr [...] ujet-1.htm
Je crois
Marsh Posté le 07-11-2015 à 13:47:13
Ce sujet a été déplacé de la catégorie Achats & Ventes vers la categorie Programmation par Djalex
Marsh Posté le 07-11-2015 à 13:06:10
Salut les Hardwarien !
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.
2. Une fois les ArrayList créé, comment distribuer les cartes de l'arraylist paquet vers les arraylist Joueur 1, Joueur 2 => Joueur nbJoueur?
Voici mon code pour les courageux. On ne s'occupe que de la méthode "distribution" :
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
}
}
}
Message édité par jumpin le 07-11-2015 à 13:16:26