Herramientas de usuario

Herramientas del sitio


cosas_abribles_y_cerrables

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
cosas_abribles_y_cerrables [2011/01/03 18:28]
al-khwarizmi
cosas_abribles_y_cerrables [2011/01/05 17:54] (actual)
al-khwarizmi Estado inicial
Línea 30: Línea 30:
     - Si esa entrada del formulario era sin éxito (no se marcó la casilla "Con éxito"​),​ entonces se muestra el mensaje correspondiente;​ pero no se hace ningún cambio en el estado de la cosa.     - Si esa entrada del formulario era sin éxito (no se marcó la casilla "Con éxito"​),​ entonces se muestra el mensaje correspondiente;​ pero no se hace ningún cambio en el estado de la cosa.
   ​   ​
-El funcionamiento de ''​cerrar'',​ ''​cerrar con''​ y ''​abrir con''​ es análogo, trabajando en cada caso con la casilla y el formulario correspondientes a esa orden.+El funcionamiento de ''​cerrar''​ es análogo, trabajando en cada caso con la casilla y el formulario correspondientes a esa orden.
  
 Las condiciones que se pueden teclear en estos formularios son expresiones booleanas en BeanShell, exactamente igual que para las [[descripciones y nombres dinámicos]]. A menudo, para escribir estas condiciones necesitaremos tener una forma de saber si una cosa está abierta o cerrada, y si está cerrada con llave o no. Para ello, podemos usar los siguientes métodos de la clase ''​Item'':​ Las condiciones que se pueden teclear en estos formularios son expresiones booleanas en BeanShell, exactamente igual que para las [[descripciones y nombres dinámicos]]. A menudo, para escribir estas condiciones necesitaremos tener una forma de saber si una cosa está abierta o cerrada, y si está cerrada con llave o no. Para ello, podemos usar los siguientes métodos de la clase ''​Item'':​
Línea 63: Línea 63:
    
 De esta forma, conseguimos una caja que funciona de la manera más normal: se puede abrir si está cerrada, se puede cerrar si está abierta, y las otras posibles combinaciones (como abrirla si ya está abierta) no funcionan y nos dan un mensaje que podemos personalizar. Sin embargo, el sistema de condiciones también nos da la posibilidad de crear cosas abribles y cerrables que funcionen de maneras más extrañas, si es necesario. De esta forma, conseguimos una caja que funciona de la manera más normal: se puede abrir si está cerrada, se puede cerrar si está abierta, y las otras posibles combinaciones (como abrirla si ya está abierta) no funcionan y nos dan un mensaje que podemos personalizar. Sin embargo, el sistema de condiciones también nos da la posibilidad de crear cosas abribles y cerrables que funcionen de maneras más extrañas, si es necesario.
 +
 +Para definir el estado inicial de un objeto abrible/​cerrable,​ podemos utilizar la propiedad ''​closed'':​ si vamos a la ficha "​Propiedades"​ del panel de nuestra caja y añadimos una propiedad ''​closed''​ con valor ''​true''​ y tiempo restante -1 (infinito), la caja comenzará estando cerrada. De lo contrario, empezará abierta hasta que alguien la cierre. ​
    
 === Llaves === === Llaves ===
  
