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

Collection et Stream Java Discussion :

ArrayList - Jeu de carte


Sujet :

Collection et Stream Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Points : 25
    Points
    25
    Par défaut ArrayList - Jeu de carte
    Bonjour,

    Je suis actuellement en train de créer un jeu de carte en Java.
    J'ai donc commencé par faire ma classe Carte et maintenant je m'attaque à la classe Paquet qui est composée de cartes.

    J'ai donc une classe Carte (normalement pas de problème ici):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Carte {
        //variables
        public String valeur;
        public String couleur;
     
        //constructeurs
        public Carte (String c_valeur, String c_couleur){
            valeur=c_valeur;
            couleur=c_couleur;
        }
    }
    Puis une partie du code qui deviendra plus tard ma classe Paquet(le problème arrive...):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String[] les_couleurs = {"coeur","trefle","pique","carreau"};
    String[] les_valeurs = {"2","3","4","5","6","7","8","9","10","Valet","Dame","Rois","As"};
    ArrayList paquet = new ArrayList();
     
            for(int i=0;i<13;i++){
                for(int j=0;j<4;j++){
                    carte.couleur = les_couleurs[j];
                    carte.valeur = les_valeurs[i]; 
     
                    paquet.add(new Carte(carte.couleur,carte.valeur)); // mon problème est ici
                }
                System.out.println(paquet);
            }
    Je souhaite créer une carte à chaque tour de mes boucles for. Pour créer mon paquet.
    Le problème c'est que mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(paquet);
    ne m'affiche rien..
    Je ne sais pas si ma déclaration de liste est correcte ou pas ? Ou si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paquet.add(new Carte(carte.couleur,carte.valeur));
    a du sens..

    Pouvez-vous, s'il vous plait, m'aider ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ça t'affiche vraiment rien, quand tu fais System.out.println(paquet); ou ça t'affiche quelque chose qui ne correspond pas à ce que tu attends et que tu ne comprends pas ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Bonjour Joel.drigo,

    Tout d'abord merci de prendre le temps de me répondre.

    Je viens de changer de compilateur, car je n'ai pas accès à mon PC aujourd'hui.

    Le message d'erreur qui s'affiche est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    warning: [unchecked] unchecked call to add(E) as a member of the raw type ArrayList
                    paquet.add(new Carte(carte.couleur,carte.valeur)); // mon problème est ici
                              ^
      where E is a type-variable:
        E extends Object declared in class ArrayList
    1 warning
    Je vais faire quelques recherches sur Google, mais effectivement si vous avez quelques pistes ou éléments de réponse je suis preneur.

    Encore Merci pour votre aide.

  4. #4
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    ArrayList<Carte> paquet = new ArrayList<>();



    Mais c'est juste un warning.
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Bonjour Glob,

    Effectivement c'était une erreur t'attention.. :/

    J'ai rajouté cette boucle pour parcourir ma liste et afficher les valeurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for(int x = 0; x < paquet.size(); x++)
          System.out.println("Élément à l'index " + x + " = " + paquet.get(x));
    Mais je n'arrive pas à comprendre ce qu'il me retourne (voir ci-dessous) :
    Élément à l'index 0 = Carte@6d06d69c
    Élément à l'index 1 = Carte@7852e922
    Élément à l'index 2 = Carte@4e25154f
    Élément à l'index 3 = Carte@70dea4e
    Élément à l'index 4 = Carte@5c647e05
    ...

    Merci d'avance pour votre aide.

    PS: Je ne demande pas une réponse, juste un aiguillage si possible.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ce que tu vois c'est la transformation standard en String d'un objet en Java.

    Quand tu écris System.out.println(object);, object est converti en String en appelant la méthode toString() de sa classe, pour pouvoir être affiché. Ta classe Carte n'ayant pas redéfinit la méthode toString(), c'est la méthode de la classe Object qui est appelée et ce que tu vois c'est ce que cette méthode génère comme String.

    Pour avoir l'affichage que tu veux, il te faut donc simplement implémenter toString() dans ta classe Carte de manière à ce qu'elle génère la String qui représentera une carte comme tu le souhaites.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre confirmé
    Avatar de Glob
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2002
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2002
    Messages : 428
    Points : 630
    Points
    630
    Par défaut
    Lorsqu'on a des objets dans une concaténation de Strings, la méthode toString() de chaque objet (ici des Carte) est appelée et son résultat est utilisé pour construire la chaîne finale.

    Par défaut, l'implémentation de Object.toString() produit des chaînes du genre que tu obtiens.

    Surcharge Object.toString() dans Carte, et tu seras heureux.

    EDIT: arfff, grillé.
    Glob
    What would you do if you were not afraid?

    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 41
    Points : 25
    Points
    25
    Par défaut
    Un grand Merci à vous deux pour votre temps et vos explications.

  9. #9
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Tant qu'on est dans les trucs qui vont pas (après le generic) :

    Attribut public, ce n'est pas très conseillé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Carte {
        //variables
        public String valeur;
        public String couleur;
    Casse ne respectant pas le camel case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       //constructeurs
        public Carte (String c_valeur, String c_couleur){
    On ne sort pas des indices de nul part. Les tableaux ont la chouette idée d'avoir un length dessus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            for(int i=0;i<13;i++){
                for(int j=0;j<4;j++){
    Hormis le generic, si le fait de manipuler un "ArrayList" n'est pas important. Autant utiliser un List<Carte> paquet = new ArrayList<>();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ArrayList paquet = new ArrayList();

    Et puis, comme indiqué.
    Toute classe n'ayant pas la méthode "toString()" de surchargé ne fera qu'indiquer sa référence.
    Je ne répondrai à aucune question technique en privé

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [choix de techno]comment programmer un jeu de carte
    Par roilion dans le forum Général Conception Web
    Réponses: 8
    Dernier message: 16/08/2010, 16h43
  2. [C++] Urgent Développeur pour Jeu de cartes simple
    Par koros21 dans le forum Projets
    Réponses: 6
    Dernier message: 10/09/2006, 13h19
  3. [structure de donnée] jeu de carte
    Par .:dev:. dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 20/05/2006, 15h44
  4. [VB] Recrutement pour un Jeu de cartes WHIST
    Par Vesta dans le forum Projets
    Réponses: 5
    Dernier message: 13/09/2005, 19h43
  5. IA avec un jeu de cartes
    Par Captain_JS dans le forum Intelligence artificielle
    Réponses: 3
    Dernier message: 07/02/2005, 10h07

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