CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 20 Ago 2017 18:13

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
NotaPublicado: 20 May 2016 16:42 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
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.

_________________
Te quiero... lo siento Yoda sólo tenemos café.


Arriba
 Perfil  
 
NotaPublicado: 20 May 2016 18:45 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
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.

_________________
Te quiero... lo siento Yoda sólo tenemos café.


Arriba
 Perfil  
 
NotaPublicado: 20 May 2016 19:20 
Desconectado
Momio
Momio
Avatar de Usuario

Registrado: 09 Mar 2004 16:14
Mensajes: 4609
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"

_________________
Sígueme en twitter: @uto_dev
http://www.ngpaws.com


Arriba
 Perfil  
 
NotaPublicado: 20 May 2016 19:26 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
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!

_________________
Te quiero... lo siento Yoda sólo tenemos café.


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 4 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
cron
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM