Lo minimo para empezar
Ahora que ya sabemos que es el modelo del mundo, vamos a crear la aventura más sencilla posible. Es decir, vamos a crear un programa que contenga los mínimos elementos necesarios para ser jugado.
Localidad + personaje jugador
Toda aventura debe contener, como mínimo, un objeto Main, un personaje que encarne al jugador y una localidad donde situarlo. Sin alguno de estos elementos, la aventura no sería jugable y fallaría al empezar. Además, es necesario utilizar el modelo de mundo, el cual viene definido en la librería system/default, que deberemos incluir también.
include system/default
object Main:MainBase
def start
Estado.jugador = McAventura
end
object
/**
* El objeto jugador
*/
object McAventura:Personaje dentro:Habitacion
nombre MS:Mc Aventura
endobject
/**
* Localidades
*/
object Habitacion:Localidad
nombre MS:Habitación
endobject
- La sentencia
includecarga la librería del sistema y, por tanto, el modelo de mundo. - El objeto Main es obligatorio. En el podemos implementar el método
start, que se ejecutará solamente una vez, al inicio de la aventura, y donde le decimos al sistema cuál de todos los objetos creados es el objeto jugador. - El objeto
McAventuraes el objeto jugador. Debe heredar de la clasePersonaje(definida en la librería), ya que esta clase contiene varios métodos para el movimiento y control de personajes en el juego. El nombreMcAventurano es obligatorio, ya que puede llamarse de cualquier otra manera. Lo que si es obligatorio es el hecho de crear un objeto personaje que encarne al propio jugador.- La posición del jugador se determina con
dentro:Habitacion. - Además, se le da un nombre al personaje. El
MS:delante del nombre indica que es Masculino Singular.
- La posición del jugador se determina con
- El objeto
Habitaciones un objeto que debe heredar de la claseLocalidad(o, al menos, tener el flaglocalidad)- Las localidades no tienen posición (no es necesario).
- También se le da un nombre a la localidad.
El identificador de los objetos o id (McAventura y Habitacion en este ejemplo) tiene que ser único, por lo que no se puede repetir o utilizar en otro objeto. Solo puede contener letras y números (pero no puede estar compuesto solo de números) y distingue entre mayúsculas y minúsculas, por lo que no es lo mismo McAventura que mcaventura o MCAVENTURA. Es necesario elegir el id de los objetos con cuidado de manera que sean claros y fáciles de recordar, pues es con los ids de los objetos con los que trabajaremos internamente para codificar los puzzles de la aventura y cualquier otra operación.
Detrás del id puede ir, opcionalmente, la clase de la que hereda el objeto separado por dos puntos :. En este ejemplo, los objetos heredan de Personaje y Localidad que son dos clases definidas en la librería, aunque podrían heredar de cualquier otra, o de ninguna.
Mejorándolo un poco
include system/default
object Main:MainBase
def start
Config.campolocalidad = "header_left1"
Config.campoquien = "header_left2"
Config.campoturno = "header_right1"
println "Mi primera aventura."
println "Version 1.0 - Primavera del 2008"
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
def alMirar: "Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos."
endobject
La función start ahora ha crecido bastante. Las tres primeras lineas sirven para configurar la plantilla y definir los campos donde se pintarán la localidad actual, el personaje con el que jugamos y el turno en la cabecera de la página. Estos campos están definidos en el skin de la aventura, que es el html donde se juega. El skin por defecto incluye estos tres campos, por eso los utilizamos en la configuración. Más adelante aprenderemos a crear skins y nuevos campos, ahora simplemente utilizamos los ya existentes en el skin por defecto.
Después, las instrucciones println se encargan de imprimir un par de línea de presentación. En este momento se puede añadir un texto de introducción más largo, el copyright de la aventura, el autor y la versión por ejemplo, que se mostrarán al iniciar la aventura por primera vez.
Finalmente, se define que objeto será el jugador y se añade la ejecución automática de la acción Mirar, que nos mostrará la descripción de la localidad actual (es decir, imprimirá Habitacion.alMirar)
Si pruebas la orden reiniciar, se destruirá la partida actual y se ejecutará de nuevo la función start.
Esto es lo que aparecerá al iniciar una partida por primera vez o reiniciar: el texto de introducción de la función start y el resultado de la acción mirar.
Mi primera aventura. Version 1.0 - Primavera del 2008 Habitación Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos. Salidas posibles: ninguna.
Es interesante que el jugador y la localidad principal tengan una descripción. El evento alMirar del objeto McAventura devuelve el texto que se debe mostrar con la orden examinate.
>> examinate Eres Mc Aventura, el protagonista de esta historia.
Y el evento alMirar del objeto Habitacion devuelve el texto que se mostrará con la orden mirar o con m.
>> m Habitación Estás en tu habitación, cálida y soleada, de donde parten tus primeros recuerdos. Salidas posibles: ninguna.
Resumen
Ahora sabemos que lo básico para comenzar una aventura es crear un objeto jugador y una localidad y decirle al sistema quién es el jugador actual. El método start sirve para configurar la aventura y se ejecuta sólo una vez en cada nueva partida, por lo que podemos imprimir un mensaje de introducción o presentación.
Todos los objetos deben tener un nombre, incluido las localidades y el personaje jugador. Cada nombre debe especificar antes su sexo y genero con MS: masculino singular, FS: femenino singular, MP: masculino plural o FP: femenino plural justo antes del nombre, por ejemplo nombre MS:McAventura.
El objeto jugador debe heredar de la clase Personaje y las localidades de la clase Localidad.
También hemos aprendido las siguientes ordenes y acciones:
mirarom, que invoca la accion Mirar, y que nos muestra la descripción de la localidad actual que se encuentra en el eventoalMirar.examinate,mirateoexte, que invoca la accion Examinar (siendo el objeto de esta acción automáticamente el propio jugador) y que nos muestra también la descripción de nuestro personaje, en el eventoalMirar.reiniciar, que destruye la partida actual e inicia una nueva, invocando de nuevo a la funciónstart.
| Inicio | Siguiente: Unir varias localidades y moverse entre ellas |