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 :

Tableau 2D , comparaison coordonnées et ajout de données


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Par défaut Tableau 2D , comparaison coordonnées et ajout de données
    Bonsoir tout le monde !

    N'ayant que 2 semaines d'initiation en Java, j'avoue que j'ai du mal à avancer. D'autant plus qu'on nous a donné un projet à faire à peine 10 jours

    Voila il fait créer un jeu, des cases 15*15, placer des enzymes, des lipides et des métabolites(aléatoirement)
    J'ai réussi à creer la grille 15*15, à placer les lipides (soldats, 20 en tout pour chaque joueur de chaque coté) et les enzymes au fond (8 de chaque coté, 2 en rouge, 2 en bleu, 2 eu jaune, 2 en vert), mais voilà j'ai un soucis avec le random pour distribuer les métabolites sur les cases restantes (40 en tout 10 en rouge, 10 en bleu, 10 en jaune, 10 en vert).

    Le but c'est que les enzymes de la mm couleur mangent les métabolites de la même couleur !

    Ce que je voudrais savoir, c'est comment organiser tout ça, j'avais pensé à une classe principale piece, et comme sous classe, (metabolite, enzyme et lipide), mais voilà j'ai aussi la grille (qui est classe pour l'affichage en mode console)

    En plus du random que je n'arrive pas à fonctionner, j'ai le soucis de la couleur, comment la placer dans le tableau pour comparer après dans les déplacement , sans pour autant que cela me gène pour l’affichage de la grille ?

    Merci

  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 : 56
    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,

    Comme tu as fait des classes (Lipide, Enzyme, Metabolite), tu peux créer une liste dans laquelle tu mets 40 instances de Metabolites. La couleur c'est un attribut, dans la classe Enzyme et dans la classe Metabolite. Donc tu peux générer, avec 4 boucles de 10 itérations (une par couleur), 10 metabolites de chaque couleur et les ajouter à cette liste.

    Pour les distribuer de façon aléatoires, tu peux utiliser la classe Random et sa méthode nextInt( nombre ). Le paramètre nombre c'est la taille de la liste : nextInt( liste.size() ) retourne donc un index aléatoire entre 0 et liste.size()-1 (inclus). Il suffit donc d'appeler metabolite = liste.remove(index) pour retirer la metabolite située à l'index tiré aléatoirement de la liste. Pour obtenir une autre métabolite, tu recommences la même chose (la taille de la liste a diminué de 1 puisqu'on a enlevé une métabolites et on ne pourra pas la choisir à nouveau, puisqu'elle n'est plus dans la liste).
    Ensuite tu peux parcourir les cases, dès que tu rencontres une case libre, tu demandes une métabolite dans la liste.

    Autre solution, beaucoup plus simple, mais que tu n'as peut-être pas le droit d'utiliser pour faire ton exercice : utiliser la méthode shuffle() de la classe Collections : elle permet de mélanger aléatoirement une liste. Il suffit ensuite de retirer une à une les métabolite pour les distribuer dans les cases vides.
    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
    Membre confirmé Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Par défaut
    Où vais-je créer cette liste ? dans la classe "Metabolite" ?
    Autre chose, c'est sur des cases libres (coordonnées en x, y) sur quoi je veux faire le random, pour placer mes metabolites directement !
    Voici le code que j'ai fait, mais je ne sais pas comment faire le lien avec les autres classes, vu que le main je l'ai sur le Plateau(classe)?

    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
    import java.io.*;
    import java.util.*;
    import java.lang.Math;
    import java.util.Random;
     
    public class Plateau{
    	private int nbLig;
    	private int nbCol;
    	private String [][] plateau;
     
    	public Plateau(int n, int p){
    		nbLig = n ;
    		nbCol = p ;
    		plateau = new String  [nbLig][nbCol];
     
    		for (int i=0; i<nbLig; i++){
    			for( int j=0; j<nbCol; j++){
    				plateau[i][j] = "__";
    			}
     
     
    		}
     
    	}
     
    	public void affiche(){
    		System.out.println();
    		System.out.println("   1    2    3    4    5    6    7    8    9    10   11   12   13    14   15 ");
    		System.out.println("------------------------------------------------------------------------------");
    		for(int i=0; i<nbLig; i++){
    			for(int j=0; j<nbCol; j++){
    				System.out.print(" | " +plateau[i][j]);
    			}
    			System.out.println(" | ");
    			System.out.println();
     
    		}
    		System.out.println();
    	}
    	public void placerElement(int lig, int col, String nom){
    		/*Pour commencer a l'indice 0, si placement (1,1) il sera (0,0)*/
    		lig=lig-1; 
    		col=col-1;
    		if (lig>nbLig || lig<0 || col<0 || col>nbCol) {
    			System.out.println("Vous sortez du plateau du jeu");
    			return;
    		}
    		if (plateau[lig][col] == "__"){
    			plateau[lig][col] = nom;
    		}
    		else{
    			System.out.println("Erreur ! , changez d'orientation, elle n'est pas vide la case");
    		}
    		if (lig>3 && lig<11){
    			Math.random(plateau[lig][col]) = nom;
    		}
    	}
    }

  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 : 56
    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
    Déjà, au lieu de faire un tableau de String (plateau) fais un tableau de Piece. Ensuite, il te faut une méthode remplir() (par exemple) pour placer les pièces (les 2*20 lipides, les 2*8 enzymes, les 40 métabolites). C'est dans cette méthode remplir que tu vas créer la liste de métabolites. Et au moment du démarrage de la partie, tu appelles remplir() pour placer les pièces pour démarrer la partie.
    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
    Membre confirmé Avatar de Shyma
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 100
    Par défaut
    Bonjour
    Moi je l'ai fait directement de cette manière ! IL me reste juste de placer les "Metabolite" aléatoirement, c'est là où je ne sais pas trop cmt commencer :/
    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
    import java.io.*;
    import java.util.*;
    import java.lang.Math;
    import java.util.Random;
     
    public class main{
    	public static void main(String[]args){
    		/*creation du plateau*/
    		Plateau Pla1 = new Plateau (15, 15);
    		//placement des enzymes
    		Pla1.placerElement(1,1,"E1"); Pla1.placerElement(1,3,"E1");  Pla1.placerElement(1,5,"E1"); Pla1.placerElement(1,7,"E1");
    		Pla1.placerElement(1,9,"E1"); Pla1.placerElement(1,11,"E1"); Pla1.placerElement(1,13,"E1"); Pla1.placerElement(1,15,"E1");
     
    		Pla1.placerElement(15,1,"E2"); Pla1.placerElement(15,3,"E2"); Pla1.placerElement(15,5,"E2"); Pla1.placerElement(15,7,"E2");
    		Pla1.placerElement(15,9,"E2"); Pla1.placerElement(15,11,"E2"); Pla1.placerElement(15,13,"E2"); Pla1.placerElement(15,15,"E2");
     
    		//placement des lipides L1
    		//ligne2
    		Pla1.placerElement(2,3,"L1"); Pla1.placerElement(2,5,"L1"); Pla1.placerElement(2,7,"L1"); 
        		Pla1.placerElement(2,11,"L1"); Pla1.placerElement(2,9,"L1"); Pla1.placerElement(2,13,"L1");
    		//ligne 3
    		Pla1.placerElement(3,2,"L1"); Pla1.placerElement(3,4,"L1"); Pla1.placerElement(3,6,"L1"); Pla1.placerElement(3,8,"L1");
    		Pla1.placerElement(3,10,"L1"); Pla1.placerElement(3,12,"L1"); Pla1.placerElement(3,14,"L1");
    		//ligne 4
    		Pla1.placerElement(4,1,"L1"); Pla1.placerElement(4,3,"L1"); Pla1.placerElement(4,5,"L1");
    		Pla1.placerElement(4,9,"L1"); Pla1.placerElement(4,11,"L1"); Pla1.placerElement(4,13,"L1");
     
    		//placement des lipides L2
    		//ligne 14
    		Pla1.placerElement(14,3,"L2"); Pla1.placerElement(14,5,"L2"); Pla1.placerElement(14,7,"L2");
    		Pla1.placerElement(14,9,"L2"); Pla1.placerElement(14,11,"L2"); Pla1.placerElement(14,13,"L2");
    		//ligne 13
    		Pla1.placerElement(13,2,"L2");	Pla1.placerElement(13,4,"L2"); Pla1.placerElement(13,6,"L2"); Pla1.placerElement(13,8,"L2");
    		Pla1.placerElement(13,10,"L2"); Pla1.placerElement(13,12,"L2"); Pla1.placerElement(13,14,"L2");
     
    		//ligne 12
    		Pla1.placerElement(12,3,"L2"); Pla1.placerElement(12,5,"L2"); Pla1.placerElement(12,7,"L2"); Pla1.placerElement(12,9,"L2");
    		Pla1.placerElement(12,11,"L2"); Pla1.placerElement(12,13,"L2"); Pla1.placerElement(12, 15,"L2");
     
     
    		//Affichage de la grille de jeu
    		Pla1.affiche();
    		System.out.println("le nouvel element est ");
     
    	}
     
    }

  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 : 56
    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
    A quoi te servent tes classes alors, si c'est pour n'utiliser que des String ? Et les boucles, ça existe aussi. Là, c'est illisible ce code et heureusement qu'il ne pas fallait ajouter 15000 pièces ! Pour les métabolites, j'ai déjà dit comment faire.
    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.

Discussions similaires

  1. Ajouter des données dans un tableau
    Par merlinerick dans le forum JDBC
    Réponses: 1
    Dernier message: 11/03/2010, 15h47
  2. Ajout de Donné dans un nouveau Tableau
    Par nicocovic dans le forum ASP.NET
    Réponses: 1
    Dernier message: 31/01/2010, 18h33
  3. Réponses: 13
    Dernier message: 30/03/2009, 15h53
  4. [POO] ajouter des données dans un tableau contenant une structure
    Par Peanut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2009, 18h41
  5. Réponses: 3
    Dernier message: 17/04/2008, 19h58

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