1. Germano Gabbianelli
  2. DiaDia

Commits

Germano Gabbianelli  committed ffd538d

Svolgimento esercizio 2: ogni stanza può avere più attrezzi.

  • Participants
  • Parent commits d5768a6
  • Branches default

Comments (0)

Files changed (3)

File src/it/uniroma3/diadia/Attrezzo.java

View file
  • Ignore whitespace
         return this.getNome()+" ("+this.getPeso()+"kg)";
     }
 
+    public boolean is(String attrezzo) {
+        return attrezzo.equals(this.nome);
+    }
+
 }

File src/it/uniroma3/diadia/Partita.java

View file
  • Ignore whitespace
         /* crea gli attrezzi */
         Attrezzo lanterna = new Attrezzo("lanterna",3);
         Attrezzo osso = new Attrezzo("osso",1);
+        Attrezzo scudo = new Attrezzo("scudo", 2);
 
         /* crea stanze del labirinto */
         Stanza atrio = new Stanza("Atrio");
 
         /* pone gli attrezzi nelle stanze */
         aulaN10.addAttrezzo(lanterna);
+        aulaN10.addAttrezzo(scudo);
         atrio.addAttrezzo(osso);
 
         // il gioco comincia nell'atrio

File src/it/uniroma3/diadia/Stanza.java

View file
  • Ignore whitespace
  */
 public class Stanza {
     private static final int NUMERO_MASSIMO_DIREZIONI = 4;
+    private static final int NUMERO_MASSIMO_ATTREZZI = 5;
     private String nome;
-    private Attrezzo attrezzo;
+    private Attrezzo[] attrezzi;
     private Stanza[] stanzeConfinanti;
     private int numeroDirezioni;
+    private int numeroAttrezzi;
     private String[] direzioni;
 
     /**
         this.numeroDirezioni = 0;
         this.direzioni = new String[NUMERO_MASSIMO_DIREZIONI];
         this.stanzeConfinanti = new Stanza[NUMERO_MASSIMO_DIREZIONI];
+        this.attrezzi = new Attrezzo[NUMERO_MASSIMO_ATTREZZI];
+        this.numeroAttrezzi = 0;
     }
 
     /**
      * @return la descrizione della stanza
      */
     public String getDescrizione() {
-        String s = String.format("%s\nUscite: ", this.nome);
+        String s = "";
         for (String direzione : this.direzioni)
             if (direzione!=null)
                 s += String.format(" %s", direzione);
-        if (this.attrezzo != null) {
-            s += String.format("\nAttrezzi nella stanza: %s", this.attrezzo);
-        }
+        s = String.format("%s\nUscite: %s", this.nome, s);
+        if (this.numeroAttrezzi > 0)
+            s += "\nAttrezzi nella stanza: ";
+        for (int i = 0; i < this.numeroAttrezzi; i++)
+            s += String.format(" %s", this.attrezzi[i]);
         return s;
     }
 
     /**
-     * Restituisce l'attrezzo presente nella stanza.
-     * @return l'attrezzo presente nella stanza.
-     * 		   null se non ci sono attrezzi.
-     */
-    public Attrezzo getAttrezzo() {
-        return this.attrezzo;
-    }
-
-    /**
      * Colloca un attrezzo nella stanza.
      * @param attrezzo l'attrezzo da collocare nella stanza.
      *        Impostare a null per rappresentare l'assenza
      *        di attrezzi nella stanza.
      */
-    public void addAttrezzo(Attrezzo attrezzo) {
-        this.attrezzo = attrezzo;
+    public boolean addAttrezzo(Attrezzo attrezzo) {
+        if (this.numeroAttrezzi >= NUMERO_MASSIMO_ATTREZZI) {
+            System.out.println("Stanza Piena! Non è possibile aggiungere altri attrezzi.");
+            return false;
+        } else {
+            this.attrezzi[this.numeroAttrezzi] = attrezzo;
+            this.numeroAttrezzi++;
+            return true;
+        }
     }
 
     /**
      * @return true se l'attrezzo esiste nella stanza, false altrimenti.
      */
     public boolean hasAttrezzo(String nomeAttrezzo) {
-        boolean attrezzoPresente;
-        if (this.attrezzo.getNome().equals(nomeAttrezzo))
-            attrezzoPresente = true;
-        else
-            attrezzoPresente = false;
-        return attrezzoPresente;
+        for (int i = 0; i < this.numeroAttrezzi; i++)
+            if (this.attrezzi[i].is(nomeAttrezzo))
+                return true;
+        return false;
     }
 
     /**
      * 		   null se l'attrezzo non e' presente.
      */
     public Attrezzo getAttrezzo(String nomeAttrezzo) {
-        if (attrezzo.getNome().equals(nomeAttrezzo))
-            return attrezzo;
-        else
-            return null;
+        for (int i = 0; i < this.numeroAttrezzi; i++)
+            if (this.attrezzi[i].is(nomeAttrezzo))
+                return this.attrezzi[i];
+        return null;
     }
 
     /**
      * @param nomeAttrezzo
      */
     public boolean removeAttrezzo(Attrezzo attrezzo) {
-        if (attrezzo!=null){
-            this.attrezzo = null;
-            return true;
-        }
-        else
-            return false;
+        for (int i = 0; i < this.numeroAttrezzi; i++)
+            if (attrezzo.equals(this.attrezzi[i])) {
+                for (i++; i < this.numeroAttrezzi; i++)
+                    this.attrezzi[i-1] = this.attrezzi[i];
+                this.numeroAttrezzi--;
+                this.attrezzi[this.numeroAttrezzi] = null;
+                return true;
+            }
+        return false;
     }
 
 
         return direzioni;
     }
 
-}
+}