Unir varias localidades y moverse entre ellas
En lo minimo para empezar hemos creado un objeto jugador y una localidad. Pero para que el jugador pueda moverse, necesita sitios a donde ir y una conexión entre ellos con las que desplazarse.
Direcciones
Las localidades se unen a través de direcciones. La librería del sistema tiene doce direcciones predefinidas, aunque es posible crear más:
| Objeto | Dirección | Orden que la invoca |
|---|---|---|
Al_n | Norte | ir al norte, norte, n |
Al_s | Sur | ir al sur, sur, s |
Al_e | Este | ir al este, este, e |
Al_o | Oeste | ir al oeste, oeste, o |
Al_no | Noroeste | ir al noroeste, noroeste, no |
Al_ne | Noreste | ir al noreste, noreste, ne |
Al_so | Suroeste | ir al suroeste, suroeste, so |
Al_se | Sureste | ir al sureste, sureste, se |
Arriba | Arriba | ir arriba, arriba, ar, subir |
Abajo | Abajo | ir abajo, abajo, ab, bajar |
Adentro | Dentro | ir adentro, adentro, dentro, entrar |
Afuera | Fuera | ir afuera, afuera, fuera, salir |
Salidas
Para crear una conexión entre una localidad con otra (o consigo misma incluso) tan solo hay que crear una variable con el nombre del objeto dirección en minúsculas cuya salida queremos crear y que el valor sea la localidad de destino.
Por ejemplo, tenemos dos localidades, Habitacion y Salon y queremos unirlas de norte a sur. Primero, para conectar la habitación con el salón por el norte, debemos añadir estas dos líneas al objeto Habitacion.
object Habitacion:Localidad
...
var al_n = Salon
...
endobject
Esto solo crea la conexión desde la Habitación al Salón, pero no la vuelta. Por eso, para conectar el salón con la habitación por el sur, debemos añadir estas dos líneas al objeto Salon.
object Salon:Localidad
...
var al_s = Habitacion
...
endobject
A continuación, el ejemplo completo:
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
Ahora ya podemos usarlo como aventura y movernos libremente:
Habitación Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos. Puedes ir hacia el norte. >> n Salón Tu salón es amplio y luminoso, pero un tanto vacío y desangelado. Puedes ir hacia el sur.
Cuando estamos en cualquier localidad, al mirar (o directamente al entrar), siempre nos presentará un listado con todas las salidas disponibles. También podemos mostrar las salidas con la orden salidas o x
>> salidas Puedes ir hacia el sur.
Ejemplo avanzado
include system/default
object Main:MainBase
def start
Estado.jugador = McAventura
#jugador.accion(Mirar)
end
endobject
/**
* El objeto jugador
*/
object McAventura:Personaje dentro:Lago
nombre MS:Mc Aventura
def alMirar: "Eres Mc Aventura, el protagonista de esta historia."
endobject
/**
* Localidades
*/
object Lago:Localidad
nombre MS:Lago
var al_s = Parque
var adentro = Cabina
var al_o = Cabina
var al_e = Calle
def alMirar: "Estás en frente del lago, lleno de patitos. Hay una cabina al oeste."
endobject
object Parque:Localidad
nombre MS:Parque
var al_n = Lago
var al_s = Parque
var al_e = Parque
var al_o = Parque
def alMirar: "Estás en el parque. Es enorme y está lleno de árboles y césped."
endobject
object Cabina:Localidad
nombre MS:Cabina
var afuera = Lago
def alMirar: "Estás dentro de una cabina de teléfonos, aislado del ruido de fuera."
endobject
object Calle:Localidad
nombre MS:Calle
var al_o = Lago
var al_so = Parque
var abajo = Anden
def alMirar: "Estás en la calle, bulliciosa y llena de coches. Hay unas escaleras de Metro."
endobject
object Anden:Localidad
nombre MS:Anden
var arriba = Calle
def alMirar: "Estás dentro del Metro, en frente del anden."
endobject
Aquí hay cinco localidades unidas de distintas maneras: el Lago, el Parque, la Cabina, la Calle y el Andén.
- Podemos
ir al norteeir al surentre el Lago y el Parque. - Podemos
entrarysalirentre el Lago y la Cabina (también valeir dentroeir fuera). - Podemos
ir al esteeir al oesteentre el Lago y la Calle. - Podemos
subirybajarentre la Calle y el Metro (también valeir arribaeir abajo) - Desde el Parque, podemos ir a cualquier dirección pero todas nos llevarán del nuevo al parque, dando la sensación de que estamos "perdidos". Solo podremos salir del Parque yendo hacia el norte, que nos llevará al Lago.
- Desde el Lago, podemos meternos en la Cabina de dos maneras: moviéndonos hacia el
oesteo entrando condentrooentrar. Pero para salir de la cabina, solo podemos hacerlo de una manera en vez de dos: consalirofueray no moviéndonos hacia elestecomo podría suponerse. - Desde la Calle podemos ir hacia el Parque por el
suroeste, pero no hay conexión directa de vuelta desde el Parque a la Calle, tendremos que dar un rodeo a través del Lago.
En este ejemplo se aprecian cosas como:
- Que una conexión puede no tener salida real y llevarnos de vuelta al mismo sitio, como todas las salidas del Parque menos hacia el norte.
- Que podemos crear más de una salida que nos lleve al mismo sitio, como en el Lago, que hay dos maneras de entrar en la Cabina aunque solo hay una para salir.
- Que no es necesario que haya un camino de vuelta entre dos localidades, como desde la Calle al Parque, que se puede ir, pero no volver (hay que dar un rodeo).
Resumen
Hemos aprendido que hay doce direcciones disponibles:
Al_n,Al_s,Al_e,Al_o,Al_no,Al_ne,Al_so,Al_se,Arriba,Abajo,Adentro,Afuera
Sabemos como crear varias localidades y unirlas entre sí, creando conexiones entre ellas utilizando variables con los nombres de estas direcciones (en minúsculas).
También hemos aprendido a movernos entre ellas con las órdenes ir a direccion o directamente indicando el punto cardinal, además de subir, bajar, entrar o salir. La acción final que utilizan todas estas órdenes es la accion Ir. Hay otras 4 acciones llamadas accion Subir, accion Bajar, accion Entrar y accion Salir, todas ellas son un atajo que finalmente acaba en la accion Ir correspondiente (bajar es igual que ir abajo, luego la accion Bajar genera una llamada a la accion Ir abajo)
Y finalmente, a consultar las salidas, que se muestran automáticamente al entrar o mirar en una localidad, y directamente con la orden salidas o x, que invoca la accion Salidas.
| Anterior: Lo minimo para empezar | Siguiente: Nombres, sinonimos, genero y numero de los objetos |