Advertisement
Guest User

Untitled

a guest
Mar 26th, 2015
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.92 KB | None | 0 0
  1. package ambiente;
  2.  
  3. import attrezzi.Attrezzo;
  4.  
  5.  
  6. public class Stanza {
  7.     private static final int NUMERO_MASSIMO_DIREZIONI = 4;
  8.     private static final int NUMERO_MASSIMO_ATTREZZI = 10;
  9.     private String nome;
  10.     private Attrezzo[] attrezzi;
  11.     private int numeroAttrezzi;
  12.     private Stanza[] stanzeAdiacenti;
  13.     private int numeroStanzeAdiacenti;
  14.     private String[] direzioni;
  15.    
  16.     /**
  17.      * Crea una stanza. Non ci sono stanze adiacenti, non ci sono attrezzi.
  18.      * @param nome il nome della stanza
  19.      */
  20.     public Stanza(String nome) {
  21.         this.nome = nome;
  22.         this.numeroStanzeAdiacenti = 0;
  23.         this.numeroAttrezzi = 0;
  24.         this.direzioni = new String[NUMERO_MASSIMO_DIREZIONI];
  25.         this.stanzeAdiacenti = new Stanza[NUMERO_MASSIMO_DIREZIONI];
  26.         this.attrezzi = new Attrezzo[NUMERO_MASSIMO_ATTREZZI];
  27.     }
  28.  
  29.     /**
  30.      * Imposta una stanza adiacente.
  31.      *
  32.      * @param direzione direzione in cui sara' posta la stanza adiacente.
  33.      * @param stanza stanza adiacente nella direzione indicata dal primo parametro.
  34.      */
  35.     public void impostaStanzaAdiacente(String direzione, Stanza stanza) {
  36.         boolean aggiornato = false;
  37.         for(int i=0; i<this.direzioni.length; i++)
  38.             if (direzione.equals(this.direzioni[i])) {
  39.                 this.stanzeAdiacenti[i] = stanza;
  40.                 aggiornato = true;
  41.             }
  42.         if (!aggiornato)
  43.             if (this.numeroStanzeAdiacenti < NUMERO_MASSIMO_DIREZIONI) {
  44.                 this.direzioni[numeroStanzeAdiacenti] = direzione;
  45.                 this.stanzeAdiacenti[numeroStanzeAdiacenti] = stanza;
  46.                 this.numeroStanzeAdiacenti++;
  47.             }
  48.     }
  49.  
  50.     /**
  51.      * Restituisce la stanza adiacente nella direzione specificata
  52.      * @param direzione
  53.      */
  54.     public Stanza getStanzaAdiacente(String direzione) {
  55.         Stanza stanza = null;
  56.         for(int i=0; i<this.numeroStanzeAdiacenti; i++)
  57.             if (this.direzioni[i].equals(direzione))
  58.                 stanza = this.stanzeAdiacenti[i];
  59.         return stanza;
  60.     }
  61.  
  62.     /**
  63.      * Restituisce la nome della stanza.
  64.      * @return il nome della stanza
  65.      */
  66.     public String getNome() {
  67.         return this.nome;
  68.     }
  69.  
  70.     /**
  71.      * Restituisce la descrizione della stanza.
  72.      * @return la descrizione della stanza
  73.      */
  74.     public String getDescrizione() {
  75.         return this.toString();
  76.     }
  77.  
  78.     /**
  79.      * Restituisce la collezione di attrezzi presenti nella stanza.
  80.      * @return la collezione di attrezzi nella stanza.
  81.      */
  82.     public Attrezzo[] getAttrezzi() {
  83.         return this.attrezzi;
  84.     }
  85.  
  86.     /**
  87.      * Mette un attrezzo nella stanza.
  88.      * @param attrezzo l'attrezzo da mettere nella stanza.
  89.      * @return true se riesce ad aggiungere l'attrezzo, false atrimenti.
  90.      */
  91.     public boolean addAttrezzo(Attrezzo attrezzo) {
  92.         if (this.numeroAttrezzi < NUMERO_MASSIMO_ATTREZZI) {
  93.             this.attrezzi[numeroAttrezzi] = attrezzo;
  94.             this.numeroAttrezzi++;
  95.             return true;
  96.         }
  97.         else {
  98.             return false;
  99.         }
  100.     }
  101.  
  102.    /**
  103.     * Restituisce una rappresentazione stringa di questa stanza,
  104.     * stampadone la descrizione, le uscite e gli eventuali attrezzi contenuti
  105.     * @return la rappresentazione stringa
  106.     */
  107.     public String toString() {
  108.         String s = new String();
  109.         s += this.nome;
  110.         s += "\nUscite: ";
  111.         for (String direzione : this.direzioni)
  112.             if (direzione!=null)
  113.                 s += " " + direzione;
  114.         s += "\nAttrezzi nella stanza: ";
  115.         for (int i=0; i<numeroAttrezzi; i++) {
  116.             s += attrezzi[i].toString()+" ";
  117.         }
  118.         return s;
  119.     }
  120.  
  121.     /**
  122.     * Controlla se un attrezzo esiste nella stanza (uguaglianza sul nome).
  123.     * @return true se l'attrezzo esiste nella stanza, false altrimenti.
  124.     */
  125.     public boolean hasAttrezzo(String nomeAttrezzo) {
  126.         boolean trovato;
  127.         trovato = false;
  128.         for (Attrezzo attrezzo : this.attrezzi) {
  129.             if (attrezzo.getNome().equals(nomeAttrezzo))
  130.                 trovato = true;
  131.         }
  132.         return trovato;
  133.     }
  134.  
  135.     /**
  136.      * Restituisce l'attrezzo nomeAttrezzo se presente nella stanza.
  137.      * @param nomeAttrezzo
  138.      * @return l'attrezzo presente nella stanza.
  139.      *         null se l'attrezzo non e' presente.
  140.      */
  141.     public Attrezzo getAttrezzo(String nomeAttrezzo) {
  142.         Attrezzo attrezzoCercato;
  143.         attrezzoCercato = null;
  144.         for (Attrezzo attrezzo : this.attrezzi) {
  145.             if (attrezzo.getNome().equals(nomeAttrezzo))
  146.                 attrezzoCercato = attrezzo;
  147.         }
  148.         return attrezzoCercato;
  149.     }
  150.  
  151.     /**
  152.      * Rimuove un attrezzo dalla stanza (ricerca in base al nome).
  153.      * @param nomeAttrezzo
  154.      * @return true se l'attrezzo e' stato rimosso, false altrimenti
  155.      */
  156.     public boolean removeAttrezzo(Attrezzo attrezzo) {
  157.         // da implementare
  158.         return false;
  159.     }
  160.  
  161.  
  162.     public String[] getDirezioni() {
  163.         String[] direzioni = new String[this.numeroStanzeAdiacenti];
  164.         for(int i=0; i<this.numeroStanzeAdiacenti; i++)
  165.             direzioni[i] = this.direzioni[i];
  166.         return direzioni;
  167.     }
  168.  
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement