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:
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
- 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étodoalMirar. Otros sinónimos para examinar sonmirar objeto,ex objeto,x objeto.
>> examinar mechero Es un mechero de color rojo.
- También podemos cogerlos y dejarlos, con la orden
coger objetoydejar 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
inventariooi.
>> 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.
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
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 objetos | Siguiente: Recipientes y soportes |