Skip to content
Snippets Groups Projects
Commit 715efed9 authored by ZEMZEM Fadl's avatar ZEMZEM Fadl
Browse files

fadltp5

parent 1df19198
No related branches found
No related tags found
No related merge requests found
package fr.univamu.progav.td5; package fr.univamu.progav.td5;
public abstract class Character { public abstract class Character {
protected int healthPoints;
public Character(int initialHealth) {
this.healthPoints = initialHealth;
}
// TODO add health points // TODO add health points
public boolean isAlive() { public boolean isAlive() {
// TODO // TODO
if (healthPoints > 0) {
return true ; // Le personnage est vivant si les points de vie sont supérieurs à 0
}
return false; return false;
} }
protected int getHealth() { protected int getHealth() {
// TODO // TODO
return 0; return healthPoints; // Retourne les points de vie
} }
protected void reduceHealth(int amount) { protected void reduceHealth(int amount) {
// TODO // TODO
healthPoints -= amount; // Réduit les points de vie
if (healthPoints < 0) {
healthPoints = 0; // S'assure que les points de vie ne sont pas négatifs
}
} }
protected void setHealth(int health) { protected void setHealth(int health) {
// TODO // TODO
healthPoints = health; // Définit les points de vie
} }
public abstract Blow attack(); public abstract Blow attack();
......
...@@ -7,29 +7,53 @@ public class Warrior extends Character { ...@@ -7,29 +7,53 @@ public class Warrior extends Character {
public static final int RAGE_DAMAGE_THRESHOLD = 5; public static final int RAGE_DAMAGE_THRESHOLD = 5;
// TODO add rage // TODO add rage
private int rageCounter; // Compteur pour la rage
private boolean isRaging; // Indicateur pour savoir si le guerrier est en rage
public Warrior() { public Warrior() {
// TODO // TODO
super(BASE_HEALTH); // Appelle le constructeur de la super-classe avec les points de vie de base
this.rageCounter = 0; // Initialise le compteur de rage
this.isRaging = false; // Initialise l'état de rage
} }
@Override @Override
public Blow attack() { public Blow attack() {
// TODO // TODO
return null; if (isRaging && rageCounter > 0) {
rageCounter--; // Diminue le compteur de rage
return new Blow(RAGE_DAMAGE, 0); // Retourne un Blow avec des dommages de rage
}
return new Blow(BASE_DAMAGE, 0); // Retourne un Blow avec des dommages de base
} }
@Override @Override
public void defend(Blow blow) { public void defend(Blow blow) {
// TODO // TODO
// Réduit les dommages physiques de moitié car le guerrier est costaud
int reducedPhysicalDamage = blow.physicalDamage() / 2;
// Applique les dommages
int totalDamage = reducedPhysicalDamage + blow.magicalDamage();
reduceHealth(totalDamage); // Réduit les points de vie en fonction des dommages
// Gestion de la prolongation de la rage
if (isRaging && blow.physicalDamage() >= RAGE_DAMAGE_THRESHOLD) {
rageCounter++; // Prolonge la rage d'une attaque supplémentaire
}
} }
@Override @Override
public void specialAction() { public void specialAction() {
// TODO // TODO
if (!isRaging) {
isRaging = true; // Met le guerrier en rage
rageCounter = 3; // Donne au guerrier 3 attaques en rage
}
} }
public int getRage() { public int getRage() {
// TODO // TODO
return 0; return isRaging; // Retourne l'état de la rage
} }
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment