IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

jeu de blackjack


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 37
    Par défaut jeu de blackjack
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    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!!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    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!!!!!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par scoubida42 Voir le message
    j'ai besoin d'aide pour afficher mon jeu de carte mais j'ai essayé plusieurs méthodes mais aucune ne marche!
    Pour écrire sur la sortie standard, le plus simple est d'utiliser System.out.println(); Qu'as-tu essayé jusqu'à maintenant pour afficher ton deck ?

    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!
    Je pense que ce n'est pas la bonne façon de raisonner. Il serait plus simple de mélanger aléatoirement ton deck, puis de prendre les cartes dans l'ordre du tableau mélangé.

    La classe Collections a une méthode statique shuffle() pour mélanger... Sauf que ça mélange une List<?>, pas un tableau. Ma suggestion : construire ton deck sous forme de List<Card> plutôt que sous forme de Card[].

    Exemple de comment ça marcherait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    public class Deck {
        List<Card> list = new ArrayList<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++)
                 {
                    list.add(new Card(value, color));
                 }
             }
             Collections.shuffle(list);
         }         
    }
    Ce n'est qu'un début. Il te reste à décider comment tu veux récupérer les cartes les unes après les autres. Je te recommande de lire la Javadoc de List et de Collection, et éventuellement de Iterator.

    Tu remarqueras que mes classes commencent par une majuscule. Il faut. Fais-le aussi, tu ne le regretteras jamais, et tu apprendras pourquoi plus tard.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 37
    Par défaut re!
    En fait, j'ai acheté un livre sur le java et j'ai trouvé pas mal de truc dedans depuis tout à l'heure!!voici mon code maintenant sachant qu'il m'affiche des valeurs mais c'est null qu'il m'affiche!!!!

    voici ma classe deck.java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package blackjackgame;
     
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    import javax.swing.JOptionPane;
     
     
    public class deck {
        //card[] carddeck= new card[52];
        private card carddeck[];
        int currentCard;
     
        //*****************************************
        // Constructor
        //*****************************************
     
        public deck()
         {
            carddeck= new card[52];
             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]);
                 }
         }         
     
        //*****************************************
        // Méthode pour tirer une carte :
        //*****************************************
        private List list;
     
        public void shuffleCard(){
            list=Arrays.asList(carddeck);
            Collections.shuffle(list);
        }
     
        //Output Deck
        public void printCards()
        {
        int half=list.size()/2-1;
        for(int i=0,j=half;i<=half;i++,j++)
            System.out.println(list.get(i).toString()+list.get(j));
        }
    }
    Ma class card.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    /*
     
    public class card {
     
        private int colorcard;
        private 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;
        }
     
        public String toString(int color, int value) {
            switch (color) {
                case 0:
                    return "Spades";
                case 1:
                    return "Hearts";
                case 2:
                    return "Diamonds";
                case 3:
                    return "Clubs";
            }
     
            switch (value) {
                case 1:
                    return "Ace";
                case 2:
                    return "2";
                case 3:
                    return "3";
                case 4:
                    return "4";
                case 5:
                    return "5";
                case 6:
                    return "6";
                case 7:
                    return "7";
                case 8:
                    return "8";
                case 9:
                    return "9";
                case 10:
                    return "10";
                case 11:
                    return "Jack";
                case 12:
                    return "Queen";
                case 13:
                    return "King";
            }
            return value + "of" + color;
        }
    }
    et mon fichier blackjack.java :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    /*
     * blackjack.java
     *
     * Created on 28 oct. 2009, 14:21:30
     */
     
    package blackjackgame;
     
    import javax.swing.JOptionPane;
    class blackjack extends javax.swing.JFrame {
         deck deckcard[];
        /** Creates new form blackjack */
     
     
     
        public blackjack() {
            initComponents();
        }
     
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">
        private void initComponents() {...}
     
        public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                   //new blackjack().setVisible(true);
                    new deck().printCards();
                     }
            });
        }
     
        // Variables declaration - do not modify
        private javax.swing.JButton dealButton;
        private javax.swing.JButton jButton2;
        // End of variables declaration
    }

    Sinon en fait, j'ai converti mon tableau en list!!

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par scoubida42 Voir le message
    En fait, j'ai acheté un livre sur le java et j'ai trouvé pas mal de truc dedans depuis tout à l'heure!!
    Et ce livre t'a certainement dit de nommer tes classes en commençant par une majuscule. Fais-le, s'il te plaît. Le livre sait ce qu'il dit.

    voici mon code maintenant sachant qu'il m'affiche des valeurs mais c'est null qu'il m'affiche!!!!
    Tu as mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cardcreated++;
    System.out.println(carddeck[cardcreated]);
    Alors que ça devrait être par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    System.out.println(carddeck[cardcreated]);
    cardcreated++;
    Sinon en fait, j'ai converti mon tableau en list!!
    Ah bon ? Pas vu. J'ai vu que tu as utilisé Arrays.asList() pour pouvoir utiliser shuffle(), c'est une manière comme une autre.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 37
    Par défaut re!
    Et ce livre t'a certainement dit de nommer tes classes en commençant par une majuscule. Fais-le, s'il te plaît. Le livre sait ce qu'il dit
    même si j'ai chercher une explication dans le livre et j'ai pas trouvé!!Je viens de le faire puisque tu m'as dit que c'était mieux!!

    Je viens de renommer mes classes et donc mes fichiers et j'ai aussi inverser les 2 lignes sauf que maintenant j'ai une erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: blackjackgame/Card

    Est-ce que tu as une idée de ce qu'est cette erreur?

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 585
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par scoubida42 Voir le message
    même si j'ai chercher une explication dans le livre et j'ai pas trouvé!!Je viens de le faire puisque tu m'as dit que c'était mieux!!
    Bon, en gros c'est une convention de codage en Java. Tout le monde le fait, et ça devrait être une raison suffisante.

    Du coup, un certain nombre d'outils comptent dessus et sur d'autres conventions de codage. Mais surtout, surtout, avec l'habitude, c'est *beaucoup* plus facile de lire (donc maintenir) un programme qui respecte les conventions de codage Java. Je te le jure.

    Je viens de renommer mes classes et donc mes fichiers et j'ai aussi inverser les 2 lignes sauf que maintenant j'ai une erreur :

    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: blackjackgame/Card

    Est-ce que tu as une idée de ce qu'est cette erreur
    *Ahem.* Euh. *Sifflotte.* Bien fait pour ma tronche, à balancer des trucs comme "tu le regretteras jamais." Toutes mes confuses.

    Je ne suis pas sûr du pourquoi du comment, c'est peut-être NetBeans qui cafouille parce que tu as renommé tes fichiers mais que la seule différence est qu'une lettre est en majuscule, une différence invisible sous Windows.

    Je recommande de "nettoyer" ou "rafraîchir" ou quelque chose comme ça, ton projet. En gros, d'effacer toutes les classes compilées et de les recompiler. Ça devrait mieux marcher.

    Si ça peut te rassurer, au pire, si tu crées un nouveau projet et que tu y copies tous tes fichiers *.java, tout marchera très bien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 37
    Par défaut
    pas de souci!c'est déjà sympa à toi de m'aider, donc je comprends tout a fait s'il y a certaines choses que tu ne sais pas!!
    je viens de recréer mon projet et maintenant il m'affiche un truc bizarre :

    blackjack.Card@1729854
    blackjack.Card@6eb38a
    blackjack.Card@1cd2e5f
    blackjack.Card@19f953d
    blackjack.Card@1fee6fc
    blackjack.Card@1eed786
    blackjack.Card@187aeca
    blackjack.Card@e48e1b
    blackjack.Card@12dacd1
    blackjack.Card@1ad086a
    blackjack.Card@10385c1
    blackjack.Card@42719c
    blackjack.Card@30c221
    blackjack.Card@119298d
    blackjack.Card@f72617
    blackjack.Card@1e5e2c3
    blackjack.Card@18a992f
    blackjack.Card@4f1d0d
    blackjack.Card@1fc4bec
    blackjack.Card@dc8569
    blackjack.Card@1bab50a
    blackjack.Card@c3c749
    blackjack.Card@150bd4d
    blackjack.Card@1bc4459
    blackjack.Card@12b6651
    blackjack.Card@4a5ab2
    blackjack.Card@1888759
    blackjack.Card@6e1408
    blackjack.Card@e53108
    blackjack.Card@f62373
    blackjack.Card@19189e1
    blackjack.Card@1f33675
    blackjack.Card@7c6768
    blackjack.Card@1690726
    blackjack.Card@5483cd
    blackjack.Card@9931f5
    blackjack.Card@19ee1ac
    blackjack.Card@1f1fba0
    blackjack.Card@1befab0
    blackjack.Card@13c5982
    blackjack.Card@1186fab
    blackjack.Card@14b7453
    blackjack.Card@c21495
    blackjack.Card@1d5550d
    blackjack.Card@c2ea3f
    blackjack.Card@a0dcd9
    blackjack.Card@1034bb5
    blackjack.Card@15f5897
    blackjack.Card@b162d5
    blackjack.Card@1cfb549
    blackjack.Card@186d4c1
    blackjack.Card@f9f9d8


    Par contre si je lui mets soit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             for(color=0;color<4;color++)
                 for(value=1;value<14;value++)
                 {
                    //if (value > 10)
                    //    value = 10;   // For a Jack, Queen, or King.
                    carddeck[cardcreated]=new Card(value,color);
                    System.out.println(value);
                    cardcreated++;
                 }
    ou ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
             for(color=0;color<4;color++)
                 for(value=1;value<14;value++)
                 {
                    //if (value > 10)
                    //    value = 10;   // For a Jack, Queen, or King.
                    carddeck[cardcreated]=new Card(value,color);
                    System.out.println(color);
                    cardcreated++;
                 }
    Ca marche j'ai bien les bonnes valeurs!!

Discussions similaires

  1. Problème Jeu BlackJack Netbeans
    Par BlackJackH dans le forum NetBeans
    Réponses: 1
    Dernier message: 10/12/2014, 08h46
  2. Aide programmation Python; Jeu de blackjack
    Par toniobuteau dans le forum Général Python
    Réponses: 1
    Dernier message: 03/10/2012, 06h21
  3. [Projet en cours] [WE Jeu 2] Participation de Isammoc : Blackjack
    Par Isammoc dans le forum Projets
    Réponses: 20
    Dernier message: 07/11/2011, 17h14
  4. Quel style de DirectX pour un jeu 2D ?
    Par delire8 dans le forum DirectX
    Réponses: 34
    Dernier message: 31/07/2003, 00h47
  5. Une déclaration pour la survie du jeu vidéo en France
    Par Freakazoid dans le forum DirectX
    Réponses: 1
    Dernier message: 30/10/2002, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo