Con Rumbo (C) 2000, 2001 El Presi (Enrique D. Bosch) Puede distribuirse libremente bajo licencia GNU GPL Primero que nada, no intenteis buscar una salida porque no la hay... :)) Corregido el bug del NorOeste, gracias a Akbarr y a Lumpi. Corregido tambíen el bug de los femeninos, ahora si que aparecen. Implemetados los muros. [revisión 3] Pseudocreación (nombrado y descripción) de los objetos de la localidad en tiempo de ejecución. [revisión 4] Generación de la descripción de objeto al entrar en localidad de modo que las descripciones de objetos no varían, permanecen. [revisión 5] Esto es la segunda parte de "Sin Rumbo", una nanoaventura que quedó la peor del primer concurso de nanos. En "Con Rumbo" realmente se da la sensación de que hay un montón de localidades distintas (32x32x32, 32768 en total) ya que las localidades se van generando pseudoaleatoriamente en tiempo de ejecución gracias al motor GLL (Generador de Locas Localidades), pero desde el punto de vista del programador solo existe un localidad que a cada llamada de su descripción consulta un diccionario de palabras para construir frases gramaticalmente correctas pero sin sentido. El código fuente de GLL es realmente bastante sencillo y aunque está escrito desde cero está influenciado por ideas de los algoritmos RACTER y ALIEN. Ah, a cada ejecución distinta de "Con Rumbo" las localidades son también distintas! En la release 2 se ha mejorado el GLL de modo que cuando se vuelve a una localidad anterior (en la que ya se había estado, o se da a la acción "mirar") esa localidad realmente permanece, no como en la release 1 que se generaba una nueva, esto se consigue utilizando el módulo de números pseudoaleatorios Aleat.h (escrito por mi casi exclusivamente para esta nano) de modo que calculo un número de semilla a partir de las coordenadas de la localidad, una única semilla para cada localidad generará siempre la misma secuencia pseudoaleatoria para esa misma localidad. De ese modo no es necesario almacenar todo lo generado sino que simplemente se vuelve a generar. Doy las gracias a Zak que fue el que me dio la idea, asi que el mérito también es en gran parte suyo. En esta release 2 también se ha ampliado el diccionario con más palabras para que no sean tan repetitivas, y aun asi siguen siendo repetitivas, para más de 32 palabras por genero/número habría que compilar para Glulx. En la release 3 se han implementado los muros, es decir, cuando se llega al límite del mapa de 32x32x32 antes no se comprobaban esos límites de modo que seguía calculando con negativos (al desbordar) y no se garantizaba que unas coordenadas tuvieran una única semilla. Ahora si se llega a los límites te topas con un muro que no te deja ir más allá. El muro se ha implementado como una pseudolocalidad, que cuando intentas salir del mapa te lleva a esa localidad "muro" que se describe y vuelve a mandar al jugador a la estancia por la que intentaba sobrepasar el límite. Esta es la release 5, que al igual que la 4 implementa la pseudocreación de objetos en tiempo de ejecución, lo que realmente se hace es que cuando se entra en la localidad, a partir de los nombres y adjetivos generados en esa localidad se nombran unos objetos predefinidos (ya que el número de objetos por localidad es fijo) y se les genera descripción con dos adjetivos más. Pero a diferencia de la 4, en la 5 los nuevos adjetivos se generan cada vez que se entra en la localidad de modo que al examinar varias veces el objeto en cuestión su descripción no varía, es decir permanece. El hecho de tener que nombrar objetos en tiempo de ejecución ha requerido cambiar las palabras de mi diccionario que eran strings a palabras de diccionario de Inform, esto supone una limitación a 9 caracteres por palabra en la máquina Z (y hay palabras en mi diccionario que superan esa longitud) asi que a partir de la release 4 el código está preparado para compilar para Glulx y además es recomendable. También seguirá compilando y funcionando para Z pero teniendo la limitación de longitud de las palabras que se truncarán. Nota: Ya que los objetos se nombran con la misma palabra de diccionario con la que se visualizan, si llevan acento o eñe deben nombrarse con ese signo de puntuación. Y recordad que lo importante de esta nano (que es un experimento) no es su resultado superficial sino más bien su implementación y las ideas subyacentes que en un futuro podrían aplicarse a aventuras "de verdad", asi que no tengais miedo en echarle un vistazo y utilizar el código fuente, sobre todo los que empezais a hacer cosas con Inform, que me consta que cada vez sois más.