-Si +Si además queremos que para abrir una cosa abrible o cerrable haga falta tener en posesión otro objeto (que comúnmente llamamos llave), podemos hacerlo marcando la cosa como abrible/​cerrable con llave y utilizando los otros dos formularios,​ que procesan las órdenes de tipo ''​cerrar X con Y''​ y ''​abrir X con Y''​. Éstos funcionan exactamente igual que los formularios para ''​abrir X''​ y ''​cerrar X''​ que hemos visto antes, con la salvedad de que AGE nos proporciona una manera de definir qué objeto u objetos Y son los que sirven para abrir X.
-  +
- +
    
 +Para hacer esto, creamos una relación (flecha) que vaya de X (el objeto que se abre) a Y (su llave asociada), y en el panel de la relación, donde se nos pregunta "​Relación estructural",​ marcamos "Se abre con" para expresar que X se abre con Y. Es posible definir de esta manera varias llaves que abran una misma puerta, o varias puertas que se abran con una misma llave, creando varias flechas.
 +
 +De este modo, cuando un jugador teclea una orden ''​abrir X con Y'',​ si X e Y son cosas válidas y que están al alcance del jugador, AGE hace lo siguiente:
 +
 +  - Si la cosa X no está marcada como "​Abrible con llave",​ se le dice al jugador que no tiene sentido abrir eso con llave.
 +  - Si la cosa X está marcada como "​Abrible con llave",​ se recorren las descripciones del formulario "Texto al abrir con llave",​ procediendo de forma análoga a como se hacía para el formulario "Texto al abrir";​ pero con una diferencia, que es la siguiente: si el objeto Y no es una llave válida para abrir X, sólo se considerarán las descripciones "Sin éxito";​ mientras que si el objeto Y sí es una de las llaves válidas para abrir X, se considerarán tanto las descripciones "Sin éxito"​ como aquellas "Con éxito"​.
    
 +De esta manera, AGE nos comprueba automáticamente que el jugador lleva la llave adecuada, y hace que la acción de abrir con llave no tenga éxito en caso contrario; pero seguimos pudiendo utilizar las condiciones de las descripciones para determinar si hay éxito o fracaso en el caso de que el jugador sí tenga la llave (por ejemplo, tal vez el jugador tiene la llave pero la puerta está atrancada...)
 +
 +La acción de abrir con llave se comporta de forma totalmente análoga a la acción cerrar con llave, pero usando los formularios correspondientes.
 +
 +La propiedad '​locked'​ nos permite definir inicialmente si una cosa va a estar cerrada con llave o no: poniendo dicha propiedad a '​true'​ y con temporizador -1 en la ficha de "​Propiedades"​ de una cosa, nos aseguraremos de que empiece cerrada con llave al principio del juego.
 +
 +Nótese que con el sistema de apertura y cierre con llave aquí descrito se implementa por defecto el manejo de llaves típico de los juegos americanos clásicos, en los que para abrir una puerta primero hay que "​abrirla con llave" (unlock), que corresponde sólo a girar la llave, y después "​abrirla"​ realmente (open). En el mundo hispanohablante,​ muchos autores actuales prefieren un sistema más simple en el que al poner "abrir puerta"​ ya se abra con llave automáticamente (incluyendo las acciones unlock+open) en el caso de que el jugador tenga la llave. Este sistema de apertura y cierre fácil de conseguir en AGE, simplemente ignorando las casillas y formularios de "​Abrible con llave" y "​Cerrable con llave" y definiendo las condiciones del "​abrir"​ y "​cerrar"​ normales para que miren si el jugador tiene la llave. Otras variantes se pueden definir de forma similar.
 +
 +=== Puertas ===
 +
 +Un uso común de las cosas abribles o cerrables es que sirvan como //puertas// de acceso entre una localidad y otra, de forma que haya sea necesario abrir la puerta para atravesar el camino correspondiente.
 +
 +Para definir una puerta entre dos habitaciones,​ hacemos lo siguiente:
 +
 +  * Creamos una cosa abrible/​cerrable que represente la puerta. Podemos hacerlo de forma similar a la caja vista en el ejemplo anterior, o podemos hacer cambios (como añadir la funcionalidad de abrir/​cerrar con llave) según cómo queramos que funcione la puerta.
 +  * Hacemos click en el camino o caminos entre las dos localidades y, en la ficha "​Relación estructural"​ de su panel de relación, vamos a donde pone "​Puerta:"​ y seleccionamos nuestra entidad puerta. Lo que hace esto es vincular el camino con la puerta de forma que si el jugador intenta andar por ese camino y la puerta está cerrada, fracasará en su empeño.
 +  * Añadimos la puerta a las dos localidades (mediante flechas de cada una de las localidades a la puerta). Si no hacemos esto, el camino estaría vinculado a la puerta pero ésta no sería accesible desde las localidades,​ de manera que no podríamos abrirla o cerrarla, por ejemplo.
 +
 +Aunque no es necesario para que la puerta funcione, muchas veces será conveniente no ponerle nombres para mostrar. Esto hace que no se muestre tras la descripción de las habitaciones (o sea, que no aparezcan cosas como "Aquí hay una espada, un escudo y una puerta roja", cosa que suele ser antinatural). Por supuesto, sí que es necesario que la puerta tenga algún nombre de referencia para poder manipularla.
    
 +=== Contenedores abribles y cerrables ===
    
-  ​+Otro uso común para las cosas abribles o cerrables es servir para modelar objetos que hay que abrir para sacar otros objetos de su interior, como baúles o cajones. Para hacer esto, basta con crear un objeto abrible y/o cerrable (como la caja vista anteriormente) y definirlo a la vez como contenedor, y AGE se encargará automáticamente de que sólo se pueda acceder a los objetos que contiene cuando esté abierta. En la siguiente sección, [[contenedores]],​ veremos cómo se define una cosa como contenedor.
    
    
cosas_abribles_y_cerrables.1294075717.txt.gz · Última modificación: 2011/01/03 18:28 por al-khwarizmi