Herramientas de usuario

Herramientas del sitio


cosas_abribles_y_cerrables

¡Esta es una revisión vieja del documento!


Cosas abribles y cerrables

En muchos juegos basados en texto aparecen objetos que pueden abrirse y cerrarse. Puertas, ventanas, baúles, cajas fuertes o maletas son ejemplos típicos de objetos así. El AGE proporciona soporte para crear fácilmente tales objetos, que los jugadores y criaturas pueden abrir y cerrar con o sin necesitar para ello una llave, según cómo están configurados.

Grosso modo, el sistema de cosas abribles y cerrables de AGE funciona de la siguiente manera:

  • En un momento dado, una cosa puede estar abierta o cerrada.
  • Además, una cosa que está cerrada puede estar cerrada con llave o no.
  • La orden cerrar cosa introducida por un jugador sirve para cerrar algo que está abierto, la orden abrir cosa para abrir algo que está cerrado. Es posible definir condiciones para que estos comandos funcionen o no según el criterio que se quiera (por ejemplo, una puerta que no se pueda abrir sin más porque está atrancada, etc.)
  • La orden abrir cosa con llave introducida por un jugador sirve para quitar el cerrojo a algo que está cerrado con llave, y la orden cerrar cosa con llave hace lo contrario. AGE permite definir qué cosa del juego es la llave de cada cosa abrible/cerrable con llave. Asimismo, también se pueden definir condiciones para que estos comandos funcionen o no (además de la condición implícita de tener la llave).
  • En cada cosa, se puede marcar individual e independientemente si es abrible, cerrable, abrible con llave y cerrable con llave. Esto nos permite la flexibilidad de definir, por ejemplo, algo que se puede abrir pero no se puede volver a cerrar una vez abierto; o también de obviar el sistema de llaves si no las necesitamos en nuestro juego.
  • Se pueden crear puertas especificando que una cosa es la puerta asociada a un camino, de forma que no se dejará pasar al jugador por ella cuando esté cerrada.
  • Si una cosa cerrada es un contenedor, no permitirá a los jugadores manipular lo que haya en su interior hasta que se abra.

Definiendo cosas abribles y cerrables

Para definir una cosa abrible y/o cerrable en nuestro mundo de AGE, creamos una cosa en el PUCK de forma normal (rellenando su nombre único, nombres de referencia y demás campos útiles como de costumbre) y a continuación vamos a la ficha llamada “Abrir/Cerrar” de su panel de objeto.

Lo primero que vemos en esta ficha son cuatro cuadros que podemos marcar para determinar si la cosa es “Abrible”, “Cerrable”, “Cerrable con llave” y “Abrible con llave”, respectivamente. Así, por ejemplo, si queremos crear una caja que se pueda abrir y cerrar pero que no necesite una llave para ello, marcaremos los dos primeros cuadros. Si lo que queremos es una puerta que además tenga una llave que tenga una cerradura con llave, los marcaremos todos. Es perfectamente posible marcar cualquier combinación de acciones posibles: por ejemplo, un plástico donde venga envuelto un CD de música podría modelarse como un objeto abrible, pero no cerrable (una vez que lo rompemos, no podemos devolverlo a su estado original).

A continuación vemos cuatro formularios para textos dinámicos asociadas a cada una de las cuatro acciones: abrir, cerrar, cerrar con llave y abrir con llave. Como es lógico, sólo tendremos que cubrir los campos correspondientes a las acciones que hayamos marcado como posibles en los cuadros anteriores (por ejemplo, a abrir y cerrar en el caso de la caja).

El formulario de estos textos dinámicos es análogo al de las descripciones y nombres dinámicos; pero con un añadido: además de especificar una condición y un texto asociado, también tenemos la posibilidad de marcar o no una casilla llamada “Con éxito”. Esta casilla determina si la acción correspondiente (abrir, cerrar, etc.) se llevará a cabo con éxito o no, en el caso de que la condición asociada sea cierta. De este modo, en el formulario de “Texto al abrir” no sólo estamos definiendo el texto en sí, sino también las condiciones que son necesarias para que la cosa se pueda abrir; y lo análogo para “Texto al cerrar” y el resto de formularios similares.

Más en detalle, cuando un jugador teclea una orden abrir sobre una cosa, AGE hace lo siguiente:

  1. Si la cosa no está marcada como “Abrible”, se le dice al jugador que no tiene sentido abrir eso.
  2. Si la cosa sí está marcada como “Abrible”, se recorren las entradas del formulario “Texto al abrir” comprobando si se cumple la condición de alguna de ellas. En el caso de que se cumpla la condición de una de ellas:
    1. Si esa entrada del formulario era de “Éxito” (se marcó la casilla “Con éxito”), entonces se muestra el mensaje correspondiente, y la cosa se abre.
    2. 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.

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:

/*clase Item*/ boolean isOpen ( )
/*clase Item*/ boolean isClosed ( )
/*clase Item*/ boolean isLocked ( )
/*clase Item*/ boolean isUnlocked ( )

Estos métodos nos permiten comprobar el estado de las cosas abribles/cerrables: son métodos booleanos que devuelven true si la cosa sobre la que los ejecutamos está abierta, cerrada, cerrada con llave o no cerrada con llave, respectivamente; y false de lo contrario.

cosas_abribles_y_cerrables.1294075332.txt.gz · Última modificación: 2011/01/03 18:22 por al-khwarizmi