Package modele

Class Combat

java.lang.Object
modele.Combat
All Implemented Interfaces:
Serializable

public class Combat extends Object implements Serializable
Classe représentant un combat **tour par tour** entre un joueur et un monstre. Gère les actions possibles, les calculs de dégâts, les récompenses, et l'issue du combat.
See Also:
  • Field Details

    • serialVersionUID

      private static final long serialVersionUID
      Identifiant de version pour la sérialisation.
      See Also:
    • joueur

      private final Joueur joueur
      Joueur impliqué dans le combat.
    • monstre

      private final Monstre monstre
      Monstre opposé au joueur dans ce combat.
    • random

      private final Random random
      Générateur aléatoire pour tous les calculs probabilistes du combat.
    • joueurDefend

      private boolean joueurDefend
      Indique si le joueur a choisi de se défendre ce tour.
    • monstreDefend

      private boolean monstreDefend
      Indique si le monstre s'est mis en défense ce tour.
    • issue

      private Combat.Issue issue
      État actuel du combat (en cours, victoire, défaite ou fuite).
  • Constructor Details

    • Combat

      public Combat(Joueur joueur, Monstre monstre)
      Crée un nouveau combat entre un joueur et un monstre. Initialise le combat en mode "en cours".
      Parameters:
      joueur - Le joueur participant au combat.
      monstre - Le monstre affronté.
  • Method Details

    • getIssue

      public Combat.Issue getIssue()
      Retourne l’issue actuelle du combat.
      Returns:
      L’état du combat (EN_COURS, VICTOIRE, DEFAITE, FUITE).
    • getJoueur

      public Joueur getJoueur()
      Retourne le joueur impliqué dans le combat.
      Returns:
      Le joueur.
    • getMonstre

      public Monstre getMonstre()
      Retourne le monstre impliqué dans le combat.
      Returns:
      Le monstre.
    • jouerTour

      public String jouerTour(Combat.Action action)
      Joue un tour complet de combat : le joueur agit, puis le monstre (ou inversement selon la vitesse). Met à jour l’issue du combat selon les actions effectuées.
      Parameters:
      action - Action choisie par le joueur (ATTAQUER, DEFENDRE, FUIR)
      Returns:
      Un texte (log) décrivant les actions et les conséquences de ce tour.
    • executerActionJoueur

      private String executerActionJoueur(Combat.Action action)
      Exécute l’action choisie par le joueur (attaque, défense ou fuite). Gère aussi la victoire du joueur et ses récompenses si le monstre est vaincu.
      Parameters:
      action - L’action choisie par le joueur.
      Returns:
      Le log correspondant à cette action.
    • executerActionMonstre

      private String executerActionMonstre()
      Exécute l’action automatique du monstre. IA basique : attaque sauf s’il a très peu de vie (il peut alors choisir la défense). Gère aussi la défaite du joueur.
      Returns:
      Le log des actions du monstre.
    • attaquer

      private String attaquer(Personnage src, Personnage dst, boolean dstDefend)
      Effectue une attaque d’un personnage source vers une cible. Le résultat dépend de la dextérité, force, armure et état de défense de la cible. Prend en compte les coups critiques, l’armure et la défense active.
      Parameters:
      src - L’attaquant.
      dst - La cible.
      dstDefend - Vrai si la cible est en défense (divise les dégâts par 2).
      Returns:
      Le log de l’attaque.
    • tentativeFuite

      private boolean tentativeFuite()
      Tente une fuite du joueur en comparant sa vitesse à celle du monstre. La probabilité de réussir dépend de la différence de vitesse.
      Returns:
      true si la fuite réussit, false sinon.