Herramientas de usuario

Herramientas del sitio


manejo_de_eventos

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
manejo_de_eventos [2016/07/07 21:01]
al-khwarizmi
manejo_de_eventos [2016/07/08 13:49] (actual)
al-khwarizmi
Línea 215: Línea 215:
 En este documento no detallaremos toda la lista de posibles expresiones regulares que se pueden construir, ya que se pueden encontrar tanto en la documentación de Java (de la [[ En este documento no detallaremos toda la lista de posibles expresiones regulares que se pueden construir, ya que se pueden encontrar tanto en la documentación de Java (de la [[
 https://​docs.oracle.com/​javase/​6/​docs/​api/​java/​util/​regex/​Pattern.html|clase Pattern]] antes mencionada) como en numerosos libros y tutoriales online. https://​docs.oracle.com/​javase/​6/​docs/​api/​java/​util/​regex/​Pattern.html|clase Pattern]] antes mencionada) como en numerosos libros y tutoriales online.
 +
 +Con estos mimbres y lo visto en secciones anteriores de la documentación,​ se pueden construir personajes con conversaciones muy ricas y complejas. Por supuesto, lo que se puede hacer va mucho más allá de las secuencias de ''​if''​ como hemos visto en el caso de Manolo, ya que podemos aprovechar los estados y relaciones de AGE para hacer que la conversación de un personaje cambie según el contexto del diálogo. A modo de ejemplo, el siguiente código de conversación pertenece a una mujer que se encuentra el héroe de la aventura "​Fuego"​ (se ha editado un poco para modernizar el código, ya que esa aventura se hizo en una versión antigua de AGE y de Java menos potente que la actual, donde conseguir algunas cosas era más engorroso):
 +
 +<code java>
 +(...)
 +
 +else if ( lText.contains("​hola"​) || lText.contains("​buenas"​) ​
 + || lText.contains("​saludo"​) || lText.contains("​buenos d") )
 + {
 + //nos están saludando, saludamos de vuelta
 + self.say("​Hola..."​);​
 + //miramos si conocemos el nombre del interlocutor
 + String nombre = get ( self , "​nombre",​ m );
 + if ( nombre == null || nombre.equals("​unknown"​) )
 + {
 + //si no conocemos el nombre, se lo preguntamos. Esperamos que nos lo diga.
 + self.say("​¿Cómo te llamas?"​);​
 + set ( self , "​esperandonombre"​ , m , true );
 + }
 + }
 +
 +(...)
 +
 +else
 +{
 + //si estamos esperando nombre, asumiremos que lo que nos dice lo es.
 + if ( get ( self , "​esperandonombre"​ , m ) )
 + {
 + if ( !lText.matches("​(\\w*\\W*){1,​3}"​) )
 + {
 + //si nos dice algo con más de tres palabras, probablemente no nos esté diciendo su nombre de verdad. Se ha ido por las ramas.
 + self.say("​Uy,​ ese nombre es muy largo. Dudo que pueda recordarlo. ¿No te puedo llamar por algún nombre más corto?"​);​
 + }
 + else
 + {
 + //hacer que el nombre empiece por mayúscula
 + if ( !Character.isUpperCase(lText.charAt(0)) )
 + lText = Character.toUpperCase(lText.charAt(0)) + lText.substring(1);​
 + //​actualizar las relaciones, reflejando que conocemos el nombre del personaje (y cuál es)
 + set ( self , "​nombre"​ , m , (String)lText );
 + set ( self , "​esperandonombre"​ , m , false );
 + self.say("​Encantado,​ " + self.getRelationshipPropertyValueAsString ( m , "​nombre"​ ) + ". Yo soy María."​);​
 + }
 + }
 + else
 + {
 +
 +(...)
 +</​code>​
 +
 +En este ejemplo, cuando alguien saluda a María, ésta le pregunta su nombre. Cuando el interlocutor se lo dice, María se queda con el dato (almacenado en una relación con el interlocutor,​ llamada "​nombre"​) y lo usará a lo largo de la conversación:​
 +
 +''//>​ decir "​hola"//​\\
 +Dices "​hola"​.\\
 +La mujer dice "​Hola..."​.\\
 +La mujer dice "​¿Cómo te llamas?"​.\\
 +//> decir "​juan"//​\\
 +La mujer dice "​Encantado,​ Juan. Yo soy María."''​
 +
 +De este modo, a partir de propiedades y relaciones, podemos hacer que las reacciones de los personajes a lo que les decimos varíen de acuerdo a lo que se ha dicho antes en la conversación,​ y por supuesto también a otros factores como identidad del interlocutor,​ humor actual del personaje, situación en el mundo, eventos que hayan sucedido, y un largo etcétera. El único límite es la imaginación y el esfuerzo dedicado a añadir detalle a la simulación.
manejo_de_eventos.1467918092.txt.gz · Última modificación: 2016/07/07 21:01 por al-khwarizmi