inicio | documentación | contacto
Version para imprimir Imprimir
Inicio » Documentación » Objetos por el suelo y decorado

Objetos por el suelo y decorado

Objetos por el suelo

Ahora que ya podemos movernos entre localidades, estás se ven vacías y aburridas, ya que no hay nada con lo que interactuar. Para evitar esta monotonía, podemos crear objetos y dejarlos por el suelo para que nuestro personaje jugador se los encuentre, pueda examinarlos, cogerlos y dejarlos.

Estos objetos necesitan que se les indique la localidad donde se encontrarán al inicio de la aventura con dentro:localidad en la propia definición del objeto. Pero si queremos que un objeto aparezca inicialmente en el inventario del jugador, solo tenemos que indicarlo con dentro:jugador en la propia definición del objeto.

En el siguiente ejemplo, vamos a colocar en la habitación una cama, un mechero y un boli, por lo que estos tres objetos tendrán dentro:Habitacion en su definición. En el salón vamos a colocar una alfombra, así que lo indicaremos con dentro:Salon. Además, el jugador va a llevar encima una foto con dentro:McAventura. A cada uno de ellos vamos a darle una descripción en el método alMirar, que será mostrada cuando intentemos examinarlos. Este es el resultado:

Copiar | Descargar
include system/default

object Main:MainBase
    def start
        Estado.jugador = McAventura
        #jugador.accion(Mirar)
    end
endobject

/**
* El objeto jugador
*/
object McAventura:Personaje dentro:Habitacion
    nombre MS:Mc Aventura
    def alMirar: "Eres Mc Aventura, el protagonista de esta historia."
endobject

/**
* Localidades
*/
object Habitacion:Localidad
    nombre MS:Habitación
    var al_n = Salon
    def alMirar: "Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos."
endobject

object Salon:Localidad
    nombre MS:Salón
    var al_s = Habitacion
    def alMirar: "Tu salón es amplio y luminoso, pero un tanto vacío y desangelado."
endobject

/**
* Objetos en el inventario del jugador
*/
object Foto dentro:McAventura
    nombre FS:foto
    def alMirar: "Es una foto tuya de cuando eras pequeño."
endobject

/**
* Objetos por el suelo, en la Habitacion y el Salon
*/
object Mechero dentro:Habitacion
    nombre MS:mechero
    def alMirar: "Es un mechero de color rojo."
endobject

object Boli dentro:Habitacion
    nombre MS:boli
    def alMirar: "Es un boli de plástico, un poco gastado y mordisqueado."
endobject

object Cama dentro:Habitacion
    nombre FS:cama
    def alMirar: "Una cama pequeña y mullida."
endobject

object Alfombra dentro:Salon
    nombre FS:alfombra
    def alMirar: "Es una alfombra persa con un gran león dibujado."
endobject

Archivo: system/repositorio/!3-1-Objetos.k | Abrir el repositorio de ejemplos
  • Ahora al movernos o mirar por la habitación o el salón, el sistema nos muestra, junto con las salidas, un listado con todos los objetos que hay en esa localidad.
>> mirar
Habitación
Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos.

Puedes ir hacia el norte y fuera.
Puedes ver un mechero, un boli y una cama.
  • Si hacemos un inventario, podemos ver que llevamos la foto encima:
>> inventario
Llevas:
   una foto
  • Al examinar cada objeto (prueba con examinar cama, examinar alfombra, examinar mechero, examinar boli) nos muestra el texto que hemos añadido en el método alMirar. Otros sinónimos para examinar son mirar objeto, ex objeto, x objeto.
>> examinar mechero
Es un mechero de color rojo.
  • También podemos cogerlos y dejarlos, con la orden coger objeto y dejar objeto.
>> coger mechero
Cogido.

>> dejar mechero
Dejas el mechero por aquí.
  • Al coger un objeto, este formará parte de nuestras pertenencias o inventario. Para ver lo que tenemos utiliza la orden inventario o i.
>> coger boli
Cogido.

>> i
Llevas:
   una foto
   un boli

>> dejar todo
Dejas la foto y el boli por aquí.

>> i
No llevas nada.

Prueba a examinar todos los objetos, cogerlos y dejarlos en otro sito mientras revisas tu inventario. Para coger y dejar objetos, puedes usar la palabra clave "todo".

Componentes de localidad: Decorado

Sin embargo, además del mechero y el boli, también podemos coger la cama y la alfombra, y esto no parece muy real. Podríamos decir que la cama y la alfombra forman parte del decorado de la localidad, que son objetos que están ahí solo para ser examinados y quizá para hacer algo con ellos, pero no para ser transportados.

Para hacer que un objeto sea decorado y evitar así que pueda cogerse, debemos modificar en la línea de la definición del objeto, la relación dentro:sitio por componente:sitio, siendo sitio la localidad donde se encuentra el objeto.

Así, la cama y la alfombra, pasan a ser componentes de la localidad de esta manera:

object Cama componente:Habitacion
...
object Alfombra componente:Salon
...

Hacer que un objeto sea un componente de una localidad tiene los siguientes efectos:

  • 1: Evitar que el jugador (o cualquier personaje) pueda coger el objeto y llevárselo.
  • 2: No aparece en el listado de objetos que hay por el suelo.

Por lo demás, el objeto puede ser examinado y manipulado al igual que cualquier objeto.

Los componentes no son listados con el resto de objetos

Dado que los componentes de una localidad no se listan al entrar o mirar, si no se mencionan en algún momento, podrían pasar inadvertidos para el jugador ya que son en cierta manera "invisibles": el componente está realmente ahí, sin embargo el jugador no lo sabe.
Para evitar esto hay que indicar al jugador que el objeto existe, por ejemplo, citándolo en la descripción alMirar de la localidad. De esta manera, cuando el jugador entra o mira, puede leer que hay un objeto especial y sabrá que está ahí, por lo que podrá examinarlo o intentar cogerlo, aunque no sea posible. El jugador ya sabrá que el objeto existe.

Un ejemplo de como hacer que el jugador se entere de estos objetos sería añadir en la descripción de la habitación "Al lado hay una cama.", así el jugador cuando lea la descripción sabría que hay una cama, aunque ésta no aparezca listada con el resto de objetos del suelo. Lo mismo podemos hacer con la alfombra en el salón :

object Habitacion:Localidad
    ...
    def alMirar: "Estás en tu habitación, cálida y soleada, de donde parten\
                    tus primeros recuerdos. Al lado hay una cama."
endobject

object Salon:Localidad
    ...
    def alMirar: "Tu salón es amplio y luminoso, pero un tanto vacío y\
                    desangelado, a excepción de una gran alfombra que hay bajo tus pies."
endobject

Ahora el jugador, cuando entre en estas localidades sabrá que hay una cama y una alfombra, aunque el sistema no los liste.

Mencionar objetos en la descripción de las localidades es una práctica recomendable pero que solo tiene sentido cuando se trata de componentes, ya que son objetos que están siempre ahí, fijos. Si en la descripción de una localidad se mencionara un objeto no componente que el jugador pueda coger y llevárselo (por ejemplo, el mechero o el boli), es posible que en otro momento el jugador piense que el objeto sigue ahí porque lo ha leído en la descripción, intente cogerlo y se encuentre con que el objeto no existe porque está en otro sitio. Esto es algo que debemos evitar:

Como norma, incluiremos en las descripciones de las localidades solo objetos componentes y nunca otro tipo de objetos.

Componentes de objetos

Al igual que las localidades pueden tener componentes, los objetos normales también. Un componente es un objeto que permanece siempre "pegado" o "unido" al objeto del que forma parte. Es un objeto "oculto", en el sentido de que nunca es listado, pero siempre estará ahí, por lo que es labor del programador incluir una referencia al componente desde el objeto que lo posee, o el jugador nunca sabrá de la existencia del componente. Por ejemplo, el botón de un mando a distancia podría ser un componente del objeto mando.

object Mando dentro:Habitacion
    nombre MS:mando
    sinonimos mando a? distancia
    def alMirar: "Es un mando a distancia para activar algo. Tiene un botón."
endobject

