Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
No results found
Select Git revision
  • enonce
  • master
2 results
Show changes

Commits on Source 1

2 files
+ 39
3
Compare changes
  • Side-by-side
  • Inline

Files

Original line number Diff line number Diff line
package fr.univamu.progav.td5;

public abstract class Character {
  protected int healthPoints;

  public Character(int initialHealth) {
    this.healthPoints = initialHealth;
  }
  // TODO add health points

  public boolean isAlive() {
    // TODO
    if (healthPoints > 0) {
      return true ; // Le personnage est vivant si les points de vie sont supérieurs à 0
    }
    return false;
  }

  protected int getHealth() {
    // TODO
    return 0;
    return healthPoints; // Retourne les points de vie
  }
  protected void reduceHealth(int amount) {
    // 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) {
    // TODO
    healthPoints = health; // Définit les points de vie
  }

  public abstract Blow attack();
Original line number Diff line number Diff line
@@ -7,29 +7,53 @@ public class Warrior extends Character {
  public static final int RAGE_DAMAGE_THRESHOLD = 5;

  // TODO add rage
  private int rageCounter; // Compteur pour la rage
  private boolean isRaging; // Indicateur pour savoir si le guerrier est en rage

  public Warrior() {
    // 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
  public Blow attack() {
    // 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
  public void defend(Blow blow) {
    // 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
  public void specialAction() {
    // TODO
    if (!isRaging) {
      isRaging = true; // Met le guerrier en rage
      rageCounter = 3; // Donne au guerrier 3 attaques en rage
    }
  }

  public int getRage() {
    // TODO
    return 0;
    return isRaging; // Retourne l'état de la rage
  }
}