Bonjour, j’ai besoin de vous je désespère depuis tout à l’heure sur ce problème, en gros j’ai une classe générique Etre avec un nom et des points de vie, j’ai une sous-classe chamane qui a en plus de la force (f) et qui peut augmenter le nb de point de vie d’un personnage selon son pourcentage de force, et une sous-classe vampire qui fait baisser le nb de point de vie selon sa toxicité.
Le problème étant que je n’arrive pas à monter la vie des personnages (en l’occurrence Alpha ici), car la variable porCent ne veut pas prendre de valeur à virgule, si je mets une force de 100, porCent=1 mais si je mets une force à 10, il est égale à zéro.
J’ai essayé de remplacer double par float mais même résultat.

Classe Etre
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 Etre {
	String nom;
	float vie;
	//Constructeur
	Etre(String n,int v){
		this.nom=n;
		this.vie=v;
	}
	String getName() {
		return this.nom;
	}
	float getLife() {
		return this.vie;
	}
	boolean isALive() {
		return this.vie>0;
	}
	boolean isDead() {
		return this.vie==0;
	}
	void increaseLife(int life) {
		this.vie+=life;
	}
	void decreaseLife(int life) {
		this.vie-=life;
	}
	float killPeople() {
		float lifeAfterDead =this.vie;
		this.vie=0;
		return lifeAfterDead;
	}
}
CLasse Chaman
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 Chamane extends Etre{
	int force; 
	//constructeur
	Chamane(String n,int v, int f){
		super(n, v);
		this.force=f;
	}
	void healPeople(Etre autre) {
		if(autre.vie>0) { //si la cible est en vie 
			float porCent =this.force/100; // le chamane lui rajoute force% de la vie du soigné
			autre.vie+=autre.vie*porCent;
		}
		else { // Si la cible est morte
			autre.vie=1; //le chaman donne de sa vie au soigné
			this.vie-=1;
 
		}
	}
}
Classe Vampire
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
public class Vampire extends Etre {
	int toxicite;
	//constructeur
	Vampire(String n, int v, int t){
		super(n,v);
		this.toxicite=t;
	}
	void beatPeople(Etre autre){
		if(this.vie==0) { //si la vie du vampire est vide il ne se passe rien
			autre.vie=autre.vie;
		}
		else if(autre.vie>this.vie) { // si la personne attaqué a plus de vie que le vampire
			this.vie+=toxicite;  	  // le vampire lui aspire autant de vie qu'il a de toxicité
			autre.vie-=toxicite;
		}
		else if(autre.vie<toxicite) { //si la personne attaqué à moins de vie que le vampire a de
			this.vie+=autre.vie;	  // toxicité alors il lui aspire tout ce qu'il lui reste
			autre.vie=0;
		}
	}
}
Main
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
public class exo3 {
	public static void main(String[]args) {
		Etre alpha=new Etre("Alpha",100); //création être Alpha
		Chamane inca=new Chamane("Inca", 20,10); // création d'un Chamane 
		Vampire vlad=new Vampire("Vlad",40,5); // création d'un vampire
		System.out.println("vie ALpha "+alpha.vie); //affichage vie Alpha avant action
		vlad.beatPeople(alpha); // attaque de alpha par vlad
		System.out.println("vie ALpha "+alpha.vie); //affichage de vie après attaque
		inca.healPeople(alpha); // soin de alpha par inca
		System.out.println("vie ALpha "+alpha.vie); //affichage des vie de alpha après soin
	}
}