JAVA - Distribution d'un jeu de carte - Java - Programmation
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 :
|
Par exemple, va pré-allouer 4 arraylist (donc pour 4 joueurs)
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):
|
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
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 :
|
Grosso merdo
Marsh Posté le 07-11-2015 à 13:18:03
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
}
}
}