CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 22 Sep 2018 04:54

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 56 mensajes ]  Ir a página 1, 2, 3, 4  Siguiente
Autor Mensaje
NotaPublicado: 09 Abr 2011 09:08 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
No tengo claro cómo funciona esto.
He creado una llave y la he vinculado a la puerta con una relación "se abre con".
He imprimido un mensajito para cuando se cierra y otro para cuando se abre con llave.
Y he marcado con éxito ambas acciones.

Código:
Tu orden:  cierra la puerta
La puerta ya está cerrada.

Tu orden:  cierra la puerta con llave
La puerta se cierra con llave.

Cierras la puerta con la llave.

Tu orden:  abre la puerta
Abres la puerta.

Tu orden:  ir al jardin
Sales al jardín.
El el jardín.
Aquí hay una puerta.


Por lo pronto veo que mi mensajito está de más . :mrgreen:
Pero la sorpresa es que a pesar de haber cerrado la puerta con llave, ésta se vuelve a abrir sin necesidad de usar la llave de nuevo.

¿Qué estoy haciendo mal?

PD: Al-K, te aconsejo que saques una nueva versión de Vampiro, la actual deja a AGE a la altura del barro, es sorda hasta límites insospechados. :(

Código:
Tu orden:  abre el armario
Abres el armario.

Tu orden:  cierra el armario con llave
Cierras el armario.

Tu orden:  abre el armario
Abres el armario.


Y por esa sordera, eso suena a bug siendo que no lo es.

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


Arriba
 Perfil  
 
NotaPublicado: 09 Abr 2011 09:49 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Es que todo este tema de las puertas en AGE se me hace excesivamente complicado, y me refiero a que casi veo más simple cambiar la propiedad closed y locked a mano, que hacerlo por medio del IDE donde es terriblemente confuso.

Analizamos los campos del IDE en la pestaña correspondiente a abrir, cerrar, etc...

Los cuadros de abrible, cerrable y tal, bien.
Debajo tenemos:

Código:
Texto al abrir:
Ventana que muestra el texto y la condición una vez el autor la ha implementado.

Condición:
Campo para introducir dicha condición.

Descripción:
Campo para introducir dicha descripción.

Con exito.
Cuadro que se marca en caso de que queramos que la puerta se abra.



Este bloque se repite para cerrar, para abrir con llave y para cerrar con llave.
Cuando ves el IDE tal cual lees "descripción" y lees "condición" y no se te ocurre que la puerta no vaya a responde a abrir y cerrar si dejas esos campos vacíos... :roll:

Si es una puerta y obviamente la puerta se abre y se cierra, o no sería una puerta.
¿Por qué las condiciones que implican que una puerta está abierta o que está cerrada, no están ya de por si implementadas? ¿Por qué tiene el programador que acordarse de que existe una funcion isClosed() y que si no la introduce en ese campo la puerta no va a funcionar jamás. Esos campos deberían servir solo para dejar en manos del programador, la descripción y la posibilidad de éxito en cualquiera de los casos, no para volverlo loco. :lol:

Tampoco estaría mal que en ese mismo apartado el programador pudiera poner los valores de las propiedades "closed" y "locked" , y no tener que hacerlo en otro sitio, de ese modo se podría decidir sin mayor complicación si queremos que de principio la puerta esté abierta o no y con la llave echada o no.

Y me voy a ver si ahora consigo cerrar mi puerta con llave. :lol:

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


Última edición por jenesis el 09 Abr 2011 09:53, editado 1 vez en total

Arriba
 Perfil  
 
NotaPublicado: 09 Abr 2011 09:52 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
jenesis escribió:
Por lo pronto veo que mi mensajito está de más . :mrgreen:
Pero la sorpresa es que a pesar de haber cerrado la puerta con llave, ésta se vuelve a abrir sin necesidad de usar la llave de nuevo.

¿Qué estoy haciendo mal?

Me imagino que será que le has puesto "éxito" al abrir (el abrir normal, sin llave) independientemente de que la puerta esté cerrada con llave o no.

Para que la llave funcione de la forma esperada, en las descripciones de abrir tendrás que poner que si self.isLocked(), la apertura fracase y se muestre un mensajito "No puedes abrirla porque está cerrada con llave" o similar.

jenesis escribió:
PD: Al-K, te aconsejo que saques una nueva versión de Vampiro, la actual deja a AGE a la altura del barro, es sorda hasta límites insospechados. :(

Como ya he comentado alguna vez por aquí, la aventura es rudimentaria porque cuando hice esa versión intenté calcar la de I6 al milímetro, porque pensé que el objetivo del proyecto Vampiro era ése, hacer exactamente lo mismo.

La verdad, nunca me convenció mucho el proyecto Vampiro; pero ahora que sé que encima no tiene objetivo claro (cada cual lo interpreta como quiere), todavía me convence menos. La gente lo usa para comparar sistemas pero realmente no compara nada: si se interpreta que hay que implementar exactamente la misma aventura en varios sistemas, no sirve para nada porque sólo se va a comparar el mínimo común denominador que tienen todos, y si se interpreta que en cada sistema se pueden añadir cosas, en realidad lo que estás comparando son aventuras distintas, y eso no te dice nada sobre los sistemas.

Creo que lo que acabaré haciendo será simplemente retirar esa aventura de la distribución de AGE, pero primero me gustaría tener alguna otra aventura sencilla de ejemplo, especialmente alguna que esté programada en el estilo de las últimas versiones de AGE.

_________________
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 Abr 2011 10:00 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
jenesis escribió:
Si es una puerta y obviamente la puerta se abre y se cierra, o no sería una puerta.
¿Por qué las condiciones que implican que una puerta está abierta o que está cerrada, no están ya de por si implementadas? ¿Por qué tiene el programador que acordarse de que existe una funcion isClosed() y que si no la introduce en ese campo la puerta no va a funcionar jamás. Esos campos deberían servir solo para dejar en manos del programador, la descripción y la posibilidad de éxito en cualquiera de los casos, no para volverlo loco. :lol:

Para dar mayor flexibilidad. A lo mejor tienes un objeto que se puede abrir pero no se puede cerrar (el plástico de un CD, el barril de Vampiro), o que se puede cerrar pero no abrir (una puerta que se atasca o algo así). A lo mejor un personaje normal no puede abrir una puerta cerrada con llave; pero al increíble Hulk le da igual, la empuja y se abre. A lo mejor no te gusta el sistema americano de puertas y llaves (los cuatro comandos unlock-open, close-lock) y prefieres que si una puerta está cerrada con llave y pones "abrir puerta" llevando la llave, la abras automáticamente con esa llave sin necesidad de teclear dos comandos. Si todo estuviera implementado por defecto, sólo podrías crear puertas de una manera y para todo lo demás tendrías que hacer workarounds.

jenesis escribió:
Tampoco estaría mal que en ese mismo apartado el programador pudiera poner los valores de las propiedades "closed" y "locked" , y no tener que hacerlo en otro sitio, de ese modo se podría decidir sin mayor complicación si queremos que de principio la puerta esté abierta o no y con la llave echada o no.

Sí, es cierto que estaría bien, lo malo es que eso tendría que estar sincronizado con el campo de propiedades (que cuando la cambias en uno, cambie en el otro) y eso no es nada sencillo de programar (al menos para mí), pero puedo pensar en si se podría hacer.

_________________
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 Abr 2011 10:18 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
jenesis escribió:
PD: Al-K, te aconsejo que saques una nueva versión de Vampiro, la actual deja a AGE a la altura del barro, es sorda hasta límites insospechados. :(

Como ya he comentado alguna vez por aquí, la aventura es rudimentaria porque cuando hice esa versión intenté calcar la de I6 al milímetro, porque pensé que el objetivo del proyecto Vampiro era ése, hacer exactamente lo mismo.

La verdad, nunca me convenció mucho el proyecto Vampiro; pero ahora que sé que encima no tiene objetivo claro (cada cual lo interpreta como quiere), todavía me convence menos. La gente lo usa para comparar sistemas pero realmente no compara nada: si se interpreta que hay que implementar exactamente la misma aventura en varios sistemas, no sirve para nada porque sólo se va a comparar el mínimo común denominador que tienen todos, y si se interpreta que en cada sistema se pueden añadir cosas, en realidad lo que estás comparando son aventuras distintas, y eso no te dice nada sobre los sistemas.


Es que creo que el proyecto Vampiro para que tenga utilidad, lo que ha de hacer es precisamente "marcar las diferencias". No sirve de nada de cara al usuario, tener 8 versiones de Vampiro que se muestran idénticas en la pantalla. Esto podría ser útil a nivel de código, para comprobar qué herramienta hace lo mismo que las demás con una programación más cercana a nuestros gustos y objetivos, pero hasta eso pierde sentido si tenemos en cuenta que ahora mismo hay IDEs que generan dicho código, con lo cual la comparación del mismo es inútil.

La verdad es que todo ha cambiado mucho desde que se inció el proyecto, pero aún se puede aprovechar para mostrar las características de cada herramienta, aquello que la diferencia de las demás, que no tiene porque ser ni peor ni mejor, simplemente distinto.

Citar:
Creo que lo que acabaré haciendo será simplemente retirar esa aventura de la distribución de AGE, pero primero me gustaría tener alguna otra aventura sencilla de ejemplo, especialmente alguna que esté programada en el estilo de las últimas versiones de AGE.


No sé si la del libro te servirá como "aventura sencilla", pero estoy en ello. Voy a ver si no me entretengo demasiado o igual dejo lo de la librería para después. :)

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


Arriba
 Perfil  
 
NotaPublicado: 09 Abr 2011 10:35 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Para dar mayor flexibilidad. A lo mejor tienes un objeto que se puede abrir pero no se puede cerrar (el plástico de un CD, el barril de Vampiro), o que se puede cerrar pero no abrir (una puerta que se atasca o algo así). A lo mejor un personaje normal no puede abrir una puerta cerrada con llave; pero al increíble Hulk le da igual, la empuja y se abre. A lo mejor no te gusta el sistema americano de puertas y llaves (los cuatro comandos unlock-open, close-lock) y prefieres que si una puerta está cerrada con llave y pones "abrir puerta" llevando la llave, la abras automáticamente con esa llave sin necesidad de teclear dos comandos. Si todo estuviera implementado por defecto, sólo podrías crear puertas de una manera y para todo lo demás tendrías que hacer workarounds.


Pero para eso estarían esos campos, para meter ese tipo de condiciones.
La puerta se abre y cierra normal pero...
Si la abre Hulk, en ese caso aunque la puerta esté cerrada con llave, se marca el cuadro "Exito" y se pone una descripción adecuada.

El barril se abre, y si está abierto self.isOpen(), ya no se marca el intento de cerrarlo con éxito y se pone también un mensaje adecuado.

Si la puerta isClosed() y tu quieres que se abra por completo a la vez que quitas el cerrojo, se trataría de marcarlo de ese modo en el campo adecuado, yo no le veo mayor complicación.


Creo que eso facilitaría muchísimo el tema de las puertas en el IDE porque de principio todas se comportarían como tales. Y no los veo workarounds, cualquier estado inusual de la puerta se puede conseguir marcando o no la condición con éxito y añadiendo una descripción adecuada. O eso o me estoy líando... :lol:

No son ideas para hacerlas ya, pero sí para tener en cuenta y ver si entre todos conseguimos que AGE deje de ser una herramienta para programadores. :)

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


Arriba
 Perfil  
 
NotaPublicado: 09 Abr 2011 10:52 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
O sea, entiendo que lo que tú dices es que si el usuario pone que el objeto es abrible pero no pone nada en la zona de "abrir", se generen automáticamente por defecto unas descripciones que implementen el comportamiento más común (si está abierta decir "Ya estaba abierta" y fallar, si está cerrada pero no con llave abrirla, si está cerrada con llave decir "Está cerrada con llave" y fallar). Y que en el caso de que sí que ponga algo en la zona de "abrir", entonces que no se genere ese comportamiento por defecto, sino que el del usuario tome el mando y pueda implementar lo de Hulk u otras cosas si quiere. ¿Es eso?

Eso creo que se podría hacer sin mucho problema, sí. Aunque lo que tenía pensado para facilitar la tarea era más bien algo tipo "Archivo -> Importar objetos... -> Puerta", que haría innecesario todo esto. Pero bueno, siempre se pueden plantear ambas cosas.

De todas formas, yo creo que los sistemas para no programadores no existen ni existirán en lo que nos queda de vida. Sólo existen los sistemas que se hacen pasar por sistemas para no programadores, pero hay que programar igual.

_________________
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 Abr 2011 10:59 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
O sea, entiendo que lo que tú dices es que si el usuario pone que el objeto es abrible pero no pone nada en la zona de "abrir", se generen automáticamente por defecto unas descripciones que implementen el comportamiento más común (si está abierta decir "Ya estaba abierta" y fallar, si está cerrada pero no con llave abrirla, si está cerrada con llave decir "Está cerrada con llave" y fallar). Y que en el caso de que sí que ponga algo en la zona de "abrir", entonces que no se genere ese comportamiento por defecto, sino que el del usuario tome el mando y pueda implementar lo de Hulk u otras cosas si quiere. ¿Es eso?


Exacto, eso sería. :D

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


Arriba
 Perfil  
 
NotaPublicado: 29 Abr 2011 20:11 
Desconectado
Archivero
Archivero
Avatar de Usuario

Registrado: 21 Abr 2011 17:46
Mensajes: 278
Al-Khwarizmi escribió:
pero primero me gustaría tener alguna otra aventura sencilla de ejemplo, especialmente alguna que esté programada en el estilo de las últimas versiones de AGE.


Y, de manera muy muy resumida, ¿cuáles son las principales diferencias de las últimas versiones con respecto a las anteriores?

EDITO: Olvídalo, olvídalo, ya lo he mirado en los menajes de nuevas versiones.


Arriba
 Perfil  
 
NotaPublicado: 12 May 2011 17:50 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Bueeno y después de este paréntesis portanuevero y votatero, retomo mi proyecto con AGE.
¿A que estoy más maja cuando programo? :mrgreen:

Una pregunta ¿cuesta mucho implementar que las puertas funcionen por defecto como puertas normales?

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


Arriba
 Perfil  
 
NotaPublicado: 12 May 2011 18:05 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
Hum, ¿qué quiere decir "puertas normales"? ¿Por qué las puertas de AGE por defecto no las consideras normales?

_________________
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: 12 May 2011 18:07 
Desconectado
Archivero
Archivero
Avatar de Usuario

Registrado: 21 Abr 2011 17:46
Mensajes: 278
Será porque por defecto puedes abrir sencillamente puertas cerradas con llave.


Arriba
 Perfil  
 
NotaPublicado: 12 May 2011 18:29 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
mistery escribió:
Será porque por defecto puedes abrir sencillamente puertas cerradas con llave.


No, por defecto ninguna puerta funciona, ni se abre, ni se cierra, de lo único que se encarga AGE es de dar paso o no a la otra localidad y para eso tienes que encargarte de comprobar si la puerta está cerrada, esta abierta, tiene la llave echada o quitada.

Vamos que llevo un rato peleándome con la dichosa puerta y sus llaves. :lol:

En este hilo se dijo que no sería complicado hacer que ese funcionamiento estuviera implementado por defecto para todas las puertas y que fuera el programador quien se encargar de crear las excepciones.
Quería saber si eso va a ser a corto o largo plazo, por dejar todas las puertas abiertas y esperar a última hora para implementarlas. :D

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


Arriba
 Perfil  
 
NotaPublicado: 12 May 2011 20:07 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5303
Ubicación: Coruña
jenesis escribió:
En este hilo se dijo que no sería complicado hacer que ese funcionamiento estuviera implementado por defecto para todas las puertas y que fuera el programador quien se encargar de crear las excepciones.
Quería saber si eso va a ser a corto o largo plazo, por dejar todas las puertas abiertas y esperar a última hora para implementarlas. :D

Pues lo siento pero no puedo comprometerme a nada. Esta temporada tengo muy poco tiempo, y prácticamente nunca estoy teniendo más de media hora libre seguida, así que ponerse a programar una cosa como ésa que requiere diseño y pensarse las cosas (porque hay varias formas de hacerlo) es complicado.

En principio no cuentes con ello. Si mi grado de enmarronamiento en el trabajo disminuye, podría ser que pudiese hacerlo a corto plazo; pero no es nada que pueda garantizar.

De todas formas, a lo largo de la vida de un programador de AGE sólo debería necesitar hacer una puerta. El copy-paste debería resolver el resto. :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  
 
NotaPublicado: 12 May 2011 20:19 
Desconectado
Archivero
Archivero
Avatar de Usuario

Registrado: 21 Abr 2011 17:46
Mensajes: 278
Al-Khwarizmi escribió:
De todas formas, a lo largo de la vida de un programador de AGE sólo debería necesitar hacer una puerta. El copy-paste debería resolver el resto. :D


Pues eso es verdad :) ¿Hacemos una?


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 56 mensajes ]  Ir a página 1, 2, 3, 4  Siguiente

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

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