Advertisement
Guest User

Stanza.java

a guest
May 23rd, 2018
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.24 KB | None | 0 0
  1. package it.uniroma3.diadia.ambienti;
  2.  
  3. import java.util.HashMap;
  4. import java.util.HashSet;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.Set;
  8.  
  9. import it.uniroma3.diadia.attrezzi.Attrezzo;
  10.  
  11. /**
  12.  * Classe Stanza - una stanza in un gioco di ruolo. Una stanza e' un luogo
  13.  * fisico nel gioco. E' collegata ad altre stanze attraverso delle uscite. Ogni
  14.  * uscita e' associata ad una direzione.
  15.  *
  16.  * @author docente di POO / Leonardo Idone e Alberto Ramagini
  17.  * @see Attrezzo
  18.  * @version base corretta e ampliata
  19.  */
  20.  
  21. public class Stanza {
  22.  
  23.     private String nome;
  24.     private Set<Attrezzo> attrezzi;
  25.     private Map<String, Stanza> stanzeAdiacenti;
  26.     private Set<String> direzioni;
  27.  
  28.     /**
  29.      * Crea una stanza. Non ci sono stanze adiacenti, non ci sono attrezzi.
  30.      *
  31.      * @param nome
  32.      *            il nome della stanza
  33.      */
  34.     public Stanza(String nome) {
  35.         this.nome = nome;
  36.         this.stanzeAdiacenti = new HashMap<>();
  37.         this.attrezzi = new HashSet<>();
  38.         this.direzioni = new HashSet<>();
  39.     }
  40.  
  41.     public void setNome(String nome) {
  42.         this.nome = nome;
  43.     }
  44.  
  45.     public void setAttrezzi(HashSet<Attrezzo> attrezzi) {
  46.         this.attrezzi = attrezzi;
  47.     }
  48.  
  49.     /*
  50.      * public void setStanzeAdiacenti(Stanza[] stanzeAdiacenti) {
  51.      * this.stanzeAdiacenti = stanzeAdiacenti; }
  52.      *
  53.      * public Stanza[] getStanzeAdiacenti() { return this.stanzeAdiacenti; }
  54.      */
  55.  
  56.     public void setDirezioni(HashSet<String> direzioni) {
  57.         this.direzioni = direzioni;
  58.     }
  59.  
  60.     /**
  61.      * Imposta una stanza adiacente.
  62.      *
  63.      * @param direzione
  64.      *            direzione in cui sara' posta la stanza adiacente.
  65.      * @param stanza
  66.      *            stanza adiacente nella direzione indicata dal primo parametro.
  67.      */
  68.     public void impostaStanzaAdiacente(String direzione, Stanza stanza) {
  69.         this.stanzeAdiacenti.put(direzione, stanza);
  70.     }
  71.  
  72.     /**
  73.      * Restituisce la stanza adiacente nella direzione specificata
  74.      *
  75.      * @param direzione
  76.      */
  77.     public Stanza getStanzaAdiacente(String direzione) {
  78.         return this.stanzeAdiacenti.get(direzione);
  79.     }
  80.  
  81.     @Override
  82.     public boolean equals(Object o) {
  83.         Stanza that = (Stanza) o;
  84.         return this.getNome().equals(that.getNome());
  85.     }
  86.  
  87.     @Override
  88.     public int hashCode() {
  89.         return this.getNome().hashCode();
  90.     }
  91.  
  92.     /**
  93.      * Restituisce la nome della stanza.
  94.      *
  95.      * @return il nome della stanza
  96.      */
  97.     public String getNome() {
  98.         return this.nome;
  99.     }
  100.  
  101.     /**
  102.      * Restituisce la descrizione della stanza.
  103.      *
  104.      * @return la descrizione della stanza
  105.      */
  106.     public String getDescrizione() {
  107.         return this.toString();
  108.     }
  109.  
  110.     /**
  111.      * Restituisce la collezione di attrezzi presenti nella stanza.
  112.      *
  113.      * @return la collezione di attrezzi nella stanza.
  114.      */
  115.     public Set<Attrezzo> getAttrezzi() {
  116.         return this.attrezzi;
  117.     }
  118.  
  119.     /**
  120.      * Restituisce una rappresentazione stringa di questa stanza, stampadone la
  121.      * descrizione, le uscite e gli eventuali attrezzi contenuti
  122.      *
  123.      * @return la rappresentazione stringa
  124.      */
  125.     public String toString() {
  126.         StringBuilder risultato = new StringBuilder();
  127.         risultato.append(this.nome);
  128.         risultato.append("\nUscite: ");
  129.         Iterator<String> iteratore = this.direzioni.iterator();
  130.         String d = null;
  131.         while (iteratore.hasNext()) {
  132.             d = iteratore.next();
  133.             if (d != null) // TODO Vedere se togliendo questo if cambi nulla
  134.                 risultato.append(" " + d);
  135.         }
  136.         risultato.append("\nAttrezzi nella stanza: ");
  137.         for (Attrezzo attrezzo : this.attrezzi) {
  138.             risultato.append(attrezzo.toString() + " ");
  139.         }
  140.         return risultato.toString();
  141.     }
  142.  
  143.     /**
  144.      * Controlla se un attrezzo esiste nella stanza (uguaglianza sul nome).
  145.      *
  146.      * @return true se l'attrezzo esiste nella stanza, false altrimenti.
  147.      */
  148.     public boolean hasAttrezzo(Attrezzo attrezzo) {
  149.         return this.attrezzi.contains(attrezzo);
  150.     }
  151.  
  152.     /**
  153.      * Restituisce l'attrezzo nomeAttrezzo se presente nella stanza.
  154.      *
  155.      * @param nomeAttrezzo
  156.      * @return l'attrezzo presente nella stanza. null se l'attrezzo non e' presente.
  157.      */
  158.     public Attrezzo getAttrezzo(Attrezzo attrezzo) {
  159.         Attrezzo a = null;
  160.         Iterator<Attrezzo> iteratore = this.attrezzi.iterator();
  161.         while (iteratore.hasNext()) {
  162.             a = iteratore.next();
  163.                 if (a.equals(attrezzo))
  164.                     return a;
  165.         }
  166.         return null;
  167.     }
  168.  
  169.  
  170.  
  171.     /**
  172.      * Mette un attrezzo nella stanza.
  173.      *
  174.      * @param attrezzo
  175.      *            l'attrezzo da mettere nella stanza.
  176.      * @return true se riesce ad aggiungere l'attrezzo, false altrimenti.
  177.      */
  178.     public boolean addAttrezzo(Attrezzo attrezzo) {
  179.         return this.attrezzi.add(attrezzo);
  180.     }
  181.  
  182.     /**
  183.      * Rimuove un attrezzo dalla stanza (ricerca in base al nome).
  184.      *
  185.      * @param nomeAttrezzo
  186.      *            L'attrezzo da rimuovere
  187.      * @return true se l'attrezzo e' stato rimosso, false altrimenti
  188.      */
  189.     public boolean removeAttrezzo(Attrezzo attrezzo) {
  190.         Attrezzo a = null;
  191.         Iterator<Attrezzo> iteratore = this.attrezzi.iterator();
  192.         while (iteratore.hasNext()) {
  193.             a = iteratore.next();
  194.             if (a.getNome().equals(attrezzo.getNome())) {
  195.                 iteratore.remove();
  196.                 return true;
  197.             }
  198.         }
  199.         return false;
  200.     }
  201.  
  202.     /**
  203.      * Crea una stringa con tutte le direzioni eseguibili dalla stanza
  204.      *
  205.      * @return la stringa delle direzioni selezionabili dalla stanza
  206.      */
  207.     public Set<String> getDirezioni() {
  208.         return this.direzioni;
  209.     }
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement