CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 21 Nov 2018 20:16

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
NotaPublicado: 28 Ago 2009 14:10 
Desconectado
Elfito
Elfito
Avatar de Usuario

Registrado: 19 May 2008 19:26
Mensajes: 11
Ubicación: Uruguay
Buenas. Quiero listar en forma independiente los psis presentes con algo como "Aquí está: María". Por defecto InformATE los lista junto a los objetos, lo cual me parece que no es muy práctico para una lectura rápida. No tengo idea de cómo hacerlo, supongo que hay que modificar alguna parte de la librería.

Gracias.


Arriba
 Perfil  
 
NotaPublicado: 28 Ago 2009 15:32 
Desconectado
Implementador
Implementador
Avatar de Usuario

Registrado: 10 Mar 2004 11:58
Mensajes: 1817
Ubicación: Madrid
Spartacus escribió:
Buenas. Quiero listar en forma independiente los psis presentes con algo como "Aquí está: María". Por defecto InformATE los lista junto a los objetos, lo cual me parece que no es muy práctico para una lectura rápida. No tengo idea de cómo hacerlo, supongo que hay que modificar alguna parte de la librería.

Gracias.


Lo que se me ocurre es lo siguiente:

Todos los PSIS deben tener la propiedad animado (son seres vivos) y la propiedad escenario, o oculto (para que no sean listados).

Luego te creas esta función:
Código:
lista_PSIS [o i;
i=0;
objectloop (o in location && o has animado)i++;
if(i==0) rtrue; !No hay ningún PSI
print "Por aquí está";
if(i>1)print "n";
print " ";
objectloop (o in location && o has animado){print (the) o,""; i--;
                     if(i>1)print ", ";
                     if(i==1)print "y ";
                     }
".";
];


Y, en TODAS las localidades, la "descripcion" debe ser tal que:

Código:
descripcion [;
print "Estás en un bosque blablabla.^";
lista_PSIS();
rtrue;
],

En resúmen: Ocultamos los objetos animados para que no se listen automáticamente, y al describir la localidad los listamos por nuestra cuenta llamando a la función lista_PSIS.

Saludos

_________________
_/ /\ R e \_


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 28 Ago 2009 15:48 
Desconectado
Elfito
Elfito
Avatar de Usuario

Registrado: 19 May 2008 19:26
Mensajes: 11
Ubicación: Uruguay
Gracias, Jarel. Sí, ahora me doy cuenta que por ahí puede estar la solución. Era mucho más fácil de lo que había pensado.
Más tarde o mañana, cuando lo pruebe, aviso si me funcionó.

Gracias.


Arriba
 Perfil  
 
NotaPublicado: 29 Ago 2009 11:59 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2909
Ubicación: España (Galicia)
Hola !

jarel escribió:
Y, en TODAS las localidades, la "descripcion" debe ser tal que:

Código:
descripcion [;
print "Estás en un bosque blablabla.^";
lista_PSIS();
rtrue;
],



Se me ocurre que sería posible hacerlo de manera menos dolosa de la formasiguiente, creamos una clase para las localidades:

Código:
class Localidad
with
   after [;
        Look: lista_PSIS();
    ],
;


Ahora lo único que debemos hacer es cambiar las localidades para que sean objetos de la clase localidad. En lugar de:

Código:
object loc1 "...


Ponemos:

Código:
Localidad loc1 "...


Si no se quiere cambiar las localidades, se puede hacer un objeto controlador:

Código:
object controlador
with
    found_in [;
        rtrue;
    ],
    react_after [;
        Look: lista_PSIS();
    ],
has concealed scenery;

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 29 Ago 2009 21:19 
Desconectado
Elfito
Elfito
Avatar de Usuario

Registrado: 19 May 2008 19:26
Mensajes: 11
Ubicación: Uruguay
El código ha funcionado corerctamente. Las únicas y triviales modificaciones que he hecho ha sido un agregado en los objectloop para impedir que el PJ sea listado y un condicional para imprmir o no un espacio tras el nombre del PSI.
Es buena tu opción, baltasarq. También se me ocurre otra, que no sé si funcionaría, que es insertar el código de listar_psis al final de la rutina MirarSub.
El código quedó como sigue:

Código:
i=0;
objectloop(o in localizacion && o has animado && o ~=jugador)i++;

if (i==0) rtrue; !No hay ningún PSI
print "^Aquí está";
if (i>1) print "n";
print " ";

objectloop(o in localizacion && o has animado && o ~= jugador)
{
          print (el) o; i--;
          if (i>0) print " ";
          if (i>1) print ", ";
          if (i==1) print "y ";
}
".";


Muchas gracias por la respuesta. Un saludo.


Arriba
 Perfil  
 
NotaPublicado: 30 Ago 2009 21:49 
Desconectado
Semimomio
Semimomio
Avatar de Usuario

Registrado: 23 Abr 2004 08:49
Mensajes: 2909
Ubicación: España (Galicia)
Hola !

Citar:
Es buena tu opción, baltasarq. También se me ocurre otra, que no sé si funcionaría, que es insertar el código de listar_psis al final de la rutina MirarSub.


Sí, evidentemente se puede hacer así, aunque yo estoy en contra de modificar la librería, a no ser que sea absolutamente imprescindible.

Y en este caso, el coste es trivial con la solución "no invasiva".

_________________
-- Baltasar, el arquero


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 31 Ago 2009 00:43 
Desconectado
Archivero
Archivero

Registrado: 08 Sep 2008 22:04
Mensajes: 266
En ese caso, la alternativa menos invasiva es poner la rutina en el punto de entrada "RutinaMirar", ¡el mismo resultado sin invadir nada!

--


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 31 Ago 2009 13:24 
Desconectado
Elfito
Elfito
Avatar de Usuario

Registrado: 19 May 2008 19:26
Mensajes: 11
Ubicación: Uruguay
DrVanHalenFan escribió:
En ese caso, la alternativa menos invasiva es poner la rutina en el punto de entrada "RutinaMirar", ¡el mismo resultado sin invadir nada!

--


Perdón, pero no sé qué es eso de punto de entrada. ¿Es parte de InformATE!?


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 31 Ago 2009 14:55 
Desconectado
Archivero
Archivero

Registrado: 08 Sep 2008 22:04
Mensajes: 266
Spartacus escribió:
Perdón, pero no sé qué es eso de punto de entrada. ¿Es parte de InformATE!?


Sip, por DocumemntATE veo que no tiene ningún capítulo específico, así que lo mejor es que le eches un vistazo al cap. 8.4 del manual de referencia de InformATE. En este caso todo lo que necesitas saber es que si añades una rutina llamada "RutinaMirar" esta se ejecutará justamente al final de cada acción "Mirar".

--


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