Quote Originariamente inviata da schumy2000 Visualizza il messaggio
Ciao,
Si infatti essendoci quello di default l'oggetto viene istanziato ma tutti gli oggetti che hai dichiarato sono nulli. private String dir;
private Scanner s;
private Stanza[] usciteStanza;
private String Descrizione;
private Boolean[] usciteChiuse;
private Porta porta;
private String[] porteChiuse;
private Boolean statoPorta;

Inoltre perché dichiari Scanner s, se poi lo dichiari nuovamente all'interno del metodo?
codice:
  public Scanner getDirezione(){
        System.out.println("Dove vorresti muoverti?");
        Scanner s = new Scanner(System.in);
        return s;
    }
Sai che sono due oggetti diversi e con due diversi scope?

Non voglio essere critico, ma forse e' meglio che studi ancora un po prima di buttarsi in questi programmi un po' complicati, perche' bisogna avere un background abbastanza completo per affrontare problemi un po' più seri.
Ciao,
non mi ero accorto dell'errore sullo scanner. Ho corretto.
Detto questo, gli oggetti sono vuoti, ma vengono riempiti successivamente attraverso i setter. Dalla teoria e daglia esercizi sul libro ho riscontrato esattamente lo stesso modo di agire.
Non è sbagliato dichiarare oggetti vuoti e riempirli successivamente, siamo solo d'accordo sul fatto che potrebbe non essere professionale o efficente, ma si allonta molto dal mio scopo princiapale.

L'errore del post iniziale consisteva nel non riempire mai l'oggetto porta, quindi quando richiamavo il metodo
codice:
statoPorta = porta.Aprimi(comeSiApre[0]);
all'interno del metodo miMuovo() della classe stanza avevo ovviamente un errore.
Corregendo questa cosa ho risolto, e ora il mio programma permette di muoversi liberamente e di aprire porte senza nessun errore.