Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ambiente;
- import attrezzi.Attrezzo;
- public class Stanza {
- private static final int NUMERO_MASSIMO_DIREZIONI = 4;
- private static final int NUMERO_MASSIMO_ATTREZZI = 10;
- private String nome;
- private Attrezzo[] attrezzi;
- private int numeroAttrezzi;
- private Stanza[] stanzeAdiacenti;
- private int numeroStanzeAdiacenti;
- private String[] direzioni;
- /**
- * Crea una stanza. Non ci sono stanze adiacenti, non ci sono attrezzi.
- * @param nome il nome della stanza
- */
- public Stanza(String nome) {
- this.nome = nome;
- this.numeroStanzeAdiacenti = 0;
- this.numeroAttrezzi = 0;
- this.direzioni = new String[NUMERO_MASSIMO_DIREZIONI];
- this.stanzeAdiacenti = new Stanza[NUMERO_MASSIMO_DIREZIONI];
- this.attrezzi = new Attrezzo[NUMERO_MASSIMO_ATTREZZI];
- }
- /**
- * Imposta una stanza adiacente.
- *
- * @param direzione direzione in cui sara' posta la stanza adiacente.
- * @param stanza stanza adiacente nella direzione indicata dal primo parametro.
- */
- public void impostaStanzaAdiacente(String direzione, Stanza stanza) {
- boolean aggiornato = false;
- for(int i=0; i<this.direzioni.length; i++)
- if (direzione.equals(this.direzioni[i])) {
- this.stanzeAdiacenti[i] = stanza;
- aggiornato = true;
- }
- if (!aggiornato)
- if (this.numeroStanzeAdiacenti < NUMERO_MASSIMO_DIREZIONI) {
- this.direzioni[numeroStanzeAdiacenti] = direzione;
- this.stanzeAdiacenti[numeroStanzeAdiacenti] = stanza;
- this.numeroStanzeAdiacenti++;
- }
- }
- /**
- * Restituisce la stanza adiacente nella direzione specificata
- * @param direzione
- */
- public Stanza getStanzaAdiacente(String direzione) {
- Stanza stanza = null;
- for(int i=0; i<this.numeroStanzeAdiacenti; i++)
- if (this.direzioni[i].equals(direzione))
- stanza = this.stanzeAdiacenti[i];
- return stanza;
- }
- /**
- * Restituisce la nome della stanza.
- * @return il nome della stanza
- */
- public String getNome() {
- return this.nome;
- }
- /**
- * Restituisce la descrizione della stanza.
- * @return la descrizione della stanza
- */
- public String getDescrizione() {
- return this.toString();
- }
- /**
- * Restituisce la collezione di attrezzi presenti nella stanza.
- * @return la collezione di attrezzi nella stanza.
- */
- public Attrezzo[] getAttrezzi() {
- return this.attrezzi;
- }
- /**
- * Mette un attrezzo nella stanza.
- * @param attrezzo l'attrezzo da mettere nella stanza.
- * @return true se riesce ad aggiungere l'attrezzo, false atrimenti.
- */
- public boolean addAttrezzo(Attrezzo attrezzo) {
- if (this.numeroAttrezzi < NUMERO_MASSIMO_ATTREZZI) {
- this.attrezzi[numeroAttrezzi] = attrezzo;
- this.numeroAttrezzi++;
- return true;
- }
- else {
- return false;
- }
- }
- /**
- * Restituisce una rappresentazione stringa di questa stanza,
- * stampadone la descrizione, le uscite e gli eventuali attrezzi contenuti
- * @return la rappresentazione stringa
- */
- public String toString() {
- String s = new String();
- s += this.nome;
- s += "\nUscite: ";
- for (String direzione : this.direzioni)
- if (direzione!=null)
- s += " " + direzione;
- s += "\nAttrezzi nella stanza: ";
- for (int i=0; i<numeroAttrezzi; i++) {
- s += attrezzi[i].toString()+" ";
- }
- return s;
- }
- /**
- * Controlla se un attrezzo esiste nella stanza (uguaglianza sul nome).
- * @return true se l'attrezzo esiste nella stanza, false altrimenti.
- */
- public boolean hasAttrezzo(String nomeAttrezzo) {
- boolean trovato;
- trovato = false;
- for (Attrezzo attrezzo : this.attrezzi) {
- if (attrezzo.getNome().equals(nomeAttrezzo))
- trovato = true;
- }
- return trovato;
- }
- /**
- * Restituisce l'attrezzo nomeAttrezzo se presente nella stanza.
- * @param nomeAttrezzo
- * @return l'attrezzo presente nella stanza.
- * null se l'attrezzo non e' presente.
- */
- public Attrezzo getAttrezzo(String nomeAttrezzo) {
- Attrezzo attrezzoCercato;
- attrezzoCercato = null;
- for (Attrezzo attrezzo : this.attrezzi) {
- if (attrezzo.getNome().equals(nomeAttrezzo))
- attrezzoCercato = attrezzo;
- }
- return attrezzoCercato;
- }
- /**
- * Rimuove un attrezzo dalla stanza (ricerca in base al nome).
- * @param nomeAttrezzo
- * @return true se l'attrezzo e' stato rimosso, false altrimenti
- */
- public boolean removeAttrezzo(Attrezzo attrezzo) {
- // da implementare
- return false;
- }
- public String[] getDirezioni() {
- String[] direzioni = new String[this.numeroStanzeAdiacenti];
- for(int i=0; i<this.numeroStanzeAdiacenti; i++)
- direzioni[i] = this.direzioni[i];
- return direzioni;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement