CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 11 Jul 2020 06:17

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 22 mensajes ]  Ir a página Anterior  1, 2
Autor Mensaje
 Asunto:
NotaPublicado: 15 Sep 2005 00:37 
Desconectado
Yiepp
Yiepp
Avatar de Usuario

Registrado: 07 Sep 2005 04:45
Mensajes: 54
Ubicación: Cerca de Barcelona
Mejor usar la primera versión.

Aquí­ el código completo, con la segunda versión:
[spoiler]
Constant Historia "Salidas";
Constant Titular "comprobando el código de ejemplo de documéntate.";

Constant ADMITIR_COMANDO_SALIDAS;

Include "EParser";
Include "Acciones";
Include "Gramatica";

Object habit01 "Habitación 01"
with descripcion "Una habitación vací­a. En la pared hay un mecanismo.
Al norte hay un callejón.",
al_n SinSalida,
has luz;

Object mecanismo_secreto "mecanismo secreto" habit01
with nombre 'mecanismo' 'palanca' 'secreto',
descripcion [;
print "Una palanca en la pared controla un mecanismo secreto. ";
],
has conmutable ~encendido escenario;

Object SinSalida "Callejón sin salida"
with descripcion [;
if (mecanismo_secreto hasnt encendido)
print "Aquí­ parece terminar el pasillo, una pared lisa
impide continuar hacia el norte. ";
else print "¡La pared que habí­a en el lado norte ha
desaparecido! Al otro lado sólo ves oscuridad. ";
"Puedes volver al pasillo por el sur.";
],
al_s habit01,
al_n [;
if (mecanismo_secreto has encendido)
return HabitacionSecreta;
else "No puedes atravesar paredes.";
],
salidas [ direc;
if (direc==obj_n)
{
if (mecanismo_secreto has encendido) "norte";
else return 2;
}
],
has luz;

Object HabitacionSecreta "Hab secreta"
with descripcion "¡Llegaste a la habitación secreta! Eres el Rey de los
Aventureros.",
al_s SinSalida,
has luz;


[ Inicializar;
localizacion = habit01;
modomirar = 2;
];
[/spoiler]

y la transcripción:
Código:

> N

> salidas

Salidas visibles: sur.

> S

> Encender mecanismo

> N

> salidas

Salidas visibles:norte
, sur.



No queda del todo bien... si se prueba sustituir el "norte" por un print "norte" es aún peor.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Sep 2005 00:39 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Brucehum escribió:
En cambio, la versión que devuelve "norte" tiene un problema: las salidas salen mal formateadas


Anda, pues sip, los retornos de carro asociados al retorno automático tras un print hacen de las suyas. Una alternativa viable serí­a

Código:
salidas [ direc;
            if (direc==obj_n)
            {
                if (mecanismo_secreto has encendido)
                {
                   print "norte";
                   rtrue;
                }
                else return 2;
            }
        ],


Que ha sido la única combinación de prints y de returns que me lo ha colocado bien. Esta también podrí­a ser una buena opción, de cara a que el aprendiz que copie ese código no se encuentre con efectos raros en pantalla.

Huum ¿será esta la buena? Yo ya no asegurarí­a nada! XDD


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Sep 2005 00:50 
Desconectado
Yiepp
Yiepp
Avatar de Usuario

Registrado: 07 Sep 2005 04:45
Mensajes: 54
Ubicación: Cerca de Barcelona
La versión que publicas con el print y el RTRUE funciona (" norte") queda un pelí­n mejor, pero quizá únicamente por que es norte, que es el primero que muestra, si fuese otro, por ejemplo este (lo probé, puse la secreta al este del pasadizo, cambié el código por obj_e y que haga print "este" ... mediocres noticias: "salidas visibles: sureste." con print " este" sale "salidas visibles: sur este.", se traga las comas. Quizá me atreva con más de 2 salidas a ver las combinaciones... pero no ahora.

¿Has probado return al_n? Yo lo he probado en salidas.inf (lo que he publicado un poco antes) y el equivalente, return al_o en mi aventura, y... ¡en ambas funciona la dirección correctamente!

O sea, que salidas muestra "salidas visibles: norte, sur."

Y mi engendro muestra "salidas visibles: norte, oeste." Le cambio al_o por cualquiera: al_n y sigue funcionando "salidas visibles: norte, oeste.". O sea, que funciona de chiripa... por la conversión que hace informate de al_n o al_o en valor. Mejor correr un tupido velo.


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Sep 2005 02:03 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Brucehum escribió:
¿Has probado return al_n? Yo lo he probado en salidas.inf (lo que he publicado un poco antes) y el equivalente, return al_o en mi aventura, y... ¡en ambas funciona la dirección correctamente!

O sea, que salidas muestra "salidas visibles: norte, sur."

Y mi engendro muestra "salidas visibles: norte, oeste." Le cambio al_o por cualquiera: al_n y sigue funcionando "salidas visibles: norte, oeste.". O sea, que funciona de chiripa... por la conversión que hace informate de al_n o al_o en valor. Mejor correr un tupido velo.


Exacto, la chiripa consiste exactamente en que, ante cualquier valor de retorno que no sea 0, 1 o 2, la librerí­a imprime por defecto el nombre normal de la salida que se esta testeando. Si le pones "return" seguido de cualquier cosa también te da la salida correcta (por cualquier cosa entiendase cualquier valor o cualquier constante que el programa conozca... por ejemplo "return jugador" ¡también funciona! XDD)

Lo que sí­ que es cierto es que, definitivamente, SalidasSub() no termina de formatear bien cuando la propiedad salidas devuelve una cadena de texto, ¡nos pongamos como nos pongamos! :(


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Sep 2005 16:07 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 10 Sep 2004 00:17
Mensajes: 3069
Ubicación: Chile
Caballeros:

Nuevamente me encuentro completamente perdido :oops:

¿¿Cuál es la corrección, finalmente??

Aclarad a este pobre editor.

Se despide,

_________________
[Incanus]
El Escritorio - Blog Aventurero y Literario


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 15 Sep 2005 21:02 
Desconectado
Grafista
Grafista

Registrado: 09 Mar 2004 17:20
Mensajes: 504
Incanus escribió:
Caballeros:

Nuevamente me encuentro completamente perdido :oops:

¿¿Cuál es la corrección, finalmente??

Aclarad a este pobre editor.

Se despide,


¿Perdido? Bueno, ¡ya somos 3! La situación es la que sigue:

Podemos dar por hecho que todas las referencias a "al_n" en esos párrafos pueden y, de hecho, deben, ser sustituidas por "obj_n" (u obj_loquesea)

¡Y ahí­ termina todo lo que podemos estar seguros!

Explicación:

El "problema" con el listado de salidas "descolocado" cuando, para alguna de las salidas, el autor decide imprimir su propia frase, viene del diseño de SalidasSub(). Esta rutina está planteada del siguiente modo (en realidad, el mejor de los posibles):

-Para cada punto cardinal disponible, examina el retorno de la propiedad salidas de la localizacion, si la hubiera.

-Si el retorno es 1 ("true"), asume, por convenio, que el autor se ha responsabilizado de imprimir lo que considerase oportuno... y se desentiende (-del todo-) de cualquier consideración sobre formateo del listado de esa salida en concreto.

-Para cualquier otro resultado, se encarga (primero) de decidir si hay que imprimir algo y, en caso afirmativo, de imprimir un espacio (" ") o una coma (",") según se trate del primer elemento o de cualquiera de los siguientes, y finalmente de imprimir la salida en cuestión. Toda esta parte se la salta, obviamente, si el retorno era 1, como en el caso anterior.

Como véis, para el caso de retornar "true" a la rutina le es materialmente imposible anticiparse a lo que el autor haya decidido imprimir por su cuenta. Esto implica que la rutina ignora por completo si lo que el autor ha puesto incluye retornos de carro (deseados o no) o si este se ha molestado por su cuenta de poner los espacios o comas necesarios.

Es el viejo conflicto "libertad" vs "esfuerzo". En el caso de retornar "true" el autor tiene todas las puertas abiertas para "imponer" su criterio sobre el de la librerí­a y las acciones que esta tomarí­a por defecto... pero debe molestarse en tomar por su cuenta las pequeñas y engorrosas decisiones menores que esta le darí­a hechas en caso contrario.

Así­ pues, en caso de que el autor opte por, en el caso de una salida determinada, decidir él mismo lo que se ha de imprimir o no, debe tener en cuenta lo siguiente:

-Que lo que ponga incluya o no retornos de carro. Atención, aquí­ hay que recordar que las sentencias:

Código:
print_ret "imprime lo que sea";


y su abreviatura:

Código:
"imprime lo que sea";


además de incluir un cómodo y oportuno "rtrue", conllevan un retorno de carro forzoso que la rutina SalidasSub() no tiene manera humana de predecir ni controlar. Si desea evitarlo, debe optar por poner un código similar a

Código:
print "imprime lo que sea";
rtrue;


-Y eso no es todo, claro. La parte de la rutina que se encarga de decidir si hay que imprimir un espacio o una coma antes de lo que haya que poner es ignorada (vamos, que se la salta) en el caso de haber retornado true, así­ que es responsabilidad del autor haberlos puesto por su cuenta si eran necesarios (básicamente, y en la mayorí­a de los casos, un espacio si va a ser el primer elemento del listado y una coma si es cualquiera de los siguientes)

Vamos, que por un lado la librerí­a asume, con bastante alegrí­a, eso sí­ XDD, que el programador ha asumido todos los detalles de los que se encargarí­a ella... y la documentación, a su vez, ha asumido con no menos alegrí­a que no hace falta advertir al aprendiz de este detalle...

¿Qué hacer?

¿Sustituir, al menos, el segundo ejemplo por otro menos "conflictivo"?

¿Añadir al texto un párrafo explicativo advirtiendo que, en el caso del "true" el programador asume todas las responsabilidades en lo referente al formateo del listado de salidas?

¿Las dos cosas?

¿Dejarlo como está, al menos temporalmente, y apuntarlo como detalle pendiente de pulir en un futuro?

Yo voto por que tu, Incanus, tomes la decisión de corregir o no (piensa que quiza en este momento lo mejor podrí­a ser abstenernos de hacer modificaciones hasta que, en un próximo futuro, pasemos de la fase de "lavado de cara de la web" a otra más activa de "soporte más amplio del sistema" que incluya, eventualmente, modificaciones de la librerí­a y/o de la documentación... o no).
En caso de que tu, o entre todos, optemos por la corrección, me ofrezco voluntario para redactar las modificaciones pertinentes, siempre desde un punto de vista de "tocar lo mí­nimo necesario", es decir, en este caso, dejar la librerí­a como está y solamente hacer los mí­nimos añadidos necesarios al texto de documentate para que quien los lea sea consciente de que, en el caso del "rtrue" el programador se responsabiliza del formateo del listado. En mi opinión, realmente, el único fallo del documentate es no advertir de ello y, ya para rematarlo, poner un ejemplo que lo descoloca todo, con la consiguiente confusión para quien esté aprendiendo.

Uuuhr, ¡acabo de darme cuenta de que, espontaneamente, he usado la palabra "eventualmente" en su supuesto sentido americano... que, al final, no era tan americano! :o


Arriba
 Perfil  
 
 Asunto:
NotaPublicado: 16 Sep 2005 16:55 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 10 Sep 2004 00:17
Mensajes: 3069
Ubicación: Chile
Radio Marte Libre escribió:
Yo voto por que tu, Incanus, tomes la decisión de corregir o no (piensa que quiza en este momento lo mejor podrí­a ser abstenernos de hacer modificaciones hasta que, en un próximo futuro, pasemos de la fase de "lavado de cara de la web" a otra más activa de "soporte más amplio del sistema" que incluya, eventualmente, modificaciones de la librerí­a y/o de la documentación... o no).


Mi decisión es que de momento dejemos esto como está, pero dejo todo este hilo como primer cambio a implementar sobre DocumentatE. Viene a sumarse, por cierto, a otros nuevos desarrollos de la documentación que también están pendientes...

En todo caso tengo que agradeceros todo vuestro esfuerzo, pues estáis adelantando (como has expuesto impecablemente) la siguiente fase de la actualización de InformATE! ya enunciada por mí­ mismo (y otros más) en tiempos remotos:

Fase I : Actualizar los contenidos (texto y descarga) de las páginas del sitio web de InformATE! Esto está todaví­a en curso, pero una vez vuelva a estar disponibla la carga (FTP upload) al CAAD y páginas en hosting, tendremos una versión en lí­nea con una actualización general de todas las páginas (será bello...)

Fase II: Actualizar la librerí­a y documentación de InformATE! Esto está latente (este hilo es prueba de ello) y es por supuesto una tarea mucho más ambiciosa, trascendente y (por cierto) difí­cil.

En perspectiva, lo de la web (Fase I) serí­a mi humilde grano de arena :oops: , mientras que la librerí­a y docs (Fase II) serí­a la verdadera playa a acometer para llevar InformATE! a tierra firme...


Radio Marte Libre escribió:
En caso de que tu, o entre todos, optemos por la corrección, me ofrezco voluntario para redactar las modificaciones pertinentes, siempre desde un punto de vista de "tocar lo mí­nimo necesario", es decir, en este caso, dejar la librerí­a como está y solamente hacer los mí­nimos añadidos necesarios al texto de documentate para que quien los lea sea consciente de que, en el caso del "rtrue" el programador se responsabiliza del formateo del listado. En mi opinión, realmente, el único fallo del documentate es no advertir de ello y, ya para rematarlo, poner un ejemplo que lo descoloca todo, con la consiguiente confusión para quien esté aprendiendo.


Mil gracias por tu interés, tu entusiasmo y tu compromiso.

:twisted: ¡Te tengo en la mira, RML, y no podrás huir! MUAHAHAHAAA!!! :twisted:

:P

Radio Marte Libre escribió:
Uuuhr, ¡acabo de darme cuenta de que, espontaneamente, he usado la palabra "eventualmente" en su supuesto sentido americano... que, al final, no era tan americano! :o


Bienvenido a la globalización y mutua contaminación linguí­stica. A mí­ me pasa todo el tiempo: trabajo (acá en Chile) con Españoles (consultora internacional en tierra chilena...) y de vez en cuando (en casa, entre amigos) se me escapa algún modismo o modo de habla Español ... y me miran de una manera taaan rara :P ...

...y al revés también pasa, je, je, je... y llegando a su paí­s, a estos pobres tí­os (ya veis... "tí­os"...) los miran raro allá en España.

Esto nunca cesa...

Se despide,

_________________
[Incanus]
El Escritorio - Blog Aventurero y Literario


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 22 mensajes ]  Ir a página Anterior  1, 2

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 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