CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 25 Jun 2017 15:10

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 7 mensajes ] 
Autor Mensaje
 Asunto: Sinónimos
NotaPublicado: 05 Feb 2014 13:48 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Buenas, tengo un medio problema, bueno más que nada es la curiosidad de el porqué no me reconoce el sinónimo de un objeto. Digo medio curiosidad porque no es algo "crítico" para la aventura.

Tengo un objeto con un listado de sinónimos, que presentan una serie de manchas que hay en la pared de la cocina:
salpicadura, mancha, manchas, tomate, tomates, ... etc.
Todas me las reconoce y da la respuesta deseada, todas excepto "tomate", sin embargo "tomates" sí...??? y no tengo ni idea de el porqué. Puede ser porque el parser lo interprete como toma-te, de "tomar algo"???

Y otro objeto es una mesa de ordenador, un objeto que tengo con un listado de sinónimos:
mesa, mesita, ordenador, pc, computadora... etc
Todas las reconoce todas menos PC, en mayúsculas. Sin embargo meSita Mesita mESIta, compuTAdora.. etc sí, cualquier combinación de mayúsculas minúsculas, todas menos PC. He tenido que meter expresamente PC, en mayúsculas en el listado de sinónimos para que lo reconozca.

Lo he probado con la última versión de AGE, pensado que era de eso, pero nop, sigue igual. Como comento es más curiosidad.

Saludos!

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


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 15:00 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5265
Ubicación: Coruña
Lo del "tomate" tiene toda la pinta de ser por lo que dices, que se confunde con el verbo "tomar" con pronombre "te" clítico (toma + te = tómate, o sin tildes, tomate). Es raro que pase porque me parece que, después de distintas mejoras que había hecho hace años, AGE sólo debería hacer ese tipo de sustituciones con la primera palabra de la orden (que se supone que, en español, es el verbo). Pero igual en alguna parte me estoy colando y se aplica la sustitución también a lo que no se debe. Le echaré un ojo al código.

Lo del "PC", la verdad es que no tengo ni idea a priori. Por la longitud de la palabra "PC" me da la intuición de que igual podría tener algo que ver con que el corrector tipográfico no corrija las palabras de longitud 3 o inferior, pero en principio no debería ser porque el matching de nombres de referencia se hace de forma insensible a mayúsculas/minúsculas. Para que "pc" se interprete como "PC", o viceversa, no debería hacer falta que entrara el corrector para nada (de hecho ya antes de que existiera el corrector se podía teclear todo en mayúsculas, minúsculas o lo que el jugador quisiera), pero de nuevo igual hay alguna metedura de pata en el código que haga que la cosa no funcione exactamente como debe.

Lo curioso es que no puedo reproducir ninguno de los dos problemas en el AGE 1.3.2 "oficial" (no tengo aquí acceso a la última versión del repositorio). Si cojo "insecto" y por ejemplo a la alfombra le llamo tomate y pc, la puedo mirar perfectamente, incluso escribiendo "mirar toMATE", "MIRAR PC", "mirar pC", etc. Igual estos glitches están, de nuevo, relacionados con los últimos cambios que hice internamente en el sistema de nombres de referencia...

Cuando esté en casa pruebo con la versión del repositorio y a ver si así aclaro un poco la cosa.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 15:29 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Luego cuando esté en casa te remito los objetos, eran del decorado no sé si llegué a enviarte alguna vez la forma en que estaba creando el decorado... pero lo que me mosquea es eso, que sólo son esas palabras (que han detectado los magnifícos betatesting que colaboran en la aventura).

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


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 16:11 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5265
Ubicación: Coruña
Ah, igual entonces influye alguna característica de la manera en que implementas el decorado (que no es usando los nombres de referencia por defecto). Pues en cuanto me lo mandes y tenga tiempo le echo un ojo al tema.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 18:28 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Bueno te comento, en el caso del tomate... me vas cortar el tomate... había un espacio, rellenaba los nombre de referencia pero le puse un espacio de más a esta palabra. En este objeto "decorado" que fue de los primeros que cree los rellené a "mano", es decir directamente desde el Puck, aún no tenía las funciones que luego has creado para rellenar los nombres de referencia por código. Claro, reconocía "tomate[espacio]", le quité el espacio y se solucionó.

Pero en el caso del PC, sigue igual, he sacado fuera el objeto y lo he puesto en un worl con una sola estancia. Te lo paso para que le eches una mirada. El tema es que sí reconoce el nombre de referencia y se dirige al objeto pero no muestra el mensaje que le he preparado... no sé como explicarte.


https://www.dropbox.com/s/fkbye1wb7tl2z5i/decorado1.xml

Tengo el array en la entidad abstracta "estringDecorado", al final de este array verá que he metido "pc"

Código:
//particular para cada estancia pueden ser genérico
String habitacionTriste="mesa mesas silla sillas lámpara lampara lamparas interruptor luz pc";



En el objeto decorado relleno los nombres de referencia con este array:

Código:
//para lo particular de la habitación
 StringTokenizer st = new StringTokenizer(e.getPropertyValueAsString("habitacionTriste"));
 while (st.hasMoreTokens()) { self.addSingularReferenceName(st.nextToken()); }


Y en el parsecommand del objeto decorado compruebe si la entrada de texto contiene algo de este string, lo hace la función world.mensajes.

Código:
//habitacion triste
    if (world.mensajes("habitacionTriste", args)) {
        switch (verb) {
            case "mirar": mobile("jugador").write("Todo muy triste como la habitación.\n"); end();
           
        }
    }


Si lo encuentra suelta: Todo muy triste como la habitación.

Es aquí donde falla, ya que el nombre en los nombres singulares de referencia si lo encuentra ya que suelta:

Código:
Tu orden:  ex pc
Todo muy triste como la habitación.

Tu orden:  ex Pc
No le ves nada en especial.

Tu orden:  ex PC
No le ves nada en especial.

Tu orden:  ex MEsa
Todo muy triste como la habitación.


La respuesta "No le ves nada en especial" es lo que tiene el objeto decorado en su descripción, así que encontrar el nombre en la lista de nombres de referencia lo encuentra, falla a la hora de buscarlo en mediante la función world.mensajes que me falla y no sé el porqué.

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


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 19:10 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5265
Ubicación: Coruña
Vale, ya he visto dónde está el problema.

Es que la función mensajes que compara las cadenas, por lo que veo, la has hecho sensible a mayúsculas y minúsculas...

Código:
if (text2.contains(st.nextToken()))


Eso es sensible a mayúsculas y minúsculas. Para evitarlo se podría hacer algo como:

Código:
if (text2.toLowerCase().contains(st.nextToken().toLowerCase()))


Entonces, lo que te preguntarás es: ¿y por qué sí que funciona con MEsa, etc.?

Porque en esos casos te salva el corrector ortográfico. El corrector por dentro es insensible a mayúsculas y minúsculas.

Pero las palabras de longitud menor que 3, como PC, no pasan por el corrector (sería inviable que pasaran: una palabra de esa longitud puede ser casi cualquier cosa... si tecleas por ejemplo "ee", es imposible saber si te equivocaste y querías poner "e", "ne", "se", "ve", etc.)... así que ahí no te salva.

En suma: cambia la función mensajes como te he dicho y funcionará todo sin problema. Aunque la verdad, probablemente deba plantearme hacer sensible a mayúsculas o todo o nada, no sé si tiene mucho sentido que el corrector no lo sea pero el resto sí.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
 Asunto: Re: Sinónimos
NotaPublicado: 05 Feb 2014 19:24 
Desconectado
Betatester
Betatester
Avatar de Usuario

Registrado: 09 Feb 2012 20:33
Mensajes: 855
Cambiado y solucionado :D

Y acabo de darme cuenta que para las conversas con los personajes, que uso una función muy parecida, sí lo pasaba a minúsculas todo. Esa por ser una de las primeras estancias que había creado no lo tuve en cuenta.

Gracias!

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


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 7 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 2 invitados


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:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM