inicio | documentación | contacto
Version para imprimir Imprimir
Inicio » Documentación » Unir varias localidades y moverse entre ellas

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:

ObjetoDirecciónOrden que la invoca
Al_nNorteir al norte, norte, n
Al_sSurir al sur, sur, s
Al_eEsteir al este, este, e
Al_oOesteir al oeste, oeste, o
Al_noNoroesteir al noroeste, noroeste, no
Al_neNoresteir al noreste, noreste, ne
Al_soSuroesteir al suroeste, suroeste, so
Al_seSuresteir al sureste, sureste, se
ArribaArribair arriba, arriba, ar, subir
AbajoAbajoir abajo, abajo, ab, bajar
AdentroDentroir adentro, adentro, dentro, entrar
AfueraFuerair 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:

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

Archivo: system/repositorio/!2-1-Localidades.k | Abrir el repositorio de ejemplos

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

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: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

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

Aquí hay cinco localidades unidas de distintas maneras: el Lago, el Parque, la Cabina, la Calle y el Andén.

  • Podemos ir al norte e ir al sur entre el Lago y el Parque.
  • Podemos entrar y salir entre el Lago y la Cabina (también vale ir dentro e ir fuera).
  • Podemos ir al este e ir al oeste entre el Lago y la Calle.
  • Podemos subir y bajar entre la Calle y el Metro (también vale ir arriba e ir 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 oeste o entrando con dentro o entrar. Pero para salir de la cabina, solo podemos hacerlo de una manera en vez de dos: con salir o fuera y no moviéndonos hacia el este como 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 empezarSiguiente: Nombres, sinonimos, genero y numero de los objetos
Última modificación: lunes 29 de diciembre de 2008 9:38:21
Fecha de creación: viernes 16 de mayo de 2008 12:06:08
Categorías: