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 :

Créer un objet plateau contenant un tableau de cases


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Par défaut Créer un objet plateau contenant un tableau de cases
    Bonjour,
    J'ai un projet a faire en Java. C'est un jeu de société où des tortues doivent avancer sur 10 cases a l'aide de cartes. Les tortues avancent et peuvent aussi reculer. Elle peuvent aussi être toutes sur la même case.

    Il faut donc créer un objet Plateau qui va contenir un tableau Case[4][9].
    Mais je ne sais pas comment assigne une tortue a une case et aussi savoir l'afficher en console (Superposé ou non).

    Des bouts de codes pour vous montrez plus facilement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      public Plateau (int i) { 
    	  cases = new Case[i];
    	  for (int j=0;j<i;j++)
    		  cases[j]=new Case();
      };
    Dite moi si vous voulez d'autres bout de java
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Une classe Plateau, qui a un attribut de type tableau de Case, s'écrit tout simplement :

    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
    public class Plateau {
     
        private final Case[][] cases;
     
        public Plateau() {
            // initialisation du tableau :
            cases = new Case[4][9];
            for(int i=0; i<cases.length; i++) {
                 for(int j=0; j<cases[i].length; j++) {
                     cases[i][j]=new Case();
                 }
            }
        }
     
    }
    Pour afficher des cases avec les tortues en console, il faudrait connaitre le nombre maximal de tortues en tout, par case. Doit-on afficher chaque tortue ? Doit-on afficher chaque tortue avec une chaîne distincte (genre "tortue1", "tortue2"...), ou par un caractère commun (par exemple, "*") ? N'y a-t-il pas une façon spéciale pour simpifier l'affichage (par exemple, affiche juste le nombre de tortues dans la case) ?
    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
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Pour assigner des tortues aux cases, il y a 2 approches :

    1. Une tortue connait la case dans laquelle elle se trouve (un pointeur sur une instance de Case, donc mutateur pour l'assignation)
    2. Une case connait les tortues qui s'y trouvent (une liste) (donc méthode du type ajouteTortue(Tortue tortue))
    3. Les 2 à la fois


    N'y-a t'il pas d'indications à ce sujet dans ton énoncé ? Peut-être sous la forme d'un début de code dans les classes Case ou Tortue ?
    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.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Par défaut
    Merci pour ta réponse.
    Il y a 5 tortues (5 joueurs maximum).

    Plus d'infos sur le jeu ici : http://jeuxstrategieter.free.fr/Cour...es_complet.php

    Ok, merci pour la création du tableau. Mais maintenant, comment faut t'il faire pour mettre une tortue dessus ? et récuperer les informations ?
    Nous sommes bloqués sur ce probleme :/

  5. #5
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Vu le sujet, faire l'affichage en console, ce n'est pas évident : il faut distinguer les tortues. On peut éventuellement les représenter par un chiffre de 1 à 5. Par exemple :

    1 2
     3
    4 5
    Ce qui veut dire une case de taille maxi 3*3.


    A ce qu'on voti dans le sujet, le parcourt ne fait pas 4 × 9 cases, mais 1 × 10 cases. Qu'on pourrait affiche tout simplement sous forme d'un tableau de 5 colonnes, une pour chaque tortue : soit on gère un tableau de [10][5], 10 lignes de 5 tortues, soit un tableau de [10], 10 cases.

    Il me semble plus simple de gérer la case sur laquelle la tortue se trouve, par un int par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Tortue [
     
        public int getCase() {
            return caseIndex;
        }
     
        public void setCase(int index) {
           caseIndex=index;
        }
     
    }
    Mais dans ce cas, la classe Case n'a pas de grande utilité : il n'y a même pas besoin de tableau de cases d'ailleurs.

    Sinon, si une Case peut contenir des tortues, on peut les stocker dans un tableau, mais une liste sera probablement plus pratique à gérer :

    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
    public class Case {
     
         private List<Tortue> tortues=new ArrayList<>();
     
         // ajouter une tortue à une case
         public void ajouteTortue(Tortue tortue) {
              tortues.add(tortue);
         }
     
         // retirer une tortue d'une case
         public void supprimeTortue(Tortue tortue) {
              tortues.remove(tortue);
         }
     
        // donne la liste des tortues dans la case
        public List<Tortue> getTortues() {
              return tortues;
        }
     
        // affiche la case avec ses tortues dans la console (les tortues sont alignées à gauche : on pourrait les aligner dans leur colonne respective, ce qui serait très facile à faire avec un tableau [10][5].
         public void afficherCase() {
                System.out.print("|");
                for(Tortue tortue : tortues) {
                     System.out.print(tortue.getNumero());
                }
                for(int i=tortues.size(); i< NOMBRE_MAXIMAL_TORTUES; i++) {
                     System.out.print(" "); // on affiche des espaces pour remplir la case vide
                } 
                System.out.println("|");
         }
     
    }
    On peut afficher le plateau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    afficherLigneEntreCase();
    for(Case case : cases) {
         case.afficherCase();
         afficherLigneEntreCase();
    }
    Avec afficherLigneEntreCase() qui affiche le bon nombre de -
    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.

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Mai 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Mai 2015
    Messages : 93
    Par défaut
    Merci beaucoup pour l'aide.
    Mais, malheureusement, nous avons des erreurs que nous ne comprenons pas.

    Les //NOTE sont les endroits où ca coince :/

    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
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    		/* CLASS PLATEAU */
     
    public class Plateau {
     
        private final Case[][] cases;
     
        public Plateau() {
            // initialisation du tableau :
            cases = new Case[1][10];
            for(int i=0; i<cases.length; i++) {
                 for(int j=0; j<cases[i].length; j++) {
                     cases[i][j]=new Case();
                 }
            }
        }
     
    }
     
    		/* CLASS TORTUE */ NOTE: Nous devons assigner des couleurs aux tortues 
     
    public class Tortue {
     
    	//private Couleur couleur;
    	private Tortue tortues;
     
     
    /*	
    	public Tortue(int c) {
    		this.couleur = new Couleur(c);
    	}
     
    	public Couleur getCouleur() {
    		return couleur;
    	}
     
    	public void setCouleur(Couleur couleur) {
    		this.couleur = couleur;
    	}*/
     
    	public Tortue getTortue() {
    		return tortues;
    	}
     
    	public void setTortue(Tortue tortues) {
    		this.tortues = tortues;
    	}
     
    	public int getCase() {
            int caseIndex = 0;
    		return caseIndex;
        }
     
        public void setCase(int index) {
           int caseIndex = index;
        }
     
     
    	public void add(Tortue tortue) {
    		// TODO Auto-generated method stub
     
    	}
     
     
    	public void remove(Tortue tortue) {
    		// TODO Auto-generated method stub
     
    	}
     
     
    	public char[] getNumero() {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
     
    	public int size() {
    		// TODO Auto-generated method stub
    		return 0;
    	}
    }
     
    		/* CLASS CASE*/
     
    import java.awt.List;
    import java.util.ArrayList;
     
    public class Case {
     
    	private Tortue tortues; NOTE: Je ne sais pas s'il fallait le créer mais ca a diminué le nombre d'erreur... mais eclipse me demande changer son nom
     
         private List<Tortue> tortues = new ArrayList<>(); NOTE: je dois le renommer aussi
     
         // ajouter une tortue à une case
         public void ajouteTortue(Tortue tortue) {
              tortues.add(tortue);
         }
     
         // retirer une tortue d'une case
         public void supprimeTortue(Tortue tortue) {
              tortues.remove(tortue);
         }
     
        // donne la liste des tortues dans la case NOTE: me demande d'enlever le type d'argument
        public List<Tortue> getTortues() {
              return tortues;
        }
     
        // affiche la case avec ses tortues dans la console (les tortues sont alignées à gauche : on pourrait les aligner dans leur colonne respective, ce qui serait très facile à faire avec un tableau [10][5].
         public void afficherCase() {
                System.out.print("|");
                for(Tortue tortue : tortues) { NOTE: dit"peut seulement iterer un array ou une instance de java.lang.iterable
                     System.out.print(tortue.getNumero());
                }
                for(int i=tortues.size(); i< 5; i++) {
                     System.out.print(" "); // on affiche des espaces pour remplir la case vide
                } 
                System.out.println("|");
         }
     
    }

Discussions similaires

  1. [XL-2010] Créer un tableau contenant un tableau?
    Par gecko404 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/05/2015, 13h43
  2. Réponses: 4
    Dernier message: 24/02/2012, 11h04
  3. [XL-MAC 2011] créer un tableau contenant un tableau
    Par Aurore24 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/01/2012, 18h24
  4. Créer un classe (objet) en contenant un autre?
    Par Rusty2096 dans le forum Langage
    Réponses: 4
    Dernier message: 25/02/2010, 15h17
  5. Serialiser un objet contenant un tableau
    Par stdebordeau dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/09/2009, 20h29

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