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 :

[Conception] Jeux de cartes : tableau et objet


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut [Conception] Jeux de cartes : tableau et objet
    Bonsoir,

    voilà j'ai une classe ci dessous qui représente des cartes,

    j'ai reprensenté mes figures dans un tableau, et mes couleur dans un autre.

    j'aimerais savoir s'il était possible de manipuler les objets avec des tableaux

    merci




    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
     
     
    public class Carte{
     
     
     
    Couleur couleur;
     
     
     
    Figure figure;
     
     
     
     
     
     
     
    public Carte (Couleur c, Figure f) {
     
     
     
     
     
     
     
    this.couleur=c;
     
     
     
    this.figure=f;
     
     
     
    }
     
     
    #
    }

  2. #2
    Membre chevronné Avatar de gronono
    Inscrit en
    Novembre 2003
    Messages
    457
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Novembre 2003
    Messages : 457
    Par défaut
    Je n'ai pas bien compris ta question.

    Mais si la question est-ce qu'on peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonObject [] tab = new MonObject[10];
    Alors oui on peut.

    sinon, donne plus de précisions ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    voilà le code que j'ai donnée tout a l'heure est le construteur de carte, et afin de pouvoir manipuler le paquet de carte j'ai mis les carte dans un tableau comme ceci

    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
     
     
          String [] Couleur = new String[4];
          Couleur[0]="Coeur";
          Couleur[1]="Carreau";
          Couleur[2]="Pique";
          Couleur[3]="Trefle";
     
         String  [] Figure=new String [8];
         Figure[0]="Sept";
         Figure[1]="Huit";
         Figure[2]="Neuf";
         Figure[3]="Dix";
         Figure[4]="Valet";
         Figure[5]="Dame";
         Figure[6]="Roi";
         Figure[7]="As";
    maintenant jaimerais accedez à ma carte

  4. #4
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Je ne saisi pas trop ton problème. Tu crées deux tableaux décrivant les couleurs et les figures mais tu ne fais pas d'association entre les deux pour créer un jeu de cartes.
    D'un point de vue conception, je pense que tu devrais décomposer ton modèle en entitées suivantes :
    Une classe "Couleur", tu en crées 4 occurences.
    Une classe "Figure", tu en crées 8 occurences.
    Une classe "Carte" contenant en attributs une occurence de chacune de ces deux précédentes.
    Engin pour créer ton jeu, tu pourras faire un tableau de Cartes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Carte [] jeu=new Carte[32];
    jeu[0]=new Carte(coeur,sept);
    ...
    et pour y accéder ( en admettant que tu ais créé les accesseurs qui vont bien, et surchargé la méthode toString() ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i=0;i<jeu.length;i++){
       System.out.println("carte n°"+i+" : couleur = "+jeu[i].getCouleur()+", figure = "+jeu[i].getFigure()+".");
    }
    Enfin ceci n'est qu'un exemple, il y a pleins de façon différentes de faire...

  5. #5
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Oups, j'ai mal lu ton premier post et me suis focalisé sur ton deuxième !
    Je rectifies donc ce que j'ai dit, tu fais bien l'association couleur-figure comme je le préconisais ci-avant.
    Pour compléter la seconde partie de ma réponse ( l'accès aux cartes ) qui reste valable :
    Il faux créer des accesseurs ( ou "getters" in english ) dans ta classe carte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public Couleur getCouleur(){
       return this.couleur();
    }
    ...
    dans mon exemple je fais : jeu[i].getCouleur(), en décomposant en peu voila ce que ça donne :
    jeu[i] désigne la "ième" carte du tableau jeu.
    jeu[i].getCouleur() désigne donc la couleur de la "ième" carte du jeu.

    Voilà.
    En espérant ne pas être encore HS sur ce coup ci...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    je sais pas is j'ai bien saisie la manière dont tu fais les associations.

    Il faut savoir que c'est un projet que je dois faire et que les classes mon été fournies et sont compilées donc je ne peux pas les modifier

  7. #7
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    Quelle classes t'on été fournies ?
    Ces classes qui t'on été fournies, tu as bien du avoir leur description ( méthodes ) voir la javadoc ?
    Quel est ton problème exactement ? tu ne sais pas utiliser les tableaux en java ?
    Qu'as-tu fait jusqu'à présent ? Montre-nous le code que tu as écrit et qui te pose problème ( à moins que tu ne veuilles que l'on fasse l'exercice à ta place ).
    C'est pas très clair tout ça.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    Non je ne demande pas qu'on fasse l'exo a ma place, juste qu'on m'aide un peu car je suis pas une lumière ne programmtion, de plus ma formation est a distance donc pas toujours evident de comprendre via des pdf.
    j
    j'ai pas de javadoc j'ai juste des petites notes qui expliquent en gros ce que fais chaque class fournies.

    sinon les seule class détaillées que j'ai c'est la classe Carte, et la class couleur et la clas figure.

    Pour ce qui est de mon code j"ai juste fais les 2 tableau ci-dessus.

    il va bien falloir associé ma classe figure à la class couleur afin d'avoir le résultat d'une carte soir exemple 7 coeur.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    bon voilà ce que j'ai jusqu'à présent

    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
     
    public class belote{
    	public static void main (String[] arguments){
    Carte [] paquet=new Carte [32];
     
          String [] Couleur = new String[4];
          Couleur[0]="Coeur";
          Couleur[1]="Carreau";
          Couleur[2]="Pique";
          Couleur[3]="Trefle";
     
         String  [] Figure=new String [8];
         Figure[0]="Sept";
         Figure[1]="Huit";
         Figure[2]="Neuf";
         Figure[3]="Dix";
         Figure[4]="Valet";
         Figure[5]="Dame";
         Figure[6]="Roi";
         Figure[7]="AS"; 
     
     
     
     
     
    	}
    }

  10. #10
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    bah pourquoi tu n'utilise pas d'ArrayList ou HashMap qui propose des méthodes sympa pour manipuler des cartes comme la méthode shuffle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ArrayList<Carte> belote = new ArrayList<Carte>();

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    tout simplement parce que j'ai pas encore vu ces fonctions

  12. #12
    Membre éclairé Avatar de agougeon
    Inscrit en
    Mai 2005
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 253
    Par défaut
    ok, et ça repond a ton probleme? tu verra il y a plein de méthode implémenté dans ce genre d'objet, pour trier etc...
    Tiens nous au courant

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    en faite j'avais penser faire le liens comme ceci mais je pense pas que ce sois correct

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
     paquet=Couleur[]+Figure[];// mais apparament  ceci marche pas



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    Terminal.ecrireStringln(Figure[1]+(Couleur[0]));// ceci marche pour appeler les carte mais je sais pas si c'est vraiment correct.

  14. #14
    Membre Expert
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Par défaut
    l'association est faite par les deux attributs de la classe carte.
    Tout dabord, il faut que tu fasses des tableaux de figures/couleur et non de strings car le constructeur de carte prends ce type d'objet en parametre.
    pour contruire ta belote faudra faire qqch du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    int indicePaquet=0;
    for(int i=0;i<4;i++){
       for(int j=0;j<8;j++){
           paquet[indicePaquet++]=new Carte(Couleur[i],Figures[j]);
       }
    }
    Comprends-tu mon exemple, car j'ai pas l'impression que tu n'as pas notion de ce qu'est un constructeur, mais aussi des tableaux tout court ( l'initialisation de ton "association" ne fonctionnera jamais, c'est une faute de langage ! )

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    pas trop,

    je te rasure un peu je sais ce que c'est un construteur, mais ce qui m'embrouille c'est le faite de l'utilisé avec des tableaux

    concernant mes string devant les tableaux c'est car il est utilisé dans les class couleur et figure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    class couleur{
    string nom;
    public Couleur( String nomCouleur){
    thisnom=nomCouleur;
    }
    public static Couleur Coeur= new couleur("Coeur");
     
    public static Couleur Pique= new couleur("Pique");
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Figure{
     
    Stringg nom ;
    public static Figure Sept =new Figure("7");
    public static Figure huit =new Figure("8");
    public Figure(String nomFigure){
    this.nom=nomFigure;
    }

  16. #16
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    bah que tu passe un tableau en paramètre ou n'importe quel autre objet, ça ne change rien, tu le reçois en variable locale dans l'implémentation de la méthode/constructeur...

    C'est au niveau de la modélisation que tu bloque, d'après moi. Je te propose quelque chose comme ceci (je pars du principe que tu es en 1.5 et que tu peux utiliser des enum, qui sont très propre à utiliser):
    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
     
    import java.util.ArrayList;
    import java.util.List;
     
    enum Figure {
      AS, SIX, SEPT, HUIT, NEUF, DIX, VALET, DAME, ROI;
    }
     
    enum Couleur {
      COEUR, CARREAU, TREFLE, PIQUE;
    }
     
    final class Carte {
      private Figure figure;
      private Couleur couleur;
     
      Carte(Figure figure, Couleur couleur) {
        this.figure = figure;
        this.couleur = couleur;
      }
     
      public String toString(){
        return figure + " " + couleur;
      }
    }
     
    public class Main {
      public static void main(String[] arg) {
        // crée un jeu complet
        List<Carte> list = new ArrayList<Carte>(36);
     
        for (Figure f : Figure.values())
          for (Couleur c : Couleur.values())
            list.add(new Carte(f, c));
     
        for(Carte c : list)
          System.out.println(c.toString());    
      }
    }

  17. #17
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    oui c'est niveau de la modelisation que je bloque j'arrive pas a matérialisé les cartes.

    pour ce qui est des enumérations c'est quelque chose que j'ai pas vu dans ma formation.

  18. #18
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par Burinho
    pour ce qui est des enumérations c'est quelque chose que j'ai pas vu dans ma formation.
    une bonne occasion d'épater le formateur et de lui prouver que tu t'intéresse au sujet... en plus le code est bien plus propre et sécurisé qu'avec des string

    ensuite, que veux-tu dire par "j'arrive pas a matérialisé les cartes" ? j'ai de la peine à comprendre....



  19. #19
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 122
    Par défaut
    ok, je veux bien essayé car je suis à 7 jours de rendre mon programme et je suis pas pret de rendre quelqeu chose vu comme c'est parti.

    Donc si j'utilise les enumérations je dois faire comme ceci pour créer les objets


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    enum Figure {
      AS, SIX, SEPT, HUIT, NEUF, DIX, VALET, DAME, ROI;
    }
     
    enum Couleur {
      COEUR, CARREAU, TREFLE, PIQUE;
    }
    quand je dis que j'arrive pas à matérialisé les cartes c'est de créer l'objet carte tout simplement.

  20. #20
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par Burinho
    Donc si j'utilise les enumérations je dois faire comme ceci pour créer les objets
    non, là ce n'est pas la création, mais la déclaration... c'est la même différence qu'entre une classe et une instance
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    enum Toto { A, B, C, D, E; } // Je déclare une énumération
    ...
    Toto t = Toto.A; // je créé une variable de type Toto, qui peut prendre uniquement les valeurs décrites ci-dessus
    Citation Envoyé par Burinho
    quand je dis que j'arrive pas à matérialisé les cartes c'est de créer l'objet carte tout simplement.
    ça s'appelle l'"instanciation", et en java il faut utiliser le mot "new"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Object o; // déclaration
    o = new Object(); // instanciation
    pour les carte, tu devras les créer comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Carte septDePique = new Carte(Figure.SEPT, Couleur.PIQUE);
    Carte huitDeCarreau = new Carte(Figure.HUIT, Couleur.CARREAU);
    ...
    est-ce que tu arrives à saisir le principe ?


Discussions similaires

  1. retour tableau d'objets par service web axis jboss
    Par TrollMaster dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 27/11/2005, 21h45
  2. Tableau d'objets
    Par moulefrite dans le forum MFC
    Réponses: 7
    Dernier message: 15/06/2004, 14h14
  3. Sauvegarde / Chargement d'un tableau d'objets
    Par Naruto dans le forum Langage
    Réponses: 3
    Dernier message: 18/05/2004, 14h34
  4. [VB6]Tableau d'objet withevents
    Par soazig dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/02/2004, 19h44
  5. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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