Historial de desarrollo de La isla del Coco

Descripción del contenido de esta página

Historial de desarrollo del proyecto de juego de simulación y aventura La isla del Coco, escrito en SBASIC (con formato SBim.

2011-08-02

Primeros cambios genéricos en el listado de la versión de Jolly Roger ya empezada a traducir para ZX Spectrum.

2011-08-13

Proyecto retomado a partir de la versión proyectada para SAM Coupé, tras comprobar que mbim, necesario para «Bandera negra» en MasterBASIC, sigue sin ser fiable incluso con la detección de errores desactivada.

Cambios genéricos en el código. Eliminación de los gráficos.

2011-08-14

Ajustes en los parámetros de procedimientos y funciones. Adaptación de estructuras de control y bucles. Conversión de los cálculos con RND.

Primera versión que el intérprete de SuperBASIC acepta sin encontrar errores sintácticos.

2011-08-15

Abandono de la compatibilidad con SuperBASIC. El desarrollo será más cómodo escribiendo solo para SBASIC y aprovechando sus ventajas.

Conversión de todas las variables numéricas de reales a enteras.

Implementación del recuento de marineros tras el embarque, para imprimir el mensaje adecuado.

Implementación de los procedimientos para los comentarios y preguntas de los marineros.

Eliminado el cálculo inicial de la matriz secundaria del mapa del mar. Bastaba usarla al revés: dejarla a cero y poner en cada ocasión un uno en los elementos correspondientes a islas visitadas.

2011-08-16

Programa cargador. Preparación de la pantalla y de la ventana (de momento una sola ventana).

Primera versión ejecutable.

Boceto del procedimiento de descripción del escenario en el mar.

Creación del informe de arrecifes.

2011-08-20

Primeras descripciones provisionales en sustitución de los dibujos.

Modificación del procedimiento de impresión de textos justificados, para que empiece en la posición actual de impresión en lugar de en una línea nueva.

Corrección de diversos errores.

2011-08-21

Funciones para convertir textos ISO 8859-1 a minúsculas.

Procedimiento para hacer un salto de línea, en sustitución de las diferentes versiones de los procedimientos de impresión especializados y con salto de línea anterior y posterior.

2011-08-22

Corrección de diversos errores, entre ellos en variables antiguas usadas en las funciones de conversión de mayúsculas y minúsculas.

Función para escribir en columnas, necesaria para los informes. Mejora del aspecto de los informes.

Implementados el recuerdo de las pistas (matriz got_clue%()) ya obtenidas y los mensajes de reacción tras obtenerlas.

Reformada la función digit%() para que devuelva un indicador si al cabo de un tiempo no se ha pulsado ninguna tecla. Esto permitirá que el juego continúe solo al azar si el jugador no interviene en la negociación, en el seguimiento de pistas y otros casos.

2011-08-23

Generalización del procedimiento rejected_offer para usarlo en diferentes contextos con diferentes mensajes.

Mensajes de advertencia al intentar moverse fuera de los límetes de la isla.

Creación de una función para justificar a la derecha campos de datos sobre un espacio de longitud especificada.

Creación de un procedimiento para indentar los párrafos independiente del que salta de línea.

Arreglo del aspecto del informe final de puntuación.

2011-08-24

Constantes para calcular el tamaño de la matriz del mapa del mar y la distribución de su contenido (arrecifes e islas). Esto permitirá cambiar el tamaño y proporción del mapa sin tocar ningún otro número.

Reorganización y perfeccionamiento de las rutinas de impresión de diálogos, para permitir más cómodamente mayor variedad de formatos.

2011-08-25

Constantes para los desplazamientos relativos de celda con que calcular los movimientos en los mapas. Esto permitirá cambiar el tamaño y proporción de los mapas sin tocar el código.

Procedimiento genérico para rellenar el borde de un mapa, usado tanto para los arrecifes del mar como para la costa de la isla.

Comando provisional para dibujar los mapas, para depuración.

Función genérica para calcular la viabilidad de un movimiento en cualquiera de los dos mapas.

2011-08-26

El procedimiento tell imprimía el espacio previo habitual (con el separador !) también al iniciar un párrafo nuevo, lo que incrementaba la indentación. Para corregir esto se usa un indicador, que se activa en el procedimiento que indenta.

Primeras pruebas para un diseño alternativo con dos ventanas separadas: panel de comandos y texto. Descartado.

Generalizado el uso del elemento cero de todas las matrices y adaptación de todos los cálculos relacionados. (Hasta ahora era ignorado, para facilitar la adaptación de los algoritmos originales de Sinclair BASIC).

Tamaño variable de los mapas.

Funciones para covertir un elemento de una matriz de un mapa en su fila y su columna.

Nuevo procedimiento sailor_asks_you extraído del código de la función sailor_asks_you%(); hace lo mismo salvo esperar una respuesta.

Nuevo procedimiento events para los eventos genéricos. Para empezar se ocupa de la tormenta, cuyo cálculo originalmente estaba mezclado en el procedimiento de lectura de comando.

Nuevo método de impresión de los comandos, con las teclas de acceso resaltadas en colores invertidos.

El programa de arranque se limita a partir de ahora a cargar las extensiones necesarias (MegaToolkit y un módulo de DIY Toolkit). Todas las funciones de preparación de pantalla, ventanas y juego de caracteres las hace el programa principal.

Mensaje variable de presentación de los comandos disponibles.

Método corregido y simplificado para calcular los arrecifes visibles. Mensajes más elaborados en el informe de arrecifes.

Función única one_of$() para elegir al azar un texto entre diez parámetros. Hasta ahora había una función para cada número de textos entre los que elegir (of_2$(), of_3$()...).

2011-08-27

Completado el método para elegir al azar los nombres de la tripulación entre todos los disponibles.

Valores mínimos para el número de escenarios de los mapas, lo que obliga a recalcular su tamaño si es preciso.

Mejorado el aspecto de los comandos, agrupados en varias líneas por temas.

Mejoras y ampliaciones en los procedimientos de impresión de diálogos y de otros textos de la narración.

2011-08-28

Los datos de los nombres de la tripulación se dividen en nombre, apellido y alias, y se amplían con el sexo. Esto permite mucha mayor flexibilidad para crear los textos y diálogos aleatorios.

Corregida la función char%(), que devolvía siempre cero.

Nuevas funciones para calcular los nombres de los tripulantes, según los datos disponibles de cada uno.

Primer borrador del código que pide los datos del capitán al iniciar cada partida.

Eliminación de la pista relativa a los poblados. La isla del tesoro estará desierta. Los nombres de los poblados se usarán para las islas visitadas.

2011-08-29

Primera versión funcional del código que pide todos los datos del capitán.

Se conservan los datos del último capitán y se da la opción de usarlos de nuevo en cada partida.

Mostradas las flechas en el panel como teclas de acceso adicionales de los comandos de movimiento.

Diversos textos ampliados.

Corregida y simplificada la función trim$(). Además, se le añade un parámetro opcional para que elimine cualquier conjunto de caracteres no deseados, no solo espacios.

Perfeccionada la función to_captain$ para construir el vocativo con cualquier parte del nombre del capitán, en orden de prioridad, y no solo con el apellido.

2011-08-30

Terminada la función que elimina espacios dobles, utilizada para la limpieza de datos introducidos por el jugador.

2011-09-03

Corregidos los procedimientos que piden los nombres del capitán. La pregunta no se repetía en los segundos intentos.

Primer borrador de la versión buena del mapa del mar (la actual era para depuración).

Función speech_start$() para crear comienzos de discurso opcionales y ajustar correctamente las mayúsculas.

Funciones the_sailor$() y the_sailor_$() para devolver al azar el cargo y nombre de un marinero al que se ha hecho referencia.

Ampliación y mejora del mensaje de confirmación de arrecifes.

Corregido un error en sailor_asks_you que impedía que se mostrara uno de los dos formatos de pregunta.

2011-09-26

Retoques.

2012-01-26

Adaptado al nuevo formato de líneas partidas y etiquetas de SBim.

2012-09-29

Retoques en comentarios de cabecera y otros.

2013-08-28

Corregido un error en #!sailor_shouts()#!, encontrado durante el desarrollo de la versión Forth.

2013-08-30

Corregida errata en nombre de variable, encontrada durante el desarrollo de la versión Forth.

Glosario

BASIC
Beginner's All-Purpose Symbolic Instruction Code (código polivalente de instrucciones simbólicas para principiantes)
SBim
S*BASIC improved (S*BASIC mejorado)