Jeu de Blackjack en java

Signaler
Messages postés
8
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
12 novembre 2009
-
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
-
Salut à tous,

Dans le cadre d'un cours d'informatique que je suis dans le cadre de mes études, je dois réaliser un jeu de blackjack. ayant commencé le java, il y a moins d'un mois, je galère, mais je m'en sors pas trop mal, ça va!! Comme logiciel, j'utilise Netbeans.

Pour ce jeu de blackjack, j'ai déjà un ficheir JPaneForm nommé blackjack.java mais ce fichier ne me sert à rien pour l'instant!! j'ai ensuite créé une class card dans un fichier card.java dont voici le code :

public class card {
    int colorcard;
    int valuecard;
 
    //*****************************************
    // Constructor
    //*****************************************
    public card(int color, int value) {
       valuecard = value;
       colorcard = color;
    }
 
      public int getColor() {
            // Return the int that codes for this card's suit.
        return colorcard;
    }
 
    public int getValue() {
            // Return the int that codes for this card's value.
        return valuecard;
    }
}


Ensuite, j'ai créé une class deck : (deck signifie jeu de carte en anglais!!)


public class deck {
    card[] carddeck= new card[52];
 
     public deck()
     {
         int color=0;
         int value=0;
         int cardcreated=0;
         for(color=0;color<4;color++)
             for(value=1;value<13;value++)
             {
                //if (value > 10)
                //    value = 10;   // For a Jack, Queen, or King.
                carddeck[cardcreated]=new card(value,color);
                cardcreated++;
                //System.out.println(carddeck[cardcreated]);
                //JOptionPane.showMessageDialog(null, carddeck[cardcreated]);
             }
     }         
}

Mon probleme maintenant, et il y en a plusieurs!! j'ai besoin d'aide pour afficher mon jeu de carte mais j'ai essayé plusieurs méthodes mais aucune ne marche!
J'aimerais maintenant créé une méthode dans ma classe deck afin de pouvoir choisir une carte au hasard mais ne jamais tomber sur la même carte 2 fois!!
mon souci, c'est que je ne sais pas par où commencé!!si quelqu'un pouvait juste me donner quelques pistes pour me guider, ce serait vraiment super sympa!

merci d'avance à tous ceux qui voudront bien me filer un coup de main!!!!!

5 réponses

Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
Bonjour,
Pour l'affichage, commence par afficher le nom des cartes en mode console.

Ensuite, tu veux faire des tirages sans remises : crée par exemple une liste de tes cartes et pour prendre une carte, tu fais un tirage dans ta liste et tu retire la carte de ta liste. Quand il n'y a plus de carte, tu le signales. Pour continuer, il faudra reconstituer la liste.


thip
Messages postés
8
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
12 novembre 2009

J'ai réussi à fairel 'affichage en mode console quand j'appuie sur un bouton j'ai 3 cartes qui sont tirés au hasard dans ma liste et maintenant j'aimerais ajouté ces valeurs dans une autre liste mais j'ai une erreur voici mon code pour ma méthode dealCard

// Choose one card :
    //***********************************
    public List dealCard(int choosecard){
            //choose one card :
        for(int i=0;i<choosecard;i++){
             list.get(i);
             //this.valueCard.setText("test");
            System.out.println(list.get(i));
           //JOptionPane.showMessageDialog(null, list.get(i));
            cardchosen.add(list.get(i).toString());
        }
        return cardchosen;
           // if(cardchoisis.isEmpty())
           //     System.out.println("liste vide");
            //try{
            /*if(cardchoisis.isEmpty()){
                     cardchoisis.add(list.get(choosecard));
                    System.out.println( "size = 0");
            }
            else
                for(int i=0;i< cardchoisis.size();i++)
                    if(list.get(choosecard).equals(cardchoisis.get(i)))
                    {
                        dealCard(choosecard);
                        System.out.println( "size = 0");
                    }
                    else
                    {
                     cardchoisis.add(list.get(choosecard));
                     System.out.println( "size = 0");
                    }
            }
            System.out.println(list.get(choosecard));
           // samecard;
            list.remove(choosecard);
            printCards();*/
    }


C'est cette ligne qui me pose un problème!et je ne comprends pas pourquoi!!
Merci de votre aide
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
Bonjour,

 cardchosen.add(list.get(i).toString());


1) L'index du get() ne devrait pas être i mais un nombre aléatoire entre 0 (inclus) et list.size() (non inclus)
2) Le toString me semble superflu.

Tu devrais peut-être faire une méthode qui tire une carte, puis une seconde qui tire n cartes (en se servant de la première bien entendu)

thip
Messages postés
8
Date d'inscription
jeudi 31 juillet 2008
Statut
Membre
Dernière intervention
12 novembre 2009

ok, merci beaucoup pour votre aide!!!! mon blakcjack marche presque mais j'ai une erreur quand je veux faire l'affichage des cartes, le seul problème c'est que l'erreur je ne l'ai pas tout le temps et je ne comprends pas ce que c'est, d'où elle vient et donc je ne sais pas trop comment faire pour la corriger!!!

Voici mon code :
l'erreur se trouve à cette ligne là :

Code:
BufferedImage im = ImageIO.read(getClass().getResource(source));


Voici mon fichier entier pour l'affichage des cartes :


Code:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package graphics;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

/**
*/
public class computergraphicsPanel extends JPanel{


        //##############################################################################
    public graphicsGUI game;   //saves the current BlackjackGui instance on this variable so it can be reffered to in this class

    Graphics2D g2;

    public computergraphicsPanel(graphicsGUI b) {
        super();
        game = b; //creates a new game called b
}

        public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g2 = (Graphics2D) g;
        draw(g2);
    }

           //  !--- All the drawing is done in this method ---!
    public void draw(Graphics2D g2) {
        Boolean turnCard1=game.turnCard;
        Hand computerHand = game.getComputerHand();
        int xPosition = 10; //starting x coordinate which gets larger to shift the additional cards accross
        int numberOfCards = computerHand.getSize();
        for (int i = 0; i < numberOfCards; i++) {

            if (i == 0 && turnCard1==false) {    //draw the dealers cards and check if first card should be faceup or facedown

                try {
                    BufferedImage im = ImageIO.read(getClass().getResource("/graphics/images/back-blue-75-1.png"));    //while the first card should be facedown, draw a facdown card

                    g2.drawImage(im, xPosition, 20, this);  //draws the card im at those coordinates

                    xPosition = xPosition + 100;    //shifts the next card over to the right by 40 pixels

                } catch (IOException ex) {
                     Logger.getLogger(humangraphicsPanel.class.getName()).log(Level.SEVERE, null, ex);

                }

            }
            else {

                Card currentCard = computerHand.getCard(i);
                String source = currentCard.getImage();

                try {
                    BufferedImage im = ImageIO.read(getClass().getResource(source));
                    g2.drawImage(im, xPosition, 20, this);
                    xPosition = xPosition + 100;

                } catch (IOException ex) {
                    Logger.getLogger(humangraphicsPanel.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

        repaint();
        game.repaint();
    }
}

Voici l'erreur :

Exception occurred during event dispatching:
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1362)
at graphics.computergraphicsPanel.draw(computergraphicsPanel.java:72)
at graphics.computergraphicsPanel.paintComponent(computergraphicsPanel.java:40)


Merci de votre aide pour corriger cette erreur, où juste me dire ce qu'il faut que je fasse ce serait super gentil:!!!merci beaucoup par avance!!!
Messages postés
345
Date d'inscription
mardi 1 juin 2004
Statut
Membre
Dernière intervention
17 octobre 2014
3
Bonjour,
Comme le dit le message d'erreur, le paramètre de ImageIO.read est null : vérifie tes données.
Que vaut source au moment de l'erreur ? source.getImage() ? currentCard ? ...

thip