Benvenuto Visitatore(Log In|Registrati)

 
Reply to this topicStart new topic
> Verbi senza soggetto
horses60
messaggio20 Mar 2016, 14:00
Messaggio #1





Gruppo: Gamer
Messaggi: 9
Iscritto il: 13 March 16
Da: Quebec City
Utente Nr.: 21.122
SO Windows7




Salve,
Sto cominciando a programmare la mia storia e non riesco a capire il mio errore per delle azioni (verbi) di un personaggio.
Copio il codice relativo ad Helga (il personaggio in Guglielmo Tell della guida Inform per i principianti) per il mio personaggio X. Lo metto in un luogo (L).
Arrivo in L e X mi da la cosa che deve darmi.
Vorrei ringraziarlo, cosa che succede con "Parla", ma non ho la risposta esatta:
Se dico Parla X - La risposta è Cosa vuoi dire? non riesco a capire.
Se dico Parla - Ho la risposta del mio codice.

Grazie per l'aiuto.
 
marfal
messaggio20 Mar 2016, 19:40
Messaggio #2





Gruppo: Gamer
Messaggi: 75
Iscritto il: 21 November 15
Da: roma
Utente Nr.: 20.971
SO Mac OS




Ciao,

Da come scrivi credo tu ti riferisca a come è definita la grammatica del verbo "parla":

Se scrivi PARLA funziona
Se scrivi PARLA A X funziona
Se scrivi PARLA DI X funziona
Se scrivi PARLA CON X funziona
Se scrivi PARLA X non funziona

Questo perché non comprende X come interlocutore o come argomento di conversazione.

Il codice responsabile di questo tipo di comportamento lo trovi sulla GIP a pagina 128.
Se nul codice extend inserissi anche
Extend 'parla' * creature -> talk;
Ovverosia senza indicare articoli ti funzionerebbe, anche se perderesti la possibilità di distinguere X come argomento o interlocutore


--------------------
 
horses60
messaggio20 Mar 2016, 19:47
Messaggio #3





Gruppo: Gamer
Messaggi: 9
Iscritto il: 13 March 16
Da: Quebec City
Utente Nr.: 21.122
SO Windows7




CITAZIONE (marfal @ 20 Mar 2016, 14:40) *
Se scrivi PARLA funziona
Se scrivi PARLA A X funziona
Se scrivi PARLA DI X funziona
Se scrivi PARLA CON X funziona
Se scrivi PARLA X non funziona


Ciao marfal,
ho provato a fare come dici tu, ma funziona solo PARLA.
gli altri non funzionano
 
marfal
messaggio20 Mar 2016, 23:03
Messaggio #4





Gruppo: Gamer
Messaggi: 75
Iscritto il: 21 November 15
Da: roma
Utente Nr.: 20.971
SO Mac OS




X ha l'attributo animate?
Senza vedere il codice è complicato capire


--------------------
 
horses60
messaggio20 Mar 2016, 23:06
Messaggio #5





Gruppo: Gamer
Messaggi: 9
Iscritto il: 13 March 16
Da: Quebec City
Utente Nr.: 21.122
SO Windows7




CITAZIONE (marfal @ 20 Mar 2016, 18:03) *
X ha l'attributo animate?
Senza vedere il codice è complicato capire

NPC "Luigi" piazzola_sosta
with name 'vicino' 'amico',
description "Luigi @`e un tuo caro amico.",
initial [;
print "Luigi smette di osservare la valle e ti saluta.";
if (location hasnt visited) {
move torcia to player;
print "^Ciao Mario, come stai?^A proposito, avevo dimentica di restituirti la torcia elettrica che mi avevi prestato.^Tieni!^";
}
],
frasi_dette 0, ! per contare gli argomenti di conversazione
life [;
Kiss: print_ret "~Ooh";
Talk: self.frasi_dette = self.frasi_dette + 1;
switch (self.frasi_dette) {
1: score = score + 1;
print_ret "Ringrazi Luigi per la torcia.";
2: print_ret "~Grazie, ci vediamo presto.~";
default: return false;
}
],
has proper;

Class NPC
with life [;
Answer,Ask,Order,Tell:
print_ret "Usa soltanto PARLA [", (arta) self, "].";
],
has animate;

Messaggio modificato da horses60 il 20 Mar 2016, 23:07
 
marfal
messaggio21 Mar 2016, 10:17
Messaggio #6





Gruppo: Gamer
Messaggi: 75
Iscritto il: 21 November 15
Da: roma
Utente Nr.: 20.971
SO Mac OS




nel codice del personaggio non ci vedo niente che non va.

hai aggiunto il seguente codice alla fine del tuo listato, ovvero DOPO l'inclusione di ItalianG?

