CAAD
http://foro.caad.es/

[InformATE] Acción con múltiples objetos
http://foro.caad.es/viewtopic.php?f=12&t=3081
Página 1 de 1

Autor:  Incanus [ 05 May 2009 16:02 ]
Asunto:  [InformATE] Acción con múltiples objetos

Saludos:

¿cómo extender una gramática para que reconozca múltiples objetos en su uso?

Ej: Atacar <PSI> con <objeto inventario 1> y <objeto inventario 1>

y más importante ¿cómo se maneja el Antes o el Vida para que reconozca qué objetos tengo o no en uso para la acción que usa <objeto inventario 1> y <objeto inventario 1>?

Se despide, de antemano agradecido,

Autor:  jarel [ 05 May 2009 21:10 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

Incanus escribió:
Saludos:

¿cómo extender una gramática para que reconozca múltiples objetos en su uso?

Ej: Atacar <PSI> con <objeto inventario 1> y <objeto inventario 1>

y más importante ¿cómo se maneja el Antes o el Vida para que reconozca qué objetos tengo o no en uso para la acción que usa <objeto inventario 1> y <objeto inventario 1>?

Se despide, de antemano agradecido,


Si he entendido bien, quieres articular una gramática que detecte hasta tres objetos.
La solución que se me ocurre es extender a * topic ->atacarinconcreto para que trague con todo, y luego hacer un rastreado por cadenas, pasando del parseado por defecto.

Si es así, te puede interesar el código de Ad Verbum (si vas a compilar para máquina Z) o el de Venenarius Verborum, si lo vas a hacer para Glulx.
Si van por ahí los tiros te los paso.

Saludos.

Autor:  Incanus [ 05 May 2009 21:33 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

jarel escribió:
Si he entendido bien, quieres articular una gramática que detecte hasta tres objetos.


Exacto.


jarel escribió:
La solución que se me ocurre es extender a * topic ->atacarinconcreto para que trague con todo, y luego hacer un rastreado por cadenas, pasando del parseado por defecto.

Si es así, te puede interesar el código de Ad Verbum (si vas a compilar para máquina Z) o el de Venenarius Verborum, si lo vas a hacer para Glulx.
Si van por ahí los tiros te los paso.


Hmm... No he entendido mucho (yo entiendo con código en mano :-P). Envíame pues lo de Ad Verbum y lo reviso encantado.

¿Alguien más ha hecho algo parecido, para una librería de combates o así? (¿Baltasar?)

Se despide, de antemano agradecido,

Se despide,

Autor:  baltasarq [ 06 May 2009 10:53 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

Hola !

Incanus escribió:
¿Alguien más ha hecho algo parecido, para una librería de combates o así? (¿Baltasar?)


No, lo cierto es que nunca he tenido la necesidad de especificar hasta tres objetos. ¿Estás seguro de que quieres llegar a ese nivel de detalle?. Quizás deberías replanteártelo de cara a la sensación de jugabilidad para el jugador.

En cualquier caso, en mi famoso artículo (bueno, es una forma de hablar):

http://spac.caad.es/1/spac42.htm

Puedes ver, al final, como se hace una rutina de parsing. Lo que necesitarías es susituir el verbo "atacar":

Código:
Extend 'ataca' replace
 * topic -> atacaNuevo
;


Entonces, definir la rutina atacaNuevoSub:

Código:
[ atacaNuevoSub;
    ! parsing
];


Y ahí meter la rutina de parsing. También será útil crear una nueva variable global, llamada por ejemplo, third, de manera que puedas lanzar las acciones "normales", asignando noun al primer objeto, second al segundo objeto, y third al tercer objeto.

Código:
Global third;


Así:

Código:
[ atacaNuevoSub x y z;
    ! parsing
    ! ...
    third = z;
    <<attack x y>>;
];


Y en el objeto:

Código:
object Malo "el malo"
with
     before [;
               attack:
                         if ( second == objEspada
                          && third == AtaqueEnCabeza )
                         {
                         }
     ]
;


Tendrías que definir alguna constante más para las partes del cuerpo:

Código:
Constant AtaqueEnCabeza 0;
Constant AtaqueEnTorso 1;
Constant AtaqueEnMiembros 2;


Espero que te sirva de ayuda.

Salud !

Baltasar

Autor:  Incanus [ 06 May 2009 14:20 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

baltasarq escribió:
No, lo cierto es que nunca he tenido la necesidad de especificar hasta tres objetos. ¿Estás seguro de que quieres llegar a ese nivel de detalle?. Quizás deberías replanteártelo de cara a la sensación de jugabilidad para el jugador.


De hecho, estoy aceptando el
Código:
<acción> <sujeto> con <objeto en inventario 1>

en vez de
Código:
<acción> <sujeto> con <objeto en inventario 1> y <objeto en inventario 2>

y luego veo si el jugador tiene o no en inventario el <objeto en inventario 1>; y si lo tiene, qué pasa si tiene o no el <objeto en inventario 2> ... y funciona.

En efecto, puede que complique más la jugabilidad si extiendo la gramática para que acepte ambos objetos de inventario en una acción. De hecho...[spoiler="...no lo hice en Ofrenda a la Pincoya"] y para hacer fuego bastaba usar el pedernal sin explicitamente decir que se usaba el anzuelo; bastaba con tener ambos[/spoiler]y nadie nunca se quejó ;-)

baltasarq escribió:
En cualquier caso, en mi famoso artículo (bueno, es una forma de hablar):

http://spac.caad.es/1/spac42.htm

Puedes ver, al final, como se hace una rutina de parsing. Lo que necesitarías es susituir el verbo "atacar":[...]


Hmm... Sí tendría que ser así. Voy a ver qué tan difícil resulta; son varias acciones, no solo "Atacar" las que tendría que modificar... pero ya veo que es algo que voy a dejar para el final del desarrollo ;-) porque, como dije más arriba, la solución "alternativa" ya está implementada (y funciona, por cierto).

Se despide, muy agradecido,

Autor:  jarel [ 06 May 2009 16:19 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

Te he mandado el código por email. Aunque la solución de Balta es más limpia y consecuente con el estilo de Inform, la de Ad verbum, cuando la desembrollas, es muy funcional.

Saludos

Autor:  Incanus [ 06 May 2009 18:54 ]
Asunto:  Re: [InformATE] Acción con múltiples objetos

jarel escribió:
Te he mandado el código por email. Aunque la solución de Balta es más limpia y consecuente con el estilo de Inform, la de Ad verbum, cuando la desembrollas, es muy funcional.

¡Gracias! Veré qué puedo hacer con ambas propuestas...

Página 1 de 1 Todos los horarios son UTC + 1 hora
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/