Problème variable pourcentage
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:
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:
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:
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:
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
}
} |