Пример #1
0
  @Override
  public void interagit() {
    try {
      Personnage pAttaquant = attaquant.getElement(); // init
      int forceAttaquant = pAttaquant.getCaract(Caracteristique.FORCE);
      Personnage pDefenseur = defenseur.getElement();
      int defenseDefenseur =
          pDefenseur.getCaract(Caracteristique.DEFENSE); // on prend en compte la Defense
      int perteVie = forceAttaquant * (100 - defenseDefenseur) / 100;

      Point positionEjection =
          positionEjection(defenseur.getPosition(), attaquant.getPosition(), forceAttaquant);

      // ejection du defenseur
      defenseur.setPosition(positionEjection);

      // degats
      if (perteVie > 0) {
        arene.incrementeCaractElement(defenseur, Caracteristique.VIE, -perteVie);

        logs(
            Level.INFO,
            Constantes.nomRaccourciClient(attaquant)
                + " colle une beigne paralysante ("
                + perteVie
                + " points de degats) a "
                + Constantes.nomRaccourciClient(defenseur));
      }
      // paralysie
      paralysie(defenseur);
      // initiative
      incrementeInitiative(defenseur);
      decrementeInitiative(attaquant);

    } catch (RemoteException e) {
      logs(Level.INFO, "\nErreur lors d'une attaque : " + e.toString());
    }
  }
Пример #2
0
 /**
  * Retourne le nom raccourci du client correspondant a la reference RMI donnee.
  *
  * @param refRMI reference RMI
  * @return nom raccourci du client
  */
 public String nomRaccourciClient(int refRMI) throws RemoteException {
   return Constantes.nomRaccourciClient(vueFromRef(refRMI));
 }
Пример #3
0
  // TODO : modification de l'interaction avec les differents type de potions
  @Override
  public void interagit() {
    try {
      logs(
          Level.INFO,
          Constantes.nomRaccourciClient(attaquant)
              + " essaye de rammasser "
              + Constantes.nomRaccourciClient(defenseur));

      // si le personnage est vivant
      if (attaquant.getElement().estVivant()) {

        // caracteristiques de la potion
        HashMap<Caracteristique, Integer> valeursPotion = defenseur.getElement().getCaracts();

        int typePotion = valeursPotion.get(Caracteristique.TYPE);

        if (typePotion == 1) {

          for (Caracteristique c : valeursPotion.keySet()) {

            if (c != Caracteristique.TYPE) {
              arene.incrementeCaractElement(
                  attaquant,
                  c,
                  (int)
                      ((valeursPotion.get(c) / (float) 100)
                          * attaquant.getElement().getCaracts().get(c)));

              System.out.println(attaquant.getElement().getCaracts().get(c));
              System.out.println(valeursPotion.get(c));
            }
          }
        } else {

          for (Caracteristique c : valeursPotion.keySet()) {

            if (c != Caracteristique.TYPE) {
              arene.incrementeCaractElement(attaquant, c, valeursPotion.get(c));
            }
          }
        }

        logs(Level.INFO, "Potion bue !");

        // test si mort
        if (!attaquant.getElement().estVivant()) {
          arene.setPhrase(attaquant.getRefRMI(), "Je me suis empoisonne, je meurs ");
          logs(
              Level.INFO,
              Constantes.nomRaccourciClient(attaquant) + " vient de boire un poison... Mort >_<");
        }

        // suppression de la potion
        arene.ejectePotion(defenseur.getRefRMI());

      } else {
        logs(
            Level.INFO,
            Constantes.nomRaccourciClient(attaquant)
                + " ou "
                + Constantes.nomRaccourciClient(defenseur)
                + " est deja mort... Rien ne se passe");
      }
    } catch (RemoteException e) {
      logs(Level.INFO, "\nErreur lors d'un ramassage : " + e.toString());
    }
  }
Пример #4
0
  @Override
  public void interagit() {
    Potion Potion = defenseur.getElement();

    try {
      logs(
          Level.INFO,
          Constantes.nomRaccourciClient(attaquant)
              + " essaye de rammasser "
              + Constantes.nomRaccourciClient(defenseur));

      // si le personnage est vivant
      if (attaquant.getElement().estVivant()) {

        // caracteristiques de la potion
        HashMap<Caracteristique, Integer> valeursPotion = defenseur.getElement().getCaracts();

        if (Potion.getNom().equals("teleportation")) {
          arene.setPhrase(attaquant.getRefRMI(), "Je me teleporte");
          Point p;
          p = attaquant.getPosition();
          p.x =
              (int) (Math.random() * (Constantes.XMAX_ARENE - Constantes.XMIN_ARENE))
                  + Constantes.XMIN_ARENE;
          p.y =
              (int) (Math.random() * (Constantes.YMAX_ARENE - Constantes.YMIN_ARENE))
                  + Constantes.YMIN_ARENE;
          arene.deplace(attaquant.getRefRMI(), p);

        } else if (Potion.getNom().equals("immobilite")) {
          arene.setPhrase(attaquant.getRefRMI(), "Je deviens immobile pour 5 tours");
          this.attaquant.getElement().nbToursImm = 5;
          System.err.println("nb tour: " + this.attaquant.getElement().nbToursImm);
        } else {
          for (Caracteristique c : valeursPotion.keySet()) {
            arene.incrementeCaractElement(attaquant, c, valeursPotion.get(c));
          }

          logs(Level.INFO, "Potion bue !");

          // test si mort
          if (!attaquant.getElement().estVivant()) {
            arene.setPhrase(attaquant.getRefRMI(), "Je me suis empoisonne, je meurs ");
            logs(
                Level.INFO,
                Constantes.nomRaccourciClient(attaquant) + " vient de boire un poison... Mort >_<");
          }
        }

        if (!Potion.getNom().equals("nitro")) {
          attaquant.getElement().getCaracts().put(Caracteristique.VITESSE, 1);
        }
        // suppression de la potion
        arene.ejectePotion(defenseur.getRefRMI());

      } else {
        logs(
            Level.INFO,
            Constantes.nomRaccourciClient(attaquant)
                + " ou "
                + Constantes.nomRaccourciClient(defenseur)
                + " est deja mort... Rien ne se passe");
      }
    } catch (RemoteException e) {
      logs(Level.INFO, "\nErreur lors d'un ramassage : " + e.toString());
    }
  }