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 :

Remplir un tableau de jeu


Sujet :

Collection et Stream Java

  1. #1
    Invité
    Invité(e)
    Par défaut Remplir un tableau de jeu
    Bonjour,

    voilà dans le cadre d'un projet je dois réaliser une map de jeux avec différents types de cases de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public map(int ligne,
                           int colonne,
                           int type,
                           int sens)
    J'aimerai remplir aléatoirement cette map avec les différentes cases sauf qu'il doit y avoir un nombre particulier par exemple 20 pour le type 1, etc...

    actuellement j'ai ça mais ça ne fonctionne pas pour le nombre juste que ça me met aléatoirement les pièces

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for(int i=0;i<5;i++){
    			for(int j=0;j<5;j++){	
     
    				Library.Map(i,j,(int)(Math.random()*3%25),(int)(Math.random()*4));
     
    			}
    		}
    merci par avance de votre aide

  2. #2
    Membre expérimenté Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 340
    Points : 1 576
    Points
    1 576
    Par défaut
    Bonjour,

    je ne comprends pas où se situe votre problème ?
    Pourriez-vous nous en dire plus ?
    @ bientôt...

    Salut & @+ sur 3W!

  3. #3
    Invité
    Invité(e)
    Par défaut
    J'ai un tableau de 5 * 5 et 3 types de cases différentes. et il faut que je remplisse ce tableau avec un certain nombre de types de cases. exemple je dois remplir mon tableau avec 8 cases du type 1 , 13 cases du type 2 et 9 cases du types 3 avec la fonction ci-dessus. On m'a parlé d'un tableau temporaire mai j'ai du mal a comprendre

  4. #4
    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,

    Un moyen simple de faire ce que tu cherches à faire est de créer une liste des éléments que tu dois mettre dans ta carte, donc, une liste de cases dans ton cas, que tu la remplis avec 8 cases du type 1, 13 cases du type 2 et 9 cases du types 3. Puis tu utilises la méthode Collections.shuffle(list); ce qui va la mélanger. Puis tu n'as plus qu'a la parcourir et ajouter chaque élément dans ta carte, au fur et à mesure.

    Exemple :

    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 Carte {
        public static final int NB_LIG=5;
        public static final int NB_COL=6;
        private final Case[] cases = new Case[NBLIG][NBCOL];
        public Carte();
           List<Case> initCases = new ArrayList<Case>();
           for(TypeCase typeCase : TypeCase.values()) { 
               for(int i = 0; i < typeCase.getNombreInitial(); i++) {
                  initCases.add( new Case(typeCase) );
               }
           }
           if ( initCases.size() != NB_LIG*NB_COL ) throw new IllegalStateException();
           Collections.shuffle( initCases );
           for(int i = 0; i < initCases.size(); i++) {
              this.cases[i / NB_COL][ i % NB_COL] = initCases.get(i);
          }
       } 
    }
    Avec
    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
    public enum TypeCase {
     
        TYPE_1(8),
        TYPE_2(13),
        TYPE_3(9);
     
        private final int nbInitial;
     
        private TypeCase(int nbInitial) {
            this.nbInitial=nbInitial;
        }
     
        public int getNombreInitial() {
            return nbInitial;
        }
     
    }

    PS : sauf erreur 8 + 13 + 9 = 30, pas 25.
    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.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci a toi de ton aide je vais essayer car je dois garder ma fonction par rapport a la librairie graphique définie pour le programme. J'ai réussi a faire les différentes cases avec le nombres voulu grace a des if mais je n'arrive pas a implementer une variable temporaire pour ensuite tout mélanger.

  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
    Je ne vois pas le rapport avec une quelconque bibliothèque graphique ou autre. Tu as une classe qui représente une case : peu importe que ça soit une classe Case, un Integer, ou une classe Tartempion : il suffit de mettre tes cases dans une List (peu importe dans quoi tu les mets quand tu les crées, un tableau peut-être — il suffit de les créer dans une List à la place, ou de les transférer dedans, au pire), de faire Collections.shuffle() sur cette List, puis de retransférer le contenu de la liste dans ta classe à toi. La variable de type List peut très bien être locale à une méthode qui fait ça (ce qui est le cas de mon exemple, d'ailleurs — enfin, elle est locale à un constructeur, mais c'est pareil), et donc elle existera pendant le temps de l'exécution de la méthode, si ça peut te rassurer sur la notion de variable temporaire (je ne sais pas qui ta parlé de variable temporaire pour résoudre ça, mais oublie, ça ne veut rien dire en soi et ça ne résout en tout cas pas la problématique de remplissage aléatoire que de créer une variable, temporaire ou pas temporaire).
    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
    Invité
    Invité(e)
    Par défaut
    Merci a toi et je voulais te demander je dois placer maintenant des 10 objets aléatoirement dessus j'ai donc fais ma classe objet mais des fois j'ai des doublons et pas forcement le nombre exact dessus
    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
    public class Objets {
     
    int numObjet;
    int idObjet;
    int ligne;
    int colonne;
    boolean test;
     
    public Objets(int numObjets, int idObjet){
    	this.numObjet=numObjets;
    	this.idObjet =idObjet;
    }
     
    public int getNumObjet(){
    	return numObjet;
    }
     
    public int getIdObjet(){
    	return idObjet;
    }
     
     
    public void ObjetsPlateau(int numObjets, int colonne, int ligne){
     
    	 for (int i=0;i<5;i++){
    		 for (int j=0;j<6;j++){
    				Library.objet((numObjet++)%18,colonne,ligne);
    		 }
    	 }
    		Library.Afficher();
    		Library.attAction();
     
    }

  8. #8
    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
    Citation Envoyé par iTEEECH Voir le message
    Merci a toi et je voulais te demander je dois placer maintenant des 10 objets aléatoirement dessus j'ai donc fais ma classe objet mais des fois j'ai des doublons et pas forcement le nombre exact dessus
    Je ne comprends pas ce que tu veux dire. Tu as 10 objets. "Aléatoiremenr dessus", je suppose que ça veut dire que tu as une liste mélangée. Pourquoi il y aurait des doublons dans cette liste, à part si tu as mis volontairement plusieurs fois le même objet dedans ? Qu'est ce que peut vouloir dire "pas forcement le nombre exact dessus". Quel nombre exact ? Dessus quoi ?

    Citation Envoyé par iTEEECH Voir le message
    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
    public class Objets {
     
    int numObjet;
    int idObjet;
    int ligne;
    int colonne;
    boolean test;
     
    public Objets(int numObjets, int idObjet){
    	this.numObjet=numObjets;
    	this.idObjet =idObjet;
    }
     
    public int getNumObjet(){
    	return numObjet;
    }
     
    public int getIdObjet(){
    	return idObjet;
    }
     
     
    public void ObjetsPlateau(int numObjets, int colonne, int ligne){
     
    	 for (int i=0;i<5;i++){
    		 for (int j=0;j<6;j++){
    				Library.objet((numObjet++)%18,colonne,ligne);
    		 }
    	 }
    		Library.Afficher();
    		Library.attAction();
     
    }
    Tu peux me dire ce que tu cherches à faire au juste (si ça un rapport avec la question initiale, ça n'a rien à voir avec la réponse que je t'ai donnée) ? Je ne pense pas que cette classe fait ce qu'elle fait est ce qu'elle est censée faire. Elle est très confuse. On l'initialise avec un numObjets, un numéro (un id), ou un nombre (de quoi ?) ? Pourquoi est-il incrémenté ensuite (parce qu'on perd la valeur initiale, donc ça me semble inconsistant.
    Par exemple, si tu crées un instance de Objets, par new Objets(0, 1), tu vas avoir un objet qu'on peut représenter par exemple par [n=0,id=1]. Ensuite, tu parcours une grille 5x6, en faisant (n++)%18, qui va donc valloir successivement 0, 1, 2, 3, ...17, 0, 1, 2, 3, ...11, alors que numObjet vaut 0, 0...29. Quel est le but de cette série et de cette différence entre les numObjet successifs dans Objets et dans Library ? Pourquoi cette répétion de numéro, que je suppose être une sorte d'idenfiant dans "Library" ?

    La clarté du but d'une classe passe d'abord par des noms de variables qui ont du sens, puis pas une structure basé sur la cohérence (des manipulations qui ont un rapport évident les unes avec les autres) et l'isolation (des fonctions séparées qui font des traitements simples)
    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.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Désolé de te répondre aussi tard mais en ce moment je suis un peu pris par le temps car j'ai deux projets a terminer pour la deuxième semaine de juin avec les partiels dont celui là que j'ai vraiment du mal car la programmation ne m'attire pas tellement et ce n'est pas ma tasse de thé d'autant plus que je me suis retrouvé solo pour celui comme un camarade n'en a rien a faire.. enfin j'essaye de m'accrocher

    Et pour te répondre non ça n'avait rien a voir avec les cases c'était une autre fonctions mais je pense avoir réussi en espérant que ça continue pour que j'arrive a le boucler même si je pense que non...

    encore merci a toi l'ami !

Discussions similaires

  1. Réponses: 8
    Dernier message: 17/12/2005, 16h39
  2. remplir un tableau sans doublons ...
    Par ryo-san dans le forum C
    Réponses: 22
    Dernier message: 10/11/2005, 12h43
  3. Remplir un tableau associatif
    Par photorelief dans le forum Langage
    Réponses: 1
    Dernier message: 04/11/2005, 18h20
  4. Lire et remplir un tableau
    Par harris_macken dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 26/09/2005, 01h10
  5. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02

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