CITAZIONE
[ TalkSub;
if (noun == player)
print_ret "Niente di quello che dici può sorprenderti.";
if (RunLife(noun,##Talk) ~= false) return;
print_ret "Al momento, non ti viene niente da dire.";
];

Extend 'parla' first
* 'a'/'ad'/'all^'/'allo'/'alla'/'al'/
'agli'/'ai'/'alle'/'con' creature -> Talk;


Messaggio modificato da marfal il 21 Mar 2016, 10:21


--------------------
 
PaoloL
messaggio21 Mar 2016, 10:36
Messaggio #7





Gruppo: Gamer
Messaggi: 130
Iscritto il: 12 January 16
Utente Nr.: 21.046
BGE Indiana Jones and the Fate of Atlantis
Playing Sulle Orme del Chisciano
SO Linux




CITAZIONE (horses60 @ 20 Mar 2016, 23:06) *
CODICE
NPC "Luigi" piazzola_sosta
        with name 'vicino' 'amico',
        description "Luigi @`e un tuo caro amico.",
        initial [;
            print "Luigi smette di osservare la valle e ti saluta.";
            if (location hasnt visited) {
                move torcia to player;
                print "^Ciao Mario, come stai?^A proposito, avevo dimentica di restituirti la torcia elettrica che mi avevi prestato.^Tieni!^";
                }
                ],
        frasi_dette 0,                                              ! per contare gli argomenti di conversazione
        life [;
            Kiss: print_ret "~Ooh";
            Talk: self.frasi_dette = self.frasi_dette + 1;
            switch (self.frasi_dette) {
                1: score = score + 1;
                print_ret "Ringrazi Luigi per la torcia.";
                2: print_ret "~Grazie, ci vediamo presto.~";
                default: return false;
                }
            ],
        has proper;

Class NPC
        with life [;
        Answer,Ask,Order,Tell:
        print_ret "Usa soltanto PARLA [", (arta) self, "].";
        ],
        has animate;


Secondo me il problema è nell'estensione della grammatica di 'parla' o - più probabilmente - nella TalkSub che non passa l'incarico alla proprietà life. Potresti mettere Talk nella before invece che nella life, oppure usare questo:

CODICE
[TalkSub;
  if (noun == player) "Ti fai una domanda e ti dai una risposta...";
  if (RunLife(noun,##Talk) ~= false) return;
  "Non hai niente da dire.";
];


Mentre la grammatica che userei io è:
CODICE
Extend 'parla' first             * 'a'/'ad'/'all^'/'allo'/'alla'/'al'/
                                    'agli'/'ai'/'alle'/'con' creature
                                        -> Talk;


Ah, a Luigi manca il name 'luigi' (ma non è questo il problema).

Facci sapere se così funziona...

bye


--------------------
Paolo Lucchesi
[email protected]
http://www.paololucchesi.it
plucchesi5 su gmail, g+, hangouts
paolol#7497 su discord
 
horses60
messaggio21 Mar 2016, 12:26
Messaggio #8





Gruppo: Gamer
Messaggi: 9
Iscritto il: 13 March 16
Da: Quebec City
Utente Nr.: 21.122
SO Windows7




CITAZIONE (marfal @ 21 Mar 2016, 05:17) *
ovvero DOPO l'inclusione di ItalianG?

si, perché altrimenti da errore in compilazione
 
marfal
messaggio21 Mar 2016, 14:36
Messaggio #9





Gruppo: Gamer
Messaggi: 75
Iscritto il: 21 November 15
Da: roma
Utente Nr.: 20.971
SO Mac OS




CITAZIONE (horses60 @ 21 Mar 2016, 12:26) *
CITAZIONE (marfal @ 21 Mar 2016, 05:17) *
ovvero DOPO l'inclusione di ItalianG?

si, perché altrimenti da errore in compilazione


Qui di seguito posto il tuo codice testato e funzionante

CODICE
!% +language_name=Italian

! ------------------------------------------
! Esempio di listato per oldgamesitalia
! Quest'avventura @`e software libero, pu@`o essere liberamente usata,
! copiata, distribuita e modificata senza alcun vincolo.
! Questo prodotto e' distribuito senza alcuna garanzia. L'autore non puo' essere
! ritenuto responsabile per qualsiasi danno dovuto direttamente o indirettamente
! all'uso del prodotto.
! ------------------------------------------
!           File principale
! ------------------------------------------

Constant Story "Esempio di dialogo";
Constant Headline "^Una dimostrazione per oldgamesitalia di Marco Falcinelli^";
Release 1;

! ------------------------------------------
!            Costanti
! ------------------------------------------

! ------------------------------------------
!            Messaggi di libreria
! ------------------------------------------

Include "parser";

Object LibraryMessages
  with before [;
];

Include "verblib";
Include "replace";

! ------------------------------------------
!            Classi e Attributi
! ------------------------------------------

Class Room
  has light;

Class NPC
    with life [;
            Answer,Ask,Order,Tell:
                    print_ret "Usa soltanto PARLA [", (arta) self, "].";
        ],
    has animate;
  
! ------------------------------------------
!            Variabili e Oggetti particolari
! ------------------------------------------

! ------------------------------------------
!            Locazioni
! ------------------------------------------

Room camera "camera"
        with     description "La descrizione di una camera.";

! ------------------------------------------
!            Personaggi
! ------------------------------------------

NPC luigi "Luigi" camera
        with     name 'vicino' 'amico' 'luigi',
                description "Luigi @`e un tuo caro amico.",
                initial [;
                    print "Luigi smette di osservare la valle e ti saluta.";
                    if (location hasnt visited) {
                            move torcia to player;
                            print "^Ciao Mario, come stai?^A proposito, avevo dimentica di restituirti la torcia elettrica che mi avevi prestato.^Tieni!^";
                    }
                ],
                frasi_dette 0, ! per contare gli argomenti di conversazione
                life [;
                        Kiss: print_ret "~Ooh";
                        Talk: self.frasi_dette = self.frasi_dette + 1;
                        switch (self.frasi_dette) {
                            1:     score = score + 1;
                                print_ret "Ringrazi Luigi per la torcia.";
                            2:     print_ret "~Grazie, ci vediamo presto.~";
                            default: return false;
                        }
                ],
        has proper;

! ------------------------------------------
!            Oggetti
! ------------------------------------------

Object torcia "torcia"
        with    name 'torcia',
                description "una torcia",
        has light;

! ------------------------------------------
!            Include e Procedure
! ------------------------------------------

! Includes

! Entry point routines

[Initialise;
  lookmode=2;
  location = camera;
  move luigi to camera;
  banner();
];

Include "italiang";

[TalkSub;
    if (noun == player) print_ret "Niente di quello che dici pu@`o sorprenderti.";
    if (RunLife(noun,##Talk) ~= false) return;
    print_ret "Al momento, non ti viene niente da dire.";
];

! ------------------------------------------
!            Estensioni
! ------------------------------------------


Extend 'parla' first
        * 'a'/'ad'/'all^'/'allo'/'alla'/'al'/
        'agli'/'ai'/'alle'/'con' creature -> Talk;


una volta compilato il comportamento del parser è:

CITAZIONE
Esempio di dialogo
Una dimostrazione per oldgamesitalia di Marco Falcinelli
Versione 1 -- Numero di serie 160321
Inform v6.31 -- Libreria 6/11 -- Infit v2.5 S

camera
La descrizione di una camera.

Luigi smette di osservare la valle e ti saluta.
Ciao Mario, come stai?
A proposito, avevo dimentica di restituirti la torcia elettrica che mi avevi prestato.
Tieni!

>parla luigi
Cosa vuoi dire? Non riesco a capire.

>parla a luigi
Ringrazi Luigi per la torcia.

[Il tuo punteggio è appena aumentato di un punto.]

>parla con luigi
"Grazie, ci vediamo presto."

>parla
( a Luigi)
Al momento, non ti viene niente da dire.

>


il comportamento è quello che ci si aspetta. Ovvero solo "parla luigi" non viene accettato perché grammaticamente non previsto.

prova questo esempio, e quindi confrontalo con il tuo listato per vedere quali sono le differenze.


--------------------
 
horses60
messaggio22 Mar 2016, 12:50
Messaggio #10





Gruppo: Gamer
Messaggi: 9
Iscritto il: 13 March 16
Da: Quebec City
Utente Nr.: 21.122
SO Windows7




CITAZIONE (PaoloL @ 21 Mar 2016, 05:36) *
Ah, a Luigi manca il name 'luigi' (ma non è questo il problema).


Grazie per l'aiuto PaoloL ho trovato l'inghippo. Il problema era proprio il "name" luigi!!!
Ho dedotto che anche se si usa un verbo con un oggetto, bisogna sempre dichiararlo nei "name".
Giusta deduzione?
Grazie, ora posso continuare...
 

Fast ReplyReply to this topicStart new topic
1 utenti stanno leggendo questa discussione (1 visitatori e 0 utenti anonimi)
0 utenti:

 

Modalità di visualizzazione: Normale · Passa a: Lineare · Passa a: Outline


Versione Lo-Fi Oggi è il: 12th November 2026 - 18:27