CAAD
http://foro.caad.es/

Iguales acciones distintos verbos
http://foro.caad.es/viewtopic.php?f=6&t=6021
Página 1 de 1

Autor:  edlobez [ 20 May 2016 16:42 ]
Asunto:  Iguales acciones distintos verbos

Hola!

Quiero que ante distintos verbos, que no debería poner como sinónimos en la tabla de vocabulario, responda igual.
Por ejemplo, para los verbos "coger" - "cazar" - "pescar" - "capturar". No tiene mucho sentido ponerlos sinónimos en el vocabulario, ya que sólo quiero que sean sinónimos para unos pecesitos que andan nadando por el río.
No quedaría bien si luego el juego ante la frase "pescar llave", te "coga la llave". Ni tampoco que "pescar oso" sea igual que "coger oso" o "cazar oso"

Puedo crear el código;

Código:
;Proceso que sólo llega si mencionamos los peces

coger _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done 

cazar _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done

pescar _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done


Si fueran pocas respuestas para esa acción, podría repetir para los diferentes verbos las repuestas. Pero no es el caso, son bastantes acciones (que no pego para no hacer spoiler), con diferentes condiciones ( estado de flag ) etc... que tendría que repetir el mismo código para los distintos verbos.

Entonces como soy un poco el tonto de los condatos, me he creado uno de tal forma que :

Código:
; ** PROCESO PARA LOS PECES

_ _
sinonimo @33 "caza cazar captura capturar pescar pesca"
 let 33 20 ;Forzamos el verbo actual "coger"

coger _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done               


Siendo el condato sinonimo:

Código:
//CND SINONIMO C 1 14 0

function CNDsinonimo (flag_verbo, sinonimos)
{
   var verbo = findWordVocabulary ( flag_verbo ).toLowerCase();
   var words = writemessages[sinonimos].split(' ');
   for ( var i = 0; i<words.length; i++ ) {
       if ( words[i].trim() == verbo )
           return true;
   }
   return false;
   
}

// Encontar un verbo en el vocabulario a partir de su ID y tipo
function findWordVocabulary ( verbo )
{
   for ( var j=0; j<vocabulary.length; j++ ) {
        if ( vocabulary [j][VOCABULARY_ID] == verbo &&
             vocabulary [j][VOCABULARY_TYPE] == WORDTYPE_VERB )
                 return vocabulary[j][VOCABULARY_WORD];
    }
}


Obtengo el resultado que quiero:

Citar:
> coger el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> cazar el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> caza el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> pescar el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> pesca el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> captura un pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.


La pregunta es, ¿hay otra forma de hacer esto?, es decir que algunos verbos sólo sean sinónimos ante determinados objetos.

Autor:  edlobez [ 20 May 2016 18:45 ]
Asunto:  Re: Iguales acciones distintos verbos

Edito que había un error en el condato.

edlobez escribió:
Hola!

Quiero que ante distintos verbos, que no debería poner como sinónimos en la tabla de vocabulario, responda igual.
Por ejemplo, para los verbos "coger" - "cazar" - "pescar" - "capturar". No tiene mucho sentido ponerlos sinónimos en el vocabulario, ya que sólo quiero que sean sinónimos para unos pecesitos que andan nadando por el río.
No quedaría bien si luego el juego ante la frase "pescar llave", te "coga la llave". Ni tampoco que "pescar oso" sea igual que "coger oso" o "cazar oso"

Puedo crear el código;

Código:
;Proceso que sólo llega si mencionamos los peces

coger _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done 

cazar _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done

pescar _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done


Si fueran pocas respuestas para esa acción, podría repetir para los diferentes verbos las repuestas. Pero no es el caso, son bastantes acciones (que no pego para no hacer spoiler), con diferentes condiciones ( estado de flag ) etc... que tendría que repetir el mismo código para los distintos verbos.

Entonces como soy un poco el tonto de los condatos, me he creado uno de tal forma que :

Código:
; ** PROCESO PARA LOS PECES

_ _
sinonimo @33 "caza cazar captura capturar pescar pesca"
 let 33 20 ;Forzamos el verbo actual "coger"

coger _
 at 1
 writeln "Con las manos no puedes, te haría falta algo donde meter uno de ellos."
 done               


Siendo el condato sinonimo:

Código:
//CND SINONIMO C 1 14 0

function CNDsinonimo (flag_verbo, sinonimos)
{
        if ( flag_verbo < 0 || flag_verbo >= 255 ) return false;   //<<<< edito que había error
   var verbo = findWordVocabulary ( flag_verbo ).toLowerCase();
   var words = writemessages[sinonimos].split(' ');
   for ( var i = 0; i<words.length; i++ ) {
       if ( words[i].trim() == verbo )
           return true;
   }
   return false;
   
}

// Encontar un verbo en el vocabulario a partir de su ID y tipo
function findWordVocabulary ( verbo )
{
   for ( var j=0; j<vocabulary.length; j++ ) {
        if ( vocabulary [j][VOCABULARY_ID] == verbo &&
             vocabulary [j][VOCABULARY_TYPE] == WORDTYPE_VERB )
                 return vocabulary[j][VOCABULARY_WORD];
    }
}


Obtengo el resultado que quiero:

Citar:
> coger el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> cazar el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> caza el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> pescar el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> pesca el pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.
> captura un pez
Con las manos no puedes, te haría falta algo donde meter uno de ellos.


La pregunta es, ¿hay otra forma de hacer esto?, es decir que algunos verbos sólo sean sinónimos ante determinados objetos.

Autor:  Uto [ 20 May 2016 19:20 ]
Asunto:  Re: Iguales acciones distintos verbos

Hmmm... bueno, lo primero es decirte que existe este condacto ya de serie: SYNONYM

A partir de ahí, si quieres que COGER, PESCAR y CAPTURAR solo sean sinónimos cuando estás en un lugar determinado haces esto:

Código:
PESCAR _
 AT lRio
 SYNONYM COGER _

CAPTURAR _
 AT lRio
 SYNONYM COGER _


Si además solo quieres que pase cuando es con los peces:

Código:
PESCAR PECES
 AT lRio
 SYNONYM COGER PECES

CAPTURAR PECES
 AT lRio
 SYNONYM COGER PECES


En el fondo SYNONYM lo que hace es cambiar la frase leida por el parser por la que tu quieras, y si quieres dependiendo de ciertas condiciones.

Por supuesto esas entradas deben ir por delante de la de "COGER PECES"

Autor:  edlobez [ 20 May 2016 19:26 ]
Asunto:  Re: Iguales acciones distintos verbos

Uto escribió:
Hmmm... bueno, lo primero es decirte que existe este condacto ya de serie: SYNONYM

A partir de ahí, si quieres que COGER, PESCAR y CAPTURAR solo sean sinónimos cuando estás en un lugar determinado haces esto:

Código:
PESCAR _
 AT lRio
 SYNONYM COGER _

CAPTURAR _
 AT lRio
 SYNONYM COGER _


Si además solo quieres que pase cuando es con los peces:

Código:
PESCAR PECES
 AT lRio
 SYNONYM COGER PECES

CAPTURAR PECES
 AT lRio
 SYNONYM COGER PECES


En el fondo SYNONYM lo que hace es cambiar la frase leida por el parser por la que tu quieras, y si quieres dependiendo de ciertas condiciones.

Por supuesto esas entradas deben ir por delante de la de "COGER PECES"


Ohhh! me quedan muchos condactos por descubrir. Me quedo con este "SYNONYM"

Gracias!

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