Пример #1
0
  /**
   * Renvoie la console correspondant a la reference RMI donnee.
   *
   * @param refRMI reference RMI
   * @return console correspondante
   * @throws RemoteException
   */
  protected IConsole consoleFromRef(int refRMI) throws RemoteException {
    int p = port + refRMI;
    String ip = null;
    String adr = null;
    IConsole console = null;

    try {
      ip = personnages.get(refRMI).getAdresseIp();
      adr = Constantes.nomRMI(ip, p, "Console" + refRMI);
      console = (IConsole) Naming.lookup(adr);

    } catch (MalformedURLException e) {
      console = null;
      logger.severe(Constantes.nomClasse(this), "Erreur : acces a " + adr + "\n" + e.toString());
      e.printStackTrace();

    } catch (NotBoundException e) {
      console = null;
      logger.severe(Constantes.nomClasse(this), "Erreur : acces a " + adr + "\n" + e.toString());
      e.printStackTrace();

    } catch (NullPointerException e) {
      console = null;
    }

    return console;
  }
Пример #2
0
  @Override
  public synchronized boolean connecte(
      int refRMI, String ipConsole, Personnage personnage, int nbTours, Point position)
      throws RemoteException {

    // assignation d'un port unique a chaque personnage
    int portConsole = port + refRMI;
    String adr = Constantes.nomRMI(ipConsole, portConsole, "Console" + refRMI);

    boolean res = true;

    try {
      logger.info(Constantes.nomClasse(this), "Demande de connexion (" + adr + ")");

      // ajout du personnage a la liste
      personnages.put(refRMI, new VuePersonnage(ipConsole, personnage, nbTours, position, refRMI));

      logger.info(Constantes.nomClasse(this), "Connexion acceptee (" + adr + ")");
      logElements();

    } catch (Exception e) {
      logger.severe(Constantes.nomClasse(this), "Echec de connexion (" + adr + ")");
      e.printStackTrace();

      ejectePersonnage(refRMI);

      res = false;
    }

    return res;
  }
  public void lancerPotionTeleportation(int port, String ipArene) {
    String nom = "Téléportation";

    // TODO remplacer la ligne suivante par votre numero de groupe
    String groupe = "G7";

    // creation du logger
    LoggerProjet logger = null;
    try {
      logger = new LoggerProjet(true, "potion_" + nom + groupe);
    } catch (IOException e) {
      e.printStackTrace();
      System.exit(ErreurLancement.suivant);
    }

    // lancement de la potion
    try {
      IArene arene = (IArene) java.rmi.Naming.lookup(Constantes.nomRMI(ipArene, port, "Arene"));

      logger.info("Lanceur", "Lancement de la potion sur le serveur...");

      // caracteristiques de la potion
      HashMap<Caracteristique, Integer> caracts = new HashMap<Caracteristique, Integer>();
      caracts.put(Caracteristique.VIE, 0);
      caracts.put(Caracteristique.FORCE, 0);
      caracts.put(Caracteristique.INITIATIVE, 0);
      caracts.put(Caracteristique.ESQUIVE, 0);
      caracts.put(Caracteristique.DEFENSE, 0);
      caracts.put(Caracteristique.BOUCLIER, 0);

      // ajout de la potion
      arene.ajoutePotion(new Potion(nom, groupe, caracts), Calculs.positionAleatoireArene());
      logger.info("Lanceur", "Lancement de la potion reussi");

    } catch (Exception e) {
      logger.severe("Lanceur", "Erreur lancement :\n" + e.getCause());
      e.printStackTrace();
      System.exit(ErreurLancement.suivant);
    }
  }
Пример #4
0
 /**
  * Construit l'adresse complete de l'arene sous forme de chaine de caracteres.
  *
  * @return adresse complete de l'arene
  */
 private String adrToString() {
   return Constantes.nomRMI(adresseIP, port, "Arene");
 }