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:16]
al-khwarizmi
manejo_de_eventos [2016/07/08 13:49] (actual)
al-khwarizmi
Línea 224: Línea 224:
  || lText.contains("​saludo"​) || lText.contains("​buenos d") )  || lText.contains("​saludo"​) || lText.contains("​buenos d") )
  {  {
 + //nos están saludando, saludamos de vuelta
  self.say("​Hola..."​);​  self.say("​Hola..."​);​
- String nombre = self.getRelationshipPropertyValueAsString ​, "​nombre"​ );+ //miramos si conocemos el nombre del interlocutor 
 + String nombre = get self , "​nombre"​, m );
  if ( nombre == null || nombre.equals("​unknown"​) )  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?"​);​  self.say("​¿Cómo te llamas?"​);​
- self.setRelationshipProperty ​, "​esperandonombre"​ , true );+ set self , "​esperandonombre" ​, m , true );
  }  }
  }  }
Línea 238: Línea 241:
 { {
  //si estamos esperando nombre, asumiremos que lo que nos dice lo es.  //si estamos esperando nombre, asumiremos que lo que nos dice lo es.
- if ( self.getRelationshipPropertyValueAsBoolean ​, "​esperandonombre"​ ) )+ if ( get self , "​esperandonombre" ​, m ) )
  {  {
- if ( StringMethods.numToks ​lText , ' ' ​3 )+ 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?"​);​   self.say("​Uy,​ ese nombre es muy largo. Dudo que pueda recordarlo. ¿No te puedo llamar por algún nombre más corto?"​);​
  }  }
Línea 248: Línea 252:
  //hacer que el nombre empiece por mayúscula  //hacer que el nombre empiece por mayúscula
  if ( !Character.isUpperCase(lText.charAt(0)) )  if ( !Character.isUpperCase(lText.charAt(0)) )
- lText = Character.toUpperCase(lText.charAt(0)) + lText.substring(1);​ + lText = Character.toUpperCase(lText.charAt(0)) + lText.substring(1);​ 
- self.setRelationshipProperty ( m , "​nombre"​ , (String)lText ); + //​actualizar las relaciones, reflejando que conocemos el nombre del personaje (y cuál es) 
- self.setRelationshipProperty ( m , "​esperandonombre"​ , false ); + set ( self , "​nombre" ​, m , (String)lText ); 
- System.out.println("​Name-relationship is " + self.getRelationshipPropertyValueAsString ( m , "​nombre"​ ) );+ set ( self , "​esperandonombre"​ , m , false );
  self.say("​Encantado,​ " + self.getRelationshipPropertyValueAsString ( m , "​nombre"​ ) + ". Yo soy María."​);​   self.say("​Encantado,​ " + self.getRelationshipPropertyValueAsString ( m , "​nombre"​ ) + ". Yo soy María."​);​
  }  }
Línea 260: Línea 264:
 (...) (...)
 </​code>​ </​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.1467918998.txt.gz · Última modificación: 2016/07/07 21:16 por al-khwarizmi