Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package it.uniroma3.diadia.ambienti;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- import it.uniroma3.diadia.attrezzi.Attrezzo;
- /**
- * Classe Stanza - una stanza in un gioco di ruolo. Una stanza e' un luogo
- * fisico nel gioco. E' collegata ad altre stanze attraverso delle uscite. Ogni
- * uscita e' associata ad una direzione.
- *
- * @author docente di POO / Leonardo Idone e Alberto Ramagini
- * @see Attrezzo
- * @version base corretta e ampliata
- */
- public class Stanza {
- private String nome;
- private Set<Attrezzo> attrezzi;
- private Map<String, Stanza> stanzeAdiacenti;
- private Set<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.stanzeAdiacenti = new HashMap<>();
- this.attrezzi = new HashSet<>();
- this.direzioni = new HashSet<>();
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public void setAttrezzi(HashSet<Attrezzo> attrezzi) {
- this.attrezzi = attrezzi;
- }
- /*
- * public void setStanzeAdiacenti(Stanza[] stanzeAdiacenti) {
- * this.stanzeAdiacenti = stanzeAdiacenti; }
- *
- * public Stanza[] getStanzeAdiacenti() { return this.stanzeAdiacenti; }
- */
- public void setDirezioni(HashSet<String> direzioni) {
- this.direzioni = direzioni;
- }
- /**
- * 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) {
- this.stanzeAdiacenti.put(direzione, stanza);
- }
- /**
- * Restituisce la stanza adiacente nella direzione specificata
- *
- * @param direzione
- */
- public Stanza getStanzaAdiacente(String direzione) {
- return this.stanzeAdiacenti.get(direzione);
- }
- @Override
- public boolean equals(Object o) {
- Stanza that = (Stanza) o;
- return this.getNome().equals(that.getNome());
- }
- @Override
- public int hashCode() {
- return this.getNome().hashCode();
- }
- /**
- * 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 Set<Attrezzo> getAttrezzi() {
- return this.attrezzi;
- }
- /**
- * Restituisce una rappresentazione stringa di questa stanza, stampadone la
- * descrizione, le uscite e gli eventuali attrezzi contenuti
- *
- * @return la rappresentazione stringa
- */
- public String toString() {
- StringBuilder risultato = new StringBuilder();
- risultato.append(this.nome);
- risultato.append("\nUscite: ");
- Iterator<String> iteratore = this.direzioni.iterator();
- String d = null;
- while (iteratore.hasNext()) {
- d = iteratore.next();
- if (d != null) // TODO Vedere se togliendo questo if cambi nulla
- risultato.append(" " + d);
- }
- risultato.append("\nAttrezzi nella stanza: ");
- for (Attrezzo attrezzo : this.attrezzi) {
- risultato.append(attrezzo.toString() + " ");
- }
- return risultato.toString();
- }
- /**
- * Controlla se un attrezzo esiste nella stanza (uguaglianza sul nome).
- *
- * @return true se l'attrezzo esiste nella stanza, false altrimenti.
- */
- public boolean hasAttrezzo(Attrezzo attrezzo) {
- return this.attrezzi.contains(attrezzo);
- }
- /**
- * 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(Attrezzo attrezzo) {
- Attrezzo a = null;
- Iterator<Attrezzo> iteratore = this.attrezzi.iterator();
- while (iteratore.hasNext()) {
- a = iteratore.next();
- if (a.equals(attrezzo))
- return a;
- }
- return null;
- }
- /**
- * Mette un attrezzo nella stanza.
- *
- * @param attrezzo
- * l'attrezzo da mettere nella stanza.
- * @return true se riesce ad aggiungere l'attrezzo, false altrimenti.
- */
- public boolean addAttrezzo(Attrezzo attrezzo) {
- return this.attrezzi.add(attrezzo);
- }
- /**
- * Rimuove un attrezzo dalla stanza (ricerca in base al nome).
- *
- * @param nomeAttrezzo
- * L'attrezzo da rimuovere
- * @return true se l'attrezzo e' stato rimosso, false altrimenti
- */
- public boolean removeAttrezzo(Attrezzo attrezzo) {
- Attrezzo a = null;
- Iterator<Attrezzo> iteratore = this.attrezzi.iterator();
- while (iteratore.hasNext()) {
- a = iteratore.next();
- if (a.getNome().equals(attrezzo.getNome())) {
- iteratore.remove();
- return true;
- }
- }
- return false;
- }
- /**
- * Crea una stringa con tutte le direzioni eseguibili dalla stanza
- *
- * @return la stringa delle direzioni selezionabili dalla stanza
- */
- public Set<String> getDirezioni() {
- return this.direzioni;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement