CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 14 Nov 2018 19:10

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 4 mensajes ] 
Autor Mensaje
NotaPublicado: 09 Jun 2011 10:23 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Ahora que estoy repasando el código en informATE que hice para el libro, me he dado cuenta de que tiene una funcionalidad muy interesantes que no sé bien como añadir al remake.

En informATE los objetos tienen dos niveles de descripción.
Uno es el que se obtiene con la orden "examinar objeto" y otro es el que muestran cuando se mira la localidad en la que están.
De ese modo en vez de:

Código:
>m
Planta baja
Estás en una enorme sala de estar, decorada como una cocina que hace las veces de dormitorio.
Aquí hay leña y una lámpara.


Obtenemos:

Código:
>m
Planta baja
Estás en una enorme sala de estar, decorada como una cocina que hace las veces de dormitorio.
Un poco de leña espera ser quemada en la chimenea.
Una LÁMPARA de aceite vieja y sin brillo, parece guardar de forma misteriosa todos los secretos de este lugar.


No se me ocurre cómo conseguir el mismo efecto sin tener que comprobar a cada momento la localización de los objetos.
¿Alguna idea?

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 09 Jun 2011 10:37 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5304
Ubicación: Coruña
Depende un poco de algunos detalles, ¿esa descripción sólo se muestra en la localidad en donde estaba originalmente el objeto, o también se muestra si te lo llevas a otra?

Si es lo primero, creo que no es difícil, se trataría de poner en la descripción de esa localidad una línea que se imprima sólo si self.hasItem("lámpara"), y además que el nombre singular de la lámpara esté condicionado a !room("sala de estar").hasItem(self), para que cuando esté en esa localidad no se imprima en la lista convencional de objetos.

Si es lo segundo, es un poco más complicado, aunque desde luego también es posible. Una manera sería sobreescribir en el mundo el verbo "mirar" sin argumentos para que, después de mostrar la descripción de la habitación actual, muestre esas descripciones que obtendría de una propiedad de los objetos de la habitación (recorridos mediante un bucle). Otra manera sería hacer ese recorrido y mostrado en un evento onShowRoom() que se ejecuta al mostrar la habitación.

_________________
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  
 
NotaPublicado: 09 Jun 2011 10:43 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Depende un poco de algunos detalles, ¿esa descripción sólo se muestra en la localidad en donde estaba originalmente el objeto, o también se muestra si te lo llevas a otra?


Es una propiedad del objeto, por eso he dicho de conseguir lo mismo sin tener que comprobar la localización del objeto.
Lo que no sería deseable es tener que añadir una descripción extra en cada habitación por cada objeto que ésta puede contener. En aventuras con pocos objetos aún, pero en aventuras con muchos objetos puede ser terrible.

Bueno, dejo aquí la idea por si la ves interesante.
Como en esta aventura solo me interesa resaltar ciertos objetos y hay pocas localidades, igual me merece la pena hacer esa comprobación a mano. :)

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 09 Jun 2011 11:03 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5304
Ubicación: Coruña
No me dijiste si lo que querías es el primer caso que mencioné o el segundo, imagino que el primero. En ese caso, yo creo que no tiene mucho sentido introducir una propiedad nueva, que la gente tendrá que leer en la documentación, aprender, recordar, etc.; para implementar una funcionalidad que en realidad ya existe porque se consigue con las descripciones dinámicas, que hacen eso y muchas cosas más. Por supuesto, con una funcionalidad genérica siempre hay que teclear un poco más que con una específica, pero a cambio no hay que aprenderse algo que sólo vale para una cosa muy concreta y que cuando quieres hacer otra cosa un poco distinta ya no vale. Yo personalmente soy partidario de la funcionalidad genérica, tal vez porque no tengo memoria... y también porque suele dar lugar a programas más mantenibles.

Al hacer un remake de una aventura creada en otro sistema es normal que puedas tener la impresión de "esto que era tan fácil, ahora me resulta más difícil". Cuando hacemos algo en una herramienta/sistema/lenguaje, instintivamente nos adaptamos a ella. Hacemos las cosas de la manera que nos resulta más sencilla en esa herramienta. Así, al pasar a otra herramienta distinta que hace unas cosas más fáciles y otras más difíciles, y querer mantener características de la obra original, es lógico encontrarse estos asuntos, ya que la obra está "sesgada" hacia la primera herramienta. Si hubieses hecho la aventura originalmente en AGE y la quisieses pasar ahora a Informate, seguramente habrías usado cosas como descripciones de caminos, o relaciones, y al pasarla a Informate tendrías que hacer implementaciones manuales de esas "features" que te darían más trabajo. Igual que da trabajo pasar algo de un lenguaje que usaba gotos a uno sin ellos, de un lenguaje orientado a objetos a uno funcional, de uno funcional a uno orientado a objetos, etc... y siempre parece que es más difícil hacerlo las cosas en el segundo de lo que lo fue en el primero. Seguro que los psicólogos tienen un nombre para esto; aunque no lo conozco :D

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