Bonjour, je suis entrain de créer un aquarium en java.
J'ai des algues et des poisons carnivores et herbivores placés aléatoirement dans celui-ci.
J'ai une ArrayList pour les poissons et une ArrayList pour les algues.Le getter getType des objets poisson permet de retourner si le poisson et herbivore ou non.Le getter getVie retourne si l'algue ou le poisson à été mangé.
Ls poissons herbivores ne mangent que des algues et les canivores que des poisons.
Un timer permet de faire un tour toutes les 5 secondes, pendant lesquelles chaques poissons peut manger, dans la mesure ou il n'a pas été mangé avant.
Cela dit, mon timer ne tourne pas continuellement, je m'explique :
j'ai l'impression que dès qu'il n'y à plus possibilité de manger quelquechose pour les poissons, le timer ne tourne plus,mais le programme ne s'arrête pas.(j'ai entendu parlé de la méthode cancel).
J'aimerais savoir pourquoi le timer ne continu pas d'afficher ce qu'il reste dans l'aquarium s'il-vous-plait.
Je vous colle le code de ma méthode passerLeTemps qui permet les actions dans mon aquarium.
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 void passerLeTemps()
	{
		System.out.println("Il y a "+poissons.size()+" poissons et "+algues.size()+" algues dans l'aquarium");
		Timer timer = new Timer();
 
		timer.scheduleAtFixedRate(new TimerTask() {
			@Override
			public void run() {
				int nbAlguesEnVie = 0;
				int nbAlguesMorts = 0;
				int nbPoissonsEnVie = 0;
				int nbPoissonsMorts = 0;
				for (int i=0;i<poissons.size();i++){
					Random rdAlgue = new Random();
					Random rdPoisson = new Random();
					int rd1=rdAlgue.nextInt(algues.size());
					int rd2=rdPoisson.nextInt(poissons.size());
					if(poissons.get(i).getType()==true) {while(!algues.get(rd1).getVie()) {rd1=rdAlgue.nextInt(algues.size());}
									poissons.get(i).manger(algues.get(rd1));}
					else  {while(rd2==i) {rd2=rdPoisson.nextInt(poissons.size());}
							while(!poissons.get(rd2).getVie()||rd2==i) {rd2=rdPoisson.nextInt(poissons.size());}
							poissons.get(i).manger(poissons.get(rd2));}}
 
				for (int i=0;i<algues.size();i++) {
					if(algues.get(i).getVie()) {nbAlguesEnVie += 1;}
					else {nbAlguesMorts +=1;}}
				for (int i=0;i<poissons.size();i++) {
					if(poissons.get(i).getVie()) {nbPoissonsEnVie += 1;}
					else {nbPoissonsMorts +=1;}}
				System.out.println("Un tour est fait,il y a: "+nbPoissonsEnVie+" poissons en vie et "+nbPoissonsMorts+" poisons morts et "+nbAlguesEnVie+" algues en vie et "+nbAlguesMorts+" algues morts.");
			}		
		}, 1000, 5000);
	}