Newsgroup: it.comp.giochi.avventure.testuali
Titolo: Problema con Inform

Ho un altro ennesimo problema con Inform. Ho costruito un oggetto (un
montacarichi) su cui far salire il giocatore. Una volta acceso, però,
non  riesco a spostarlo nella stanza adiacente con ovviamente il
giocatore sopra. Come posso fare secondo voi?
Grazie e ciao da
Vincenzo


come stai cercando di farlo? posta il codice...


Così, _senza_riflettere_, mi sa che hai gli stessi problemi che incontri 
cercandi di fare "move player"; per questo esiste creata PlayerTo()...
Mi vengono in mente due soluzioni:
1) imbroglia, crea due oggetti (magari creando una classe) identici e 
sposta il giocatore dall'uno all'altro (con PlayerTo).
2) non so se funziona, ma se dopo aver spostato il montacarichi fai 
anche un PlayerTo verso il medesimo?
bye
-- 
Paolo Lucchesi
email: 
pluc...@tin.it
homepage: 
http://www.paololucchesi.it
ICQ# 731067
"Non viviamo in un mondo perfetto (per fortuna)"
 

come stai cercando di farlo? posta il codice...
Ho risolto il problema. Ecco comunque quello che ho fatto:
*********************************************************************
Object forklift "montacarichi" Aerobsm
  with name 'montacarichi',
       before [;
          Examine: print_ret "E' tutto arruginito.";
          Go: if (self has on) {
                if ((noun == w_obj) && (location == Aerobsm)) {
                  print "Hai mai visto un montacarichi salire su una
scala?^"; 
                  return 2; ! Non si muove
                } else return 1;
                if (noun == e_obj) return 1; !Vai pure
              }
              else { 
                 print "Non puoi andare da nessuna parte se il
montacarichi è spento.^";
                 return 2;
              }
       ],
       after [;
          Enter: print_ret "Sei salito sul montacarichi.";
          Exit: print_ret "Sei sceso dal montacarichi.";
          SwitchOn: if (player in self) { 
                        give self on; 
                        print "Dopo un frastuono assordante, il
montacarichi si mette in moto.^"; 
                    } 
                    else print "Senza salirci sopra? Forse sei un
telepate...^"; 
                    rtrue;
          SwitchOff: if (player in self) { 
                     give self ~on; 
                     print "Il montacarichi si è spento. Non sei
sicuro che riesca a mettersi di nuovo in moto.^"; } 
                    else print "Prima devi salirci sopra.^";    
                    rtrue;
       ],
       react_before [;
          Exit:  if ((~~noun) && player in self) <<Exit self>>;
       ],
  has supporter enterable switchable ~on;
**************************************************************************
Il problema era che non riuscivo a spostarmi con il personaggio sopra.
Per chi non lo sapesse,  alla voce GO: Inform si regola in questo
modo: a seconda del valore ritornato ti sposta insieme all'oggetto (1)
oppure non lo permette (2) dandoti però in questo caso la possibilità
di stampare un tuo messaggio al posto di quello di sistema (a
differenza di quello che accade se invece si ritorna 0).
Se poi qualcuno non capisce come funziona ma è ugualmente interessato
all'argomento gli posso mandare l'esempio completo che ho fatto per
me. Per ulteriori dettagli disogna andare a vedere l'esercizio n. 23
alla pagina 129 del DM4.
Ciao da
Vincenzo

cercandi di fare "move player"; per questo esiste creata PlayerTo()...
No, come forse avrai letto nel mio messaggio di risposta a Stefano.
Ogni volta che si definisce un oggetto SUPPORTER ENTERABLE credo che
Inform di default ritorni il valore 0. Se infatti crei per esempio una
sedia, se ti ci sei seduto sopra e cerchi di andare in qualche
direzione il computer risponde che prima devi alzarti dalla sedia.
Cambiando invece il valore di ritorno puoi andare in qualsiasi
direzione voglia (chiaramente insieme all'oggetto) senza usare MOVE o
PlayerTO.
Ecco il vantaggio di usare un ambiente integrato come Inform. Non oso
immaginare cosa si debba scrivere per gestire una cosa del genere
partendo completamente da zero (poi tutto è possibile, per carità,
però...). 
La cosa che per ora mi ha più divertito di Inform è il dare la
possibilità di spostare un personaggio in una serie di stanze (fargli
fare cioè un vero e proprio percorso) in maniera totalmente
indipendente dal giocatore. In poche parole, è possibile ad esempio
fare in modo che il signor X vada in una certa stanza, prenda un
oggetto e lo metta in un altra stanza senza che il giocatore se ne
accorga. E poi mi vengano a dire che un'AT è solo una sequenza
di verbi del tipo APRI PORTA, PRENDI SCATOLA, CHIUDI PORTA. :-)))
 
Ciao da
Vincenzo