/**
  * Deregistra un player dal server, rendendo nuovamente disponibile il nickname ad altri player.
  *
  * @param nickname nome del player da deregistrare
  */
 public void deregisterPlayer(String nickname) {
   try {
     server.deregister(nickname);
   } catch (RemoteException e) {
     System.out.println("Impossible to logout." + e.getMessage());
   }
 }
 /**
  * Consente a un player di creare una nuova partita.
  *
  * @param idGame id della partita da creare.
  * @throws MalformedURLException
  * @throws RemoteException
  * @throws NotBoundException
  */
 public void createGame(String idGame)
     throws MalformedURLException, RemoteException, NotBoundException {
   idGameCreated = idGame;
   creator = true;
   server.createGame(p, idGame);
 }
 /**
  * Rimuove una partita precedentemente creata da un player.
  *
  * @return lista delle partite aggiornata dopo la rimozione
  * @throws MalformedURLException
  * @throws RemoteException
  * @throws NotBoundException
  */
 public ArrayList<String> removeGame()
     throws MalformedURLException, RemoteException, NotBoundException {
   if (creator) return (ArrayList<String>) server.removeGame(idGameCreated);
   else return (ArrayList<String>) server.removeGame(idGameJoined);
 }
 /**
  * Riceve la lista delle partite create che sono in attesa di uno sfidante.
  *
  * @return lista delle partite
  * @throws MalformedURLException
  * @throws RemoteException
  * @throws NotBoundException
  */
 public ArrayList<String> receiveList()
     throws MalformedURLException, RemoteException, NotBoundException {
   return (ArrayList<String>) server.getAllChallengers();
 }
 /**
  * Consente a un player di registrarsi presso il server. Il nickname deve essere univoco nel
  * sistema fino alla deregistrazione del player.
  *
  * @param nickname nome con cui registrarsi.
  * @return true se la registrazione e' andata a buon fine, false altrimenti
  * @throws RemoteException
  */
 public boolean registerPlayer(String nickname) throws RemoteException {
   p = new PlayerImpl();
   p.setName(nickname);
   p.add(this); // mi aggiungo come osservatore di p
   return server.register(p, nickname);
 }
 /**
  * Consente a un player di aggiungersi a una partita creata precedentemente da un altro player.
  *
  * @param idGame id della partita in cui aggiungersi.
  * @throws MalformedURLException
  * @throws RemoteException
  * @throws NotBoundException
  * @throws GameJoiningException se la partita non e' piu' disponibile perche' e' stata cancellata
  *     oppure e' gia' completa
  */
 public void joinGame(String idGame)
     throws MalformedURLException, RemoteException, NotBoundException, GameJoiningException {
   idGameJoined = idGame;
   creator = false;
   server.joinGame(p, idGame);
 }