Ajouter un commentaire

Niroken
Re: Jeu de blackjack en java

Bonjour,

Ta classe Deck me parait un peu compliquée pour ce qu'il y a à faire....
Je ne connais pas le blackJack, mais si ta classe Deck contient juste
une liste de cartes à mettre à jour, cela devrait suffire.

Si tu veux représenter les cartes en main des joueurs, il faudra après faire
une classe player avec la liste des cartes qu'ils ont tirés.

Je te propose une classe Deck mise à jour :

package bean;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Deck {
    
    public List<Card> mCurrentCards;
    
    // Initialisation de la liste de cartes
    public Deck() {
        mCurrentCards = new ArrayList<Card>();
    }
    
    // Methode statique permettant de construire un nouveau Deck 
    public static Deck buildNewDeck() {
        Deck vResult = new Deck();
        
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j < 14; j++) {
                vResult.mCurrentCards.add(new Card(j, i));
            }
        }
        
        Collections.shuffle(vResult.mCurrentCards);
        return vResult;
    }
    
    // Pour mélanger les cartes, au cas ou
    public void Shuffle() {
        Collections.shuffle(mCurrentCards);
    }
    
    // Afficher le jeu
    public void printDeck() {
        for (Card vCurrentCard : mCurrentCards) {
            System.out.println("Couleur : " + vCurrentCard.transferColor() + 
                               " Valeur : " + vCurrentCard.transferValue());
        }
    }
    
    // On tire la carte à l'index passée en paramètre
    public Card dealCard(int pIndex) {
        if (pIndex <= mCurrentCards.size()) {
            Card vResult = mCurrentCards.get(pIndex - 1);
            mCurrentCards.remove(pIndex - 1);
            return vResult;
        } else {
            throw new RuntimeException("On ne peut pas tirer cette carte");
        }
    }
    
}

Ainsi que sa classe de test :

import bean.Card;
import bean.Deck;


public class TestDeck {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Deck vDeck = Deck.buildNewDeck();
        //vDeck.printDeck();
        
        Card vCard_1 = vDeck.dealCard(1);
        System.out.println(vCard_1);
        
        Card vCard_2 = vDeck.dealCard(4);
        System.out.println(vCard_2);
        
        Card vCard_3 = vDeck.dealCard(6);
        System.out.println(vCard_3);
        
        Card vCard_4 = vDeck.dealCard(65);
        System.out.println(vCard_4);
    }

}

La classe Card n'est pas modifiée à part la suppression de :

StringBuffer buffer=new StringBuffer(value+" of "+color);
buffer.setLength(20);

dans la méthode toString() qui est inutile puisque Java alloue
automatiquement la taille qu'il faut à ton buffer. De plus sous
la sortie console Eclipse il affiche des caractères bizarres
puisque ta chaine ne fait pas 20 caractères.

J'ai par contre modifié les noms des packages.

Bonne chance,
Niroken

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 RRRR    SSS    GGG    AA       J 
R R S G A A J
RRRR SSS G GG AAAA J
R R S G G A A J J
R RR SSSS GGG A A JJJ