object Boton componente:Mando
    nombre MS:botón
    def alMirar: "Es el botón del mando."
endobject

Ejemplo final

Finalmente, el ejemplo anterior mejorado, con los objetos cama y alfombra correctamente convertidos a componentes. Además, se ha modificado la habitación y el salón para que en su descripciones se mencionen la alfombra y la cama, ya que ahora no son listados junto con los objetos del suelo (como el mechero y el boli). De esta manera, el jugador podrá examinarlos, aunque no podrá cogerlos. El mechero y el boli se han dejado tal cual, por lo que serán listados y podrán ser transportados. Y se ha añadido el mando a distancia, con su componente botón.

Copiar | Descargar
include system/default

object Main:MainBase
    def start
        Estado.jugador = McAventura
        #jugador.accion(Mirar)
    end
endobject

/**
* El objeto jugador
*/
object McAventura:Personaje dentro:Habitacion
    nombre MS:Mc Aventura
    def alMirar: "Eres Mc Aventura, el protagonista de esta historia."
endobject

/**
* Localidades
*/
object Habitacion:Localidad
    nombre MS:Habitación
    var al_n = Salon
    def alMirar: "Estás en tu habitación, cálida y soleada, de donde parten\
                    tus primeros recuerdos. Al lado tuyo hay una cama."
endobject

object Salon:Localidad
    nombre MS:Salón
    var al_s = Habitacion
    def alMirar: "Tu salón es amplio y luminoso, pero un tanto vacío y\
                    desangelado, a excepción de una gran alfombra que hay bajo tus pies."
endobject

/**
* Objetos en el inventario del jugador
*/
object Foto dentro:McAventura
    nombre FS:foto
    def alMirar: "Es una foto tuya de cuando eras pequeño."
endobject

/**
* Objetos por el suelo, en la Habitacion y el Salon
*/
object Boli dentro:Habitacion
    nombre MS:boli
    def alMirar: "Es un boli de plástico, un poco gastado y mordisqueado."
endobject

object Mando dentro:Habitacion
    nombre MS:mando
    sinonimos mando a? distancia
    def alMirar: "Es un mando a distancia para activar algo. Tiene un botón."
endobject

/**
* Componentes de otros objetos
*/
object Cama componente:Habitacion
    nombre FS:cama
    def alMirar: "Una cama pequeña y mullida."
endobject

object Alfombra componente:Salon
    nombre FS:alfombra
    def alMirar: "Es una alfombra persa con un gran león dibujado."
endobject

object Boton componente:Mando
    nombre MS:botón
    def alMirar: "Es el botón del mando."
endobject

Archivo: system/repositorio/!3-2-Objetos.k | Abrir el repositorio de ejemplos

Resumen

Hemos aprendido a crear objetos que estén por el suelo en una localidad, indicándolo en su definición con dentro:localidad. Estos objetos aparecerán listados al entrar o mirar la localidad donde se encuentran, y pueden ser examinados con la orden mirar objeto, examinar objeto o ex objeto. También podremos cogerlos y dejarlos en otro sitio con coger objeto (accion Coger) y dejar objeto (accion Dejar). Para consultar los objetos que tenemos en nuestro poder (el inventario) podemos usar inventario o más corto, i (accion Inventario). Y si queremos que un objeto aparezca en el inventario de un personaje o jugador, debemos indicarlo en su definición con dentro:personaje.

Si queremos que un objeto forme parte de una localidad, inmóvil, como si fuera decorado, y que no además no sea listado al entrar ni sea posible cogerlo, debemos definir el objeto como componente:localidad. También es posible que cualquier objeto tenga un componente, el cual permanecerá siempre unido al objeto que lo posee. Dado que los componentes jamás son listados, es necesario que la descripción de la localidad donde se encuentran o el objeto que los posee los mencione de alguna manera en su descripción, si es que queremos que el jugador sepa que están ahí.

Anterior: Nombres, sinonimos, genero y numero de los objetosSiguiente: Recipientes y soportes
Última modificación: martes 20 de mayo de 2008 16:54:41
Fecha de creación: lunes 21 de abril de 2008 12:52:11
Categorías: