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 :

Fonction pour se déplacer dans un tableau 2D ?


Sujet :

Collection et Stream Java

  1. #61
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Voici mon main et ma classe Crate, les erreurs que j'ai sont principalment sur la classe Carte notamment à chaque fois que je vérifie si la case est nulle, aparemment c'est pas comme ça que ça doit marcher.Une autre erreur aussi c'est que le compimlateur n'a pas l'air d'aimer mes méthodes get alors que pourtant elles sont définies en public dans le main je devrai pouvoir y avoir accès.

    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
    import java.util.*;
    import java.io.*;
     
    public class Main 
    {
     
    	private static int nombre_hopitaux;
    	private static int nombre_medecins;
    	private static int nombre_non_medecins_sains;
    	private static int nombre_non_medecins_malades;
    	private static int nombre_non_medecins_cas_difficiles;
    	private static String str;
    	private static char touche_appuyee;
    	private static int largeur_tableau;
    	private static int hauteur_tableau;
     
    	public static int getNombre_hopitaux()
    	{
    		return nombre_hopitaux;
    	}
    	public static int getNombre_medecins()
    	{
    		return nombre_medecins;
    	}
    	public static int getNombre_non_medecins_sains()
    	{
    		return nombre_non_medecins_sains;
    	}
    	public static int getNombre_non_medecins_malades()
    	{
    		return nombre_non_medecins_malades;
    	}
    	public static int getNombre_non_medecins_cas_difficiles()
    	{
    		return nombre_non_medecins_cas_difficiles;
    	}
    	public int getWidth()
    	{
    		return largeur_tableau;
    	}
     
    	public int getHeight()
    	{	
    		return hauteur_tableau;
    	}
     
    	public void setWidth(int largeur)
    	{
    		this.largeur_tableau=largeur;
    	}
     
    	public void setHeigth(int hauteur)
    	{
    		this.hauteur_tableau=hauteur;
    	}
     
    	public static void main (String []args) 
    	{	
    		Scanner sc= new Scanner(System.in);
     
           		System.out.println("Veuillez saisir le nombre initial d'hôpitaux");
    		nombre_hopitaux=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de médecins");
    		nombre_medecins=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_sains");
    		nombre_non_medecins_sains=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_malades");
    		nombre_non_medecins_malades=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_difficiles");
    		nombre_non_medecins_cas_difficiles=sc.nextInt();
     
    		System.out.println("Veuillez saisir la largeur du tableau");
    		largeur_tableau=sc.nextInt();
    		System.out.println("Veuillez saisir la hauteur du tableau");
    		hauteur_tableau=sc.nextInt();
     
     
    		Carte carte = new Carte(largeur_tableau,hauteur_tableau);
     
    		/*str =sc.nextLine();
    		touche_appuyee=str.charAt(0);
     
    		if((touche_appuyee='F') || (getNombre_non_medecins_malades()+getNombre_non_medecins_cas_difficiles()==0) ||			  			(getNombre_non_medecins_malades()+getNombre_non_medecins_malades_cas_difficiles()+getNombre_non_medecins()+getNombre_hopital()==0))
    		exit(1);
     
     
    		/* A chaque fois que j'appuie sur une touche, un tour doit être effectué aussi(c'est à dire que 
    		 * les éléments se déplacent sur une des 8 cases possibles du tableau et ils agissent ou non selon
    		 * si c'est possible(contaminer,soigner...)
    		 */
    	}
    }
    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
    import java.util.*;
    import java.io.*;
     
    public class Carte
    {
    	private Element[][] elements;
    	private int x_aleatoire;
    	private int y_aleatoire;
    	private int i=0;
    	private int largeur_tableau;
    	private int hauteur_tableau;
    	public Carte(int largeur_tableau,int hauteur_tableau)
    	{
    		this.largeur_tableau=getWidth();
    		this.hauteur_tableau=getHeigth();
    		Random generator = new Random();
     
    		elements=new Element[largeur_tableau][hauteur_tableau];
     
    		while(i<getNombre_hopitaux())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    		}i=0;
    		while(i<getNombre_medecins())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D',getStock());
     
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'D',getStock());
    			}
    		}i=0;
    		while(i<getNombre_non_medecins_sains())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'C',getEtat_maladie);
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'C');
    			}
    		}i=0;
    		while(i<getNombre_non_medecins_malades())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'m');
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'m');
    			}
    		}i=0;
    		while(i<getNombre_non_medecins_cas_difficiles())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'M');
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'M');
    			}
    		}
     
    	}
     
     
    }
    Je donne un exemple : Voici ma classe Hopital

    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
    public class Hopital extends Element 
    {
    	private char representation;
     
    	public Hopital (int x, int y,char representation)
    	{
    		super.Element(x,y);
    		this.representation='H';
    	}
    	public void getRepresentation()
    	{
    		return representation;
    	}
    	public void setRepresentation(char representation)
    	{
    		this.representation=representation;
    	}
    	//Méthode approvisionner_stock_medecin() et soigner !
    }

    Dans la classe Carte je veux créer l'objet hopital donc je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,representation) OU elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,getRepresentation)

  2. #62
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    - Deja, il faut remplacer les lignes comme celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(elements[x_aleatoire][y_aleatoire]=null)
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(elements[x_aleatoire][y_aleatoire]==null)
    - Il serait bien de remplacer les fonctions getNombre_XXXXX() dans les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(i<getNombre_hopitaux())
    Par ceci (je suppose que ton getNombre_XXXXX() donne le max d'elements d'objets XXXXX)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while(i<nbMax_Hopitaux)
    - Dans la classe Carte, la generation des objets au lieu d'utiliser 5 fois la boucle while

    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
     
    		i=0;
    		while(i<getNombre_medecins())
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]=null)
    			{
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D',getStock());
     
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'D',getStock());
    			}
    		}
    Essais de faire une seule fonction de remplissage de la carte en fonction de l'objet.

    - Tu appelles getStock() dans la classe Carte mais je la vois nulle part.

  3. #63
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Regarde le post que j'ai posté juste avant.

    Il serait bien de remplacer les fonctions getNombre_XXXXX() dans les lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(i<getNombre_hopitaux())
    Par ceci (je suppose que ton getNombre_XXXXX() donne le max d'elements d'objets XXXXX)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(i<nbMax_Hopitaux)
    Les méthodes get sont définies dans le main,lorsque je demande à l'utilisateur le nombre d'objets qu'il souhaite :Est ce comme ça que je dois faire?
    Toutes les méthodes getXXXX() sont publiques, je n'ai pas le droit de les utiliser dans toutes les classes que je souhaite ?

    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
    import java.util.*;
    import java.io.*;
     
    public class Main 
    {
     
    	private static int nombre_hopitaux;
    	private static int nombre_medecins;
    	private static int nombre_non_medecins_sains;
    	private static int nombre_non_medecins_malades;
    	private static int nombre_non_medecins_cas_difficiles;
    	private static int touche_appuyee;
     
    	public int getNombre_hopitaux()
    	{
    		return nombre_hopitaux;
    	}
    	public int getNombre_medecins()
    	{
    		return nombre_medecins;
    	}
    	public int getNombre_non_medecins_sains()
    	{
    		return nombre_non_medecins_sains;
    	}
    	public int getNombre_non_medecins_malades()
    	{
    		return nombre_non_medecins_malades;
    	}
    	public int getNombre_non_medecins_cas_difficiles()
    	{
    		return nombre_non_medecins_cas_difficiles;
    	}
     
    	public static void main (String []args) 
    	{	
    		Scanner sc= new Scanner(System.in);
     
     
    		System.out.println("Veuillez saisir les dimensions du tableau");
    		System.out.println("Largeur:");
    		largeur=sc.nextInt()
    		setWidth(largeur);
    		System.out.println("Hauteur:");
    		hauteur=sc.nextInt()
    		setHeigth(hauteur);
     
    		Carte carte = new Carte(largeur_tableau,hauteur_tableau);
     
    		System.out.println("Veuillez saisir le nombre initial d'hôpitaux");
    		nombre_hopitaux=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de médecins");
    		nombre_medecins=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_sains");
    		nombre_non_medecins_sains=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_malades");
    		nombre_non_medecins_malades=sc.nextInt();
    		System.out.println("Veuillez saisir le nombre initial de non_médecins_difficiles");
    		nombre_non_medecins_cas_difficiles=sc.nextInt();
     
     
    		touche_appuyee=sc.nextLine();
    		if((touche_appuyee='F') || (getNombre_non_medecins_malades()+getNombre_non_medecins_malades_cas_difficiles()==0) ||			  			(getNombre_non_medecins_malades()+getNombre_non_medecins_malades_cas_difficiles()+getNombre_non_medecins()+getNombre_hopital()==0))
    		return 0;
     
     
    		/* A chaque fois que j'appuie sur une touche, un tour doit être effectué aussi(c'est à dire que 
    		 * les éléments se déplacent sur une des 8 cases possibles du tableau et ils agissent ou non selon
    		 * si c'est possible(contaminer,soigner...)
    		 */
    	}
    }

  4. #64
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    A mais je suis bête, pour pouvoir utiliser les get, il faut que je crée un objet de type Carte pour pouvoir les appeler non?

    ex: Main main=new Main()

    Puis après dans la classe Carte je fais main.getXXXX.

    Dans le main, je demande le nombre d'objets de chaque type, puis la largeur et la hauteur du tableau.Dans la classe Carte j'initialise le tableau avec

    Element elements=new Element[main.getWidth()][main.getHeigth];

    et mes boucles while(i<main.getXXXX)

    Puis ensuite à la fin du main je crée un objet Carte carte=new Carte pour initialiser.

    C'est ça ?

  5. #65
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Les méthodes get sont définies dans le main,lorsque je demande à l'utilisateur le nombre d'objets qu'il souhaite :Est ce comme ça que je dois faire?
    Toutes les méthodes getXXXX() sont publiques, je n'ai pas le droit de les utiliser dans toutes les classes que je souhaite ?
    Si ces valeurs ne changent plus apres la saisie --> pourquoi utiliser une fonction dans la boucle while chaque fois quand tu sais que ces valeurs ne changent plus une fois elles ont une valeur donne par utilisateur.


    Le plus simple il faut passer ces valeurs au moment d'appeler le constructeur Carte et tu utilises des variables locales de Carte dans ta/tes boucles while

    Idem pour height et weight (ces valeurs ne changent plus une fois elles sont definies)


    En resume, dans ton main, il faut avoir toutes les valeurs initialisees (saisies par l'utilisateur):
    largeur
    hauteur
    nb_hopital
    nb_medecin
    nb_non_medecin
    nb_non_medecin_malade
    ....
    Apres, tu crees ta classe Carte avec ces donnes passee dans le constructeur carte.

  6. #66
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Voici ma classe Main ou j'ai initialisé mes valeurs comme tu m'as dit !

    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
     
     
    private static int nombre_hopitaux;
    	private static int nombre_medecins;
    	private static int nombre_non_medecins_sains;
    	private static int nombre_non_medecins_malades;
    	private static int nombre_non_medecins_cas_difficiles;
    	private static int largeur_tableau;
    	private static int hauteur_tableau;
     
    	public int getNombre_hopitaux()
    	{
    		return nombre_hopitaux;
    	}
    	public int getNombre_medecins()
    	{
    		return nombre_medecins;
    	}
    	public int getNombre_non_medecins_sains()
    	{
    		return nombre_non_medecins_sains;
    	}
    	public int getNombre_non_medecins_malades()
    	{
    		return nombre_non_medecins_malades;
    	}
    	public int getNombre_non_medecins_cas_difficiles()
    	{
    		return nombre_non_medecins_cas_difficiles;
    	}
    	public int getWidth()
    	{
    		return largeur_tableau;
    	}
     
    	public int getHeight()
    	{	
    		return hauteur_tableau;
    	}
     
    	public void setWidth(int largeur_tableau)
    	{
    		this.largeur_tableau=largeur_tableau;
    	}
     
    	public void setHeigth(int hauteur_tableau)
    	{
    		this.hauteur_tableau=hauteur_tableau;
    	}
    public static void main (String []args) 
    		{	
     
    			System.out.println("Veuillez saisir les dimensions du tableau\n");
    			System.out.println("Largeur: ");
    			largeur_tableau=sc.nextInt();
    			System.out.println("Hauteur: ");
    			hauteur_tableau=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial d'hôpitaux");
    			nombre_hopitaux=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de médecins");
    			nombre_medecins=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_sains");
    			nombre_non_medecins_sains=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_malades");
    			nombre_non_medecins_malades=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_difficiles");
    			nombre_non_medecins_cas_difficiles=sc.nextInt();
     
    		Carte carte = new Carte(largeur_tableau,hauteur_tableau,nombre_hopitaux,nombre_medecins,nombre_non_medecins_sains,nombre_non_medecins_malades,nombre_non_medecins_cas_difficiles);
    		}
    	}

    Et voici ma classe Carte:

    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
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
     
    import java.util.*;
    import java.io.*;
     
    public class Carte
    {
     
    	private int x_aleatoire;
    	private int y_aleatoire;
    	private int i=0;
    	private int largeur;
    	private int hauteur;
    	private int hopitaux;
    	private int medecins;
    	private int sains;
    	private int malades;
    	private int difficiles;
     
     
     
     
    	public Carte(largeur,hauteur,hopitaux,medecins,sains,malades,difficiles)
    	{
     
    		this.largeur=largeur;
    		this.hauteur=hauteur;
    		this.hopitaux=hopitaux;
    		this.medecins=medecins;
    		this.sains=sains;
    		this.malades=malades;
    		this.difficiles=difficiles;
     
     
     
    		Scanner sc= new Scanner(System.in);
     
    		Random generator = new Random();
     
    		Element elements=new Element[largeur][hauteur];
     
     
    		while(i<hopitaux)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x,y,getRepresentation());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    		}i=0;
    		while(i<medecins)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D',getStock());
     
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'D',getStock());
    			}
    		}i=0;
    		while(i<sains)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_sain(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_sain(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}i=0;
    		while(i<malades)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_malade(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_malade(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}i=0;
    		while(i<difficiles)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_cas_difficile(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_cas_difficile(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}
     
    	}
    }
    Le problème est toujours au niveau de ces lignes pour récupérer des valeurs des sous classes comme le stock :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'d',getStock());
    Je nsais pas comment faire !!!! pour ajouter l'élément dans le tableau !!

    J'ai des erreurs aussi dans les constructeurs des sous classes de Element(hopital, medecin...) ou je fais appel au constructeur de la classe mere(Element) avec la commande super() mais ça n'a pas l'air de marcher !

  7. #67
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Comme il y a tellement de versions de codes depuis le debut, peux-tu poster tes classes dernieres version a jour? Carte, Element, Main ....

  8. #68
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Classe Carte:
    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
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    import java.util.*;
    import java.io.*;
     
    public class Carte
    {
     
    	private int x_aleatoire;
    	private int y_aleatoire;
    	private int i=0;
    	private int largeur;
    	private int hauteur;
    	private int hopitaux;
    	private int medecins;
    	private int sains;
    	private int malades;
    	private int difficiles;
     
     
     
     
    	public Carte(int largeur,int hauteur,int hopitaux,int medecins,int sains,int malades,int difficiles)
    	{
     
    		this.largeur=largeur;
    		this.hauteur=hauteur;
    		this.hopitaux=hopitaux;
    		this.medecins=medecins;
    		this.sains=sains;
    		this.malades=malades;
    		this.difficiles=difficiles;
     
     
     
    		Scanner sc= new Scanner(System.in);
     
    		Random generator = new Random();
     
    		Element elements=new Element[largeur][hauteur];
     
     
    		while(i<hopitaux)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x,y,getRepresentation());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    		}i=0;
    		while(i<medecins)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D',getStock());
     
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				if(getStock()==0)
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'d',getStock());
    				else 
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'D',getStock());
    			}
    		}i=0;
    		while(i<sains)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_sain(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_sain(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}i=0;
    		while(i<malades)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_malade(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_malade(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}i=0;
    		while(i<difficiles)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
     
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_cas_difficile(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
     
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin_cas_difficile(x_aleatoire,y_aleatoire,'C',getEtat_maladie(),getResistance(),getDebut_contamination());
    			}
    		}
     
    	}
    }
    Classe mAIN

    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
    public class Main
    	private static int nombre_hopitaux;
    	private static int nombre_medecins;
    	private static int nombre_non_medecins_sains;
    	private static int nombre_non_medecins_malades;
    	private static int nombre_non_medecins_cas_difficiles;
    	private static int largeur_tableau;
    	private static int hauteur_tableau;
     
    	public int getNombre_hopitaux()
    	{
    		return nombre_hopitaux;
    	}
    	public int getNombre_medecins()
    	{
    		return nombre_medecins;
    	}
    	public int getNombre_non_medecins_sains()
    	{
    		return nombre_non_medecins_sains;
    	}
    	public int getNombre_non_medecins_malades()
    	{
    		return nombre_non_medecins_malades;
    	}
    	public int getNombre_non_medecins_cas_difficiles()
    	{
    		return nombre_non_medecins_cas_difficiles;
    	}
    	public int getWidth()
    	{
    		return largeur_tableau;
    	}
     
    	public int getHeight()
    	{	
    		return hauteur_tableau;
    	}
     
    	public void setWidth(int largeur_tableau)
    	{
    		this.largeur_tableau=largeur_tableau;
    	}
     
    	public void setHeigth(int hauteur_tableau)
    	{
    		this.hauteur_tableau=hauteur_tableau;
    	}
    public static void main (String []args) 
    		{	
     
    			System.out.println("Veuillez saisir les dimensions du tableau\n");
    			System.out.println("Largeur: ");
    			largeur_tableau=sc.nextInt();
    			System.out.println("Hauteur: ");
    			hauteur_tableau=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial d'hôpitaux");
    			nombre_hopitaux=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de médecins");
    			nombre_medecins=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_sains");
    			nombre_non_medecins_sains=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_malades");
    			nombre_non_medecins_malades=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_difficiles");
    			nombre_non_medecins_cas_difficiles=sc.nextInt();
     
    		Carte carte = new Carte(largeur_tableau,hauteur_tableau,nombre_hopitaux,nombre_medecins,nombre_non_medecins_sains,nombre_non_medecins_malades,nombre_non_medecins_cas_difficiles);
    		}
    	}
    Classe Element :

    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
    import java.util.*;
    import java.io.*;
     
     
    public abstract class Element
    {
     
    	private int x,y;
     
    	public Element(int x, int y)
    	{
    		this.x=x;
    		this.y=y;
    	}
     
    	/*Ici je dois définir les méthodes qui sont communes à tous les éléments ==> 
    	 * seul mourrir() est commune à toutes les sous_classes!!!
    	Puis je définis en abstract toutes les autres méthodes ? à savoir Déplacer(l'hopital ne se déplace pas),Soigner,Contaminer,
    	* Approvisionnement_stock_medecin(par l'hopital).*/
     
    	public int getX()
    	{
    		return x;
    	}
     
    	public int getY()
    	{
    		return y;
    	}
     
    	public void setPositionX(int x)
    	{
    		this.x=x;
    	}	
    	public void setPositionY(int y)
    	{
    		this.y=y;
    	}	
     
    }
    Mon but (comme je dois finir pour mercredi matin) serait d'afficher le tableau avec les lettres représentant les objets que j'ai inséré.

    Le truc c'est que je vois pas pourquoi j'ai faux.Le dernier code me semblait bon sauf peut etre sur ces lignes là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    ou je ne sais pas comment procéder pour insérer un élément dans le tableau !
    Faut-il faire appel à des accesseurs ou non ?

  9. #69
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    J'ai oublié le Scanner sc=new Scanner(System.in) dans le main !

    Maintenant j'ai juste besoin d'aide pour insérer l'objet dans le tableau, donc comment faire pour ces lignes en rouge car c'est ça qui est faux ! :

    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
    while(i<nb_hopitaux)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				
    				elements[x_aleatoire][y_aleatoire]=new Hopital(super(x,y),hop.getRepresentation());
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]=new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    		}i=0;

  10. #70
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    Dans la classe Carte,

    -il faut enlever cette ligne inutile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Scanner sc= new Scanner(System.in);
    - declarer le tableau elements en tant que Object au lieu de Element

    - remplacer les lignes ou tu appelles les fonctions par les valeurs connues au moment de creer ta carte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    hop.getRepresentation()  // hop inconnue dans la classe Carte
    getStock()                    // 
    getEtat_maladie(),getResistance(),getDebut_contamination() ....
    - Essais de creer des fonction creerHopital, creerMedecin ... au lieu de mettre tous dans le constructeur Carte

  11. #71
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Comme ça plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Object[][] elements=new Object[largeur][hauteur];
    Mais pour créer les objets et les insérer jvois toujours pas comment faire !

    elements[largeur][hauteur]=Hopital();
    elements[largeur][hauteur]=Hopital(parametres)? Et dans ce cas comment récupérer les paramètres,sachant que les attributs x et y de Hopital sont ceux hérités de la classe Element? Et comment faire avec le 3eme paramètre "representation", un get()?


    Voici un bout de ma classe Carte

    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
    import java.util.*;
    import java.io.*;
    
    public class Carte
    {
    	
    	private static int x_aleatoire;
    	private static int y_aleatoire;
    	private int i=0;
    	private int largeur;
    	private int hauteur;
    	private int nb_hopitaux;
    	private int nb_medecins;
    	private int nb_non_medecins_sains;
    	private int nb_non_medecins_malades;
    	private int nb_non_medecins_cas_difficiles;
    	
    	
    	
    	
    	public Carte(int largeur,int hauteur,int nb_hopitaux,int nb_medecins,int nb_non_medecins_sains,int nb_non_medecins_malades,int nb_non_medecins_cas_difficiles)
    	{
    		
    		this.largeur=largeur;
    		this.hauteur=hauteur;
    		this.nb_hopitaux=nb_hopitaux;
    		this.nb_medecins=nb_medecins;
    		this.nb_non_medecins_sains=nb_non_medecins_sains;
    		this.nb_non_medecins_malades=nb_non_medecins_malades;
    		this.nb_non_medecins_cas_difficiles=nb_non_medecins_cas_difficiles;
    		
    	  
    		Random generator = new Random();
    
    		Object[][] elements=new Object[largeur][hauteur];
    		
    		while(i<nb_hopitaux)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				
    				elements[x_aleatoire][y_aleatoire]= Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]= Hopital(x_aleatoire,y_aleatoire,H);
    			}
    		}i=0;
    J'ai aussi une autre question.
    Voici le constructeur de la classe Hopital qui fait appel au constructeur de la classe mere Element, dois je mettre en parametre x et y? Et si oui comment ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public Hopital (char representation)
    	{
    		super(x,y);
    		this.representation=representation;
    	}
    Pareil lors de l'appel du constructeur dans la classe Carte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Hopital(x_aleatoire,y_aleatoire,'H');
    Dois-je mettre le x et le y en paramètre ?

  12. #72
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 291
    Par défaut
    Je vais vous mettre mon code complet.Quand je compile toutes mes erreurs se trouvent à chaque fois au niveau des memes instructions que je souligne en rouge :

    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
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    import java.util.*;
    import java.io.*;
    
    public class Carte
    {
    	
    	private static int x_aleatoire;
    	private static int y_aleatoire;
    	private int i=0;
    	private int largeur;
    	private int hauteur;
    	private int nb_hopitaux;
    	private int nb_medecins;
    	private int nb_non_medecins_sains;
    	private int nb_non_medecins_malades;
    	private int nb_non_medecins_cas_difficiles;
    	
    	
    	
    	
    	public Carte(int largeur,int hauteur,int nb_hopitaux,int nb_medecins,int nb_non_medecins_sains,int nb_non_medecins_malades,int nb_non_medecins_cas_difficiles)
    	{
    		
    		this.largeur=largeur;
    		this.hauteur=hauteur;
    		this.nb_hopitaux=nb_hopitaux;
    		this.nb_medecins=nb_medecins;
    		this.nb_non_medecins_sains=nb_non_medecins_sains;
    		this.nb_non_medecins_malades=nb_non_medecins_malades;
    		this.nb_non_medecins_cas_difficiles=nb_non_medecins_cas_difficiles;
    		
    	  
    		Random generator = new Random();
    
    		Object[][]elements=new Object[largeur][hauteur];
    		
    		while(i<nb_hopitaux)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				
    				elements[x_aleatoire][y_aleatoire]= new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]= new Hopital(x_aleatoire,y_aleatoire,'H');
    			}
    		}i=0;
    		while(i<nb_medecins)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D','d',5);
    				
    				
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				
    				elements[x_aleatoire][y_aleatoire]=new Medecin(x_aleatoire,y_aleatoire,'D','d',5);
    				
    			}
    		}i=0;
    		while(i<nb_non_medecins_sains)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M','sain',1,0);
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M','sain',1,0);
    			}
    		}i=0;
    		while(i<nb_non_medecins_malades)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M''malade',1,1);
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M','malade',1,1);
    			}
    		}i=0;
    		while(i<nb_non_medecins_cas_difficiles)
    		{
    			x_aleatoire=generator.nextInt(20)+1;
    			y_aleatoire=generator.nextInt(20)+1;
    			
    			if(elements[x_aleatoire][y_aleatoire]==null)
    			{
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M','difficile',3,1);
    			}
    			else if(elements[x_aleatoire][y_aleatoire]!=null)
    			{
    				x_aleatoire=generator.nextInt(20)+1;
    				y_aleatoire=generator.nextInt(20)+1;
    
    				elements[x_aleatoire][y_aleatoire]=new Non_medecin(x_aleatoire,y_aleatoire,'C','m','M','difficile',3,1);
    			}
    		}
    
    	}
    }
    Voici mes autres classes:

    Classe Element:

    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
    import java.util.*;
    import java.io.*;
     
     
    public abstract class Element
    {
     
    	private int x,y;
     
     
    	public Element(int x, int y)
    	{
    		this.x=x;
    		this.y=y;
    	}
     
    	/*Ici je dois définir les méthodes qui sont communes à tous les éléments ==> 
    	 * seul mourrir() est commune à toutes les sous_classes!!!
    	Puis je définis en abstract toutes les autres méthodes ? à savoir Déplacer(l'hopital ne se déplace pas),Soigner,Contaminer,
    	* Approvisionnement_stock_medecin(par l'hopital).*/
     
    	public int getX()
    	{
    		return x;
    	}
     
    	public int getY()
    	{
    		return y;
    	}
     
    	public void setPositionX(int x)
    	{
    		this.x=x;
    	}	
    	public void setPositionY(int y)
    	{
    		this.y=y;
    	}	
     
    }
    Classe Medecin:

    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
    import java.util.*;
    import java.io.*;
     
     
    public class Medecin extends Element
    {
    	private int stock_medecin=5;
    	private char representation;
    	private int x;
    	private int y;
     
    	public Medecin (int x,int y,char representation1,char representation2,int stock_medecin)
    	{
    		super(x,y);
    		this.stock_medecin=stock_medecin;
    		if(this.stock_medecin !=0)
    		this.representation=representation1;
    		else
    		this.representation=representation2;
    	}
     
    	public int getStock()
    	{
    		return stock_medecin;
    	}
    	public void setStock(int stock)
    	{
    		stock_medecin=stock;
    	}
    	public char getRepresentation()
    	{
    		return representation;
    	}
    	public void setRepresentation(char representation)
    	{
    		this.representation=representation;
    	}
     
     
    	// Ici je dois définir les méthodes Soigner() et Deplacer()
     
    }
    Classe Hopital:

    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
    import java.util.*;
    import java.io.*;
     
    public class Hopital extends Element 
    {
    	private char representation;
    	private x;
    	private y;
     
    	public Hopital (int x, int y,char representation)
    	{
    		super(x,y);
    		this.representation=representation;
    	}
    	public char getRepresentation()
    	{
    		return representation;
    	}
    	public void setRepresentation(char representation)
    	{
    		this.representation=representation;
    	}
    	//Méthode approvisionner_stock_medecin() et soigner !
    }
    classe Non_medecin:

    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
    import java.util.*;
    import java.io.*;
     
    public class Non_medecin extends Element
    {
    	private String etat_maladie; // cas_difficile,malade ou sain
    	private int resistance_aux_medicaments; // les malades difficiles ont besoin de 3 médicaments, les normaux d'un seul.
    	private int debut_contamination; 
    	private char representation;
    	private int x;
    	private int y;
    	/* compteur initialisé à 1 lors du début de la contamination(4 tours après la contamination si le compteur resistance n'est pas à 0, 
    	l'élément meurt)*/
     
    	public Non_medecin(int x, int y,char representation_sain,char representation_malade, char representation_difficile,String etat_maladie,int resistance_aux_medicaments,int debut_contamination)
    	{
    		super(x,y);
    		this.etat_maladie=etat_maladie;
    		this.resistance_aux_medicaments=resistenace_aux_medicaments;
    		this.debut_contamination=debut_contamination;
    		if(this.etat_maladie=='sain')
    		this.representation=representation_sain;
    		if(this.etat_maladie=='malade')
    		this.representation=representation_malade;
    		if(this.etat_maladie=='difficile')
    		this.representation=representation_difficile;
     
    	}
     
    	public void setEtat_maladie(String etat_maladie)
    	{
    		this.etat_maladie=etat_maladie;
    	}
     
    	public void setResistance(int resistance_aux_medicaments)
    	{
    		this.resistance_aux_medicaments=resistance_aux_medicaments;
    	}
     
    	public void setDebut_contamination(int debut_contamination)
    	{
    		this.debut_contamination=debut_contamination;
    	}
     
    	public String getEtat_maladie(String etat_maladie)
    	{
    		return etat_maladie;
    	}
     
    	public int getResistance(int resistance_aux_medicaments)
    	{
    		return resistance_aux_medicaments;
    	}
     
    	public int getDebut_contamination(int debut_contamination)
    	{
    		return debut_contamination;
    	}
    	public char getRepresentation()
    	{
    		return representation;
    	}
    	public void setRepresentation(char representation)
    	{
    		this.representation=representation;
    	}
     
     
     
     
     
    	// Ici la méthodes deplacer()
    }
    classe Main:

    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
    import java.util.*;
    import java.io.*;
     
    public class Main 
    {
    	private static int nombre_hopitaux;
    	private static int nombre_medecins;
    	private static int nombre_non_medecins_sains;
    	private static int nombre_non_medecins_malades;
    	private static int nombre_non_medecins_cas_difficiles;
    	private static int largeur_tableau;
    	private static int hauteur_tableau;
     
    	public int getNombre_hopitaux()
    	{
    		return nombre_hopitaux;
    	}
    	public int getNombre_medecins()
    	{
    		return nombre_medecins;
    	}
    	public int getNombre_non_medecins_sains()
    	{
    		return nombre_non_medecins_sains;
    	}
    	public int getNombre_non_medecins_malades()
    	{
    		return nombre_non_medecins_malades;
    	}
    	public int getNombre_non_medecins_cas_difficiles()
    	{
    		return nombre_non_medecins_cas_difficiles;
    	}
    	public int getWidth()
    	{
    		return largeur_tableau;
    	}
     
    	public int getHeight()
    	{	
    		return hauteur_tableau;
    	}
     
    	public void setWidth(int largeur_tableau)
    	{
    		this.largeur_tableau=largeur_tableau;
    	}
     
    	public void setHeigth(int hauteur_tableau)
    	{
    		this.hauteur_tableau=hauteur_tableau;
    	}
     
     
    	public static void main (String []args) 
    		{	
    			Scanner sc=new Scanner(System.in);
     
    			System.out.println("Veuillez saisir les dimensions du tableau\n");
    			System.out.println("Largeur: ");
    			largeur_tableau=sc.nextInt();
    			System.out.println("Hauteur: ");
    			hauteur_tableau=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial d'hôpitaux");
    			nombre_hopitaux=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de médecins");
    			nombre_medecins=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_sains");
    			nombre_non_medecins_sains=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_malades");
    			nombre_non_medecins_malades=sc.nextInt();
    			System.out.println("Veuillez saisir le nombre initial de non_médecins_difficiles");
    			nombre_non_medecins_cas_difficiles=sc.nextInt();
     
    		Carte carte = new Carte(largeur_tableau,hauteur_tableau,nombre_hopitaux,nombre_medecins,nombre_non_medecins_sains,nombre_non_medecins_malades,nombre_non_medecins_cas_difficiles);
    		}
    	}
     
    		/*touche_appuyee=sc.nextLine();
    		if((touche_appuyee='F') || (getNombre_non_medecins_malades()+getNombre_non_medecins_malades_cas_difficiles()==0) ||			  			(getNombre_non_medecins_malades()+getNombre_non_medecins_malades_cas_difficiles()+getNombre_non_medecins()+getNombre_hopital()==0))
    		return 0;
     
     
    		/* A chaque fois que j'appuie sur une touche, un tour doit être effectué aussi(c'est à dire que 
    		 * les éléments se déplacent sur une des 8 cases possibles du tableau et ils agissent ou non selon
    		 * si c'est possible(contaminer,soigner...)
    		 */
    Ptite faute dans Hopital faut rajouter les int avec x et y ;

  13. #73
    Membre chevronné
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Par défaut
    - Les erreurs en rouge ce pourrait venir des constructeurs qui n'ont pas les parametres comme il fallait

    J'ai aussi une autre question.
    Voici le constructeur de la classe Hopital qui fait appel au constructeur de la classe mere Element, dois je mettre en parametre x et y? Et si oui comment ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    public Hopital (int x, int y, char representation)
    	{
    		super(x,y);
    		this.representation=representation;
    	}
    Il faut faire de meme pour les autres classes.

    - Dans Carte, il faut
    Ajouter cette ligne (apres la ligne private int nb_non_medecins_cas_difficiles)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            Object[][]elements;
    Changer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Object[][]elements=new Object[largeur][hauteur];
    Par celle-ci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    elements=new Object[largeur][hauteur];
    Et il faut ajouter le getter pour element

Discussions similaires

  1. une fonction pour le bgcolor dans une datatable
    Par ghnawfal dans le forum JSF
    Réponses: 2
    Dernier message: 09/04/2008, 13h33
  2. Réponses: 3
    Dernier message: 22/03/2008, 11h48
  3. Réponses: 9
    Dernier message: 05/11/2007, 11h05
  4. Réponses: 1
    Dernier message: 05/09/2006, 17h56
  5. Problème pour centrer verticalement dans un tableau
    Par navis84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 18/07/2006, 16h56

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