Partage
  • Partager sur Facebook
  • Partager sur Twitter

Distribution des cartes d'une pioche

Sujet résolu
    5 décembre 2018 à 10:12:36

    Bonjour à tous ! Je suis en train de configurer la pioche d'un jeu de cartes. Le nombre total de cartes doit se décrémenter à chaque fois qu'on clique sur la pioche.

    Par contre, à chaque clic, mon nombre de carte se réinitialise comme ci-dessous ... Pouvez-vous m'aider sur ce point ?

    Merci d'avance

    public class Pioche {
    
        private ArrayList <ImageIcon> totalCartes ;
        private int nbTotalCartes = 108;
    
    
        public Pioche(int nombre){
    
                this.totalCartes = creationPioche(nbTotalCartes);
                distribuerNCartes(nombre);
                this.nbTotalCartes = this.nbTotalCartes - nombre;
    
    
        }
    
    
        // ***** Méthode qui va initialiser la pioche ***** //
        private ArrayList <ImageIcon> creationPioche(int nbTotalCartes) {
    
            totalCartes = new ArrayList<>(nbTotalCartes); // Création d'une liste de taille : nombre total de cartes (préalablement initialisée)
            File lot = new File("images/Cartes"); // Création d'un répertoire associé au répertoire contenant les cartes
            String lots[] = lot.list(); // Récupération de l'ensemble des fichiers du répertoire lot (Cartes) que l'on va stocker dans un tableau de string
    
            if(lots != null){ // Tant qu'on a pas parcouru tout les fichiers du répertoire :
                for (String file : lots){ //Aller au fichier suivant  et ...
                    totalCartes.add(new ImageIcon(file)); //... ajouter chaque fichier (image) à l'arraylist totalCartes
                }
            }
            return totalCartes; // Retourner la liste de cartes ainsi créée
    
        }
    
    
    
        // ***** Méthode qui va distibuer les cartes ***** //
        private void distribuerCarte() {
    
            ImageIcon carteADistribuer; // Initialiser la carte à distribuer
            Collections.shuffle(totalCartes); // Mélanger la pioche
            carteADistribuer = totalCartes.get(0); //Prendre la première carte
            System.out.println("Nombre de cartes restantes\t" +carteADistribuer.getDescription());
            //////////////////////////////////////////////////
            //Ajouter cette carte à distribuer au joueur correspondant - A faire plus tard
            ///////////////////////////////////////
            this.totalCartes.remove(0); //L'effacer de la pioche
            this.nbTotalCartes --; // Décrémenter le nombre total de cartes restantes.
            System.out.println("Nombre de cartes restantes\t" +nbTotalCartes);
        }
    
    
        private void distribuerNCartes(int nombre) {
            if(nombre>0){
                distribuerCarte();
                nombre--;
                distribuerNCartes(nombre);
            }
    
        }





    -
    Edité par Evoolution 5 décembre 2018 à 10:13:23

    • Partager sur Facebook
    • Partager sur Twitter
      5 décembre 2018 à 10:30:32

      J'imagine qu'à chaque clic en question, tu réinitialises ton objet Pioche ? Un truc comme

      while(partieNonFinie){
      maPioche = new Pioche(1);
      //se passe des choses
      }

      Si tu as toujours 107 cartes, c'est qu'à chaque fois tu récrées ton objet Pioche, donc tu remets 
      toujours ton nombresDeCartes à nbTotalCartes qui vaut 108.

      Et tu as beau décrémenter cette valeur, si tu refaits un new Pioche, il va repartir de ta valeur initiale.

      En gros, tu fois créer ton objet pioche une seule fois, et ensuite faire appel à la méthode distribuerNCartes directement.

      Sinon essaie d'aller voir du côté tu pattern Singleton, je pense que ça pourrait t'intéresser : https://fr.wikipedia.org/wiki/Singleton_(patron_de_conception)#Java

      -
      Edité par Tiffado 5 décembre 2018 à 10:33:02

      • Partager sur Facebook
      • Partager sur Twitter
        5 décembre 2018 à 11:18:05

        Grand Merci @Tiffado! Le défaut a été corrigé. :)

        Tiffado a écrit:

        J'imagine qu'à chaque clic en question, tu réinitialises ton objet Pioche ? Un truc comme

        while(partieNonFinie){
        maPioche = new Pioche(1);
        //se passe des choses
        }

        Si tu as toujours 107 cartes, c'est qu'à chaque fois tu récrées ton objet Pioche, donc tu remets 
        toujours ton nombresDeCartes à nbTotalCartes qui vaut 108.

        Et tu as beau décrémenter cette valeur, si tu refaits un new Pioche, il va repartir de ta valeur initiale.

        En gros, tu fois créer ton objet pioche une seule fois, et ensuite faire appel à la méthode distribuerNCartes directement.

        Sinon essaie d'aller voir du côté tu pattern Singleton, je pense que ça pourrait t'intéresser : https://fr.wikipedia.org/wiki/Singleton_(patron_de_conception)#Java

        -
        Edité par Tiffado il y a 44 minutes



        • Partager sur Facebook
        • Partager sur Twitter

        Distribution des cartes d'une pioche

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown