| # NODULEANDO

## Continuamos agrandando el árbol del perfil psíquico de nuestro personaje. Sabemos que la mayoría utilizará algún tipo de CREADOR y ya trataremos de ello, pero creemos que el trabajar un poco el viejo BASIC es fundamental para llegar a entender el concepto "maestro". Paciencia, pues. Y recuerda que cada chupa-chup tiene su envoltorio.

Habíamos estudiado en el capítulo anterior la forma de evitar una lluvia de IFes por medio del uso de un árbol de decisiones o diagrama de flujo.

Dimensionábamos una matriz con 36 elementos. En la que guardábamos todas nuestras condiciones, es decir, el número de nódulos a considerar y las cuatro variables para cada nódulo.

Hacíamos un pequeño y simple programita (cursi) en Basic en el cual poníamos las datas para cada nódulo.

Y armábamos la marimorena, un pequeño lío, con lo de la variable nodulonúmero, que era una simple manera de desarrollar el árbol comenzando por el nódulo 1 y, según el resultado, ir saltando hacia otros nódulos hasta alcanzar el terminal.

Suponiendo que tienes esos conceptos claros, sigamos alimentando nuestro hipotético personaje con más información.

Y como la cosa vá de jardinería, echemos un vistazo a nuestro nuevo árbol. (Ver diagrama).

También se encarga del problema de nuestro imaginario prisionero y sus comestibles/comedoras ratas (¡¡ASCO!!), pero de diferente forma.

Ahora tenemos no uno, sino tres tipos de nódulos terminales.

Por ejemplo el número 16 es un callejón sin salida o punto muerto, por lo que si, el programa aterriza allí, sólo causará una "salida" sin ejecutar ninguna acción.

El nódulo 3, en cambio, imprimirá un mensaje al ejecutar la "salida", y el 15, no sólo imprime un mensaje, sino que ejecuta varias acciones secundarias, como hacer un CLEAR de pantalla, o ajustar algunas variables que llevan información sobre el prisionero.

Llamaremos a estos tres tipos de Nódulos terminales un "Nódulo Terminal Simple" (NTS), un "Nódulo Terminal Activo" (NTA).

Pero no sólo hay diferentes tipos de Nódulos Terminales, sino que también tenemos variados tipos de Nódulos Decisorios.

El Nódulo número 2, necesitará comprobar una condición que aún no ha sido establecida. Por lo tanto debe saltar primero a una subrutina que pregunta al jugador la información necesaria. Con este Nódulo lo que hace es salir del árbol, hacer una pregunta y luego proceder de acuerdo con la respuesta. Agudamente y presa de una gran inspiración, lo llamaremos un Nódulo Pregunta (NP).

Por otra parte, el Nódulo número 14 es un Nódulo Decisorio Simple, (NDS), porque la condición que comprueba ya ha sido establecida durante el programa (en el Nódulo 1) y guardada en una variable. Por lo tanto sólo se limita a comparar y continuar de acuerdo con el valor, falso o verdadero, que encuentre.

Hay momentos, en los que querremos brincar (no seas indeciso, sí que querremos (házmelo saber...!!!) hacia más de dos Nódulos alternativos.

¿Cuándo? Supongamos que en nuestra aventura hay tres guardias zascandileando por las mazmorras, pero que no siempre están todos allí al tiempo. Entonces necesitaremos saltar hacia una de entre las tres subrutinas diferentes según el número de guardias que haya en un momento dado.

El Nódulo número 9 hace exactamente eso, y por ello será llamado, para escarnio de los demás, Nódulo de Elección Múltiple (NEM).

### SECUENCIA NUMÉRICAS

El NEM saltará hacia tres Nódulos, y estos deben estar numerados de forma secuencial porque el programa chequeará el número de guardias presentes y calculará el Nódulo a saltar añadiendo ese número al número de nódulo más bajo hacia el que se puede saltar desde esa posición, (el 13) menos uno (el 12).

Ello quiere decir que si hay un guardia, el salto será al Nódulo 13 (1+12), y si hay dos, al Nódulo 14 (2+12).

En nuestro caso sólo hay un máximo de tres guardias y el asunto parece innecesariamente complicado, pero piensa (AH, PERO PIENSAS!!!) que en el futuro lo puedes querer para muchos más factores.

Finalmente tenemos (¡cómo podía faltar!) un Nódulo Decisorio Aleatorio (NDA), en el número 7.

El NDA es similar al NEM, pero un poco más temperamental. En vez de comprobar una condición, como todo respetable Nódulo Decisorio, lo que hace el interfecto es generar un número aleatorio entre varios enteros, en nuestro caso del 1 al 3.

Siguiendo con la vieja costumbre, añade el número generado al número de nódulo más bajo hacia el cual se puede saltar desde esa posición (el 10), pero menos 1 (el 9).

Bueno, ahora tenemos siete tipos de Nódulos, en el árbol puedes ver quién es quién por sus iniciales. Haz un repaso y procura entender lo que hace cada uno. Porque ahora vamos a poner todo el tinglado a funcionar usando un muy fácil BASIC.

Aunque lo que se intenta con este artículo es tener una idea de los principios básicos de las rutinas que gobiernan la interacción de unos personajes, daremos, sólo a título de ejemplo, un listado que se encargue de aclarar y demostrar estos conceptos.

En pro de la claridad y una mayor compatibilidad con varios ordenadores utilizaremos un BASIC lo más standard posible, los usuarios de cada ordenador en particular, no dudo lo sabrán adaptar a su máquina.

Por si no es así, las líneas que pueden plantear problemas las pondremos de varias formas diferentes.

No nos cabe la menor duda de que el programa se puede mejorar mucho, porque hemos sacrificado bastantes cosas, entre ellas una mayor rapidez de ejecución, para concentrarnos en que sea lo ms claro posible.

Las siguientes notas son una explicación del bastante obvio, listado.

Primero (líneas 50 a 70) inicializamos y dimensionamos tres diferentes tipos de matriz.

Una para que contenga todos los datos de nuestro árbol, otra para las condiciones dadas por los Nódulos 1 y 8 y una tercera para los diferentes mensajes a imprimir.

Luego hay que poner todos los datos que necesita nuestro árbol.

Damos una tabla algo más que amplia que la del anterior capítulo para tenerla a mano como referencia.

1. Tipo de Nódulo:
   1. NDS (decisorio simple)
   2. NTs (terminal simple)
   3. NATA (terminal activo)
   4. NTM (terminal mensajero)
   5. NDA (decisorio aleatorio)
   6. NEM (elección múltiple)
   7. NP (pregunta)
2. Si es decisivo, poner el número de condición a comprobar.
3. Si es decisivo y la condición es falsa, poner el número de Nódulo a saltar.
4. Si es decisivo y la condición es verdadera, poner el número de Nódulo a saltar.

OJO: Si es Nódulo Activo, 2 y 3 llevarán un cero (0) y 4 el número de mensaje a imprimir.

La tabla muestra los diferentes datos que se necesitan para cada Nódulo y en el árbol se muestran los números que llevarían.

Por ejemplo, el nódulo 5 lleva al lado los números 7,4,0,5; ello indica que es una pregunta, que sale del árbol para buscar en un subproceso llamado 4 y que imprimirá el mensaje número 5.

Estos datos serán leídos en la línea 90 donde dice a(17,4).

### ALIMENTANDO EL ÁRBOL CARNÍVORO

Todo está listo en el arbolito para que lo desarrollemos.

El número de Nódulo lo llevará la variable n, entonces en la línea 1700 le decimos que empiece por el primero.

La línea 180 chequea el primer dato para ese nódulo a(n,1) para buscar de qué tipo es (terminal, mensajero o lo que sea) y el programa salta entonces a la rutina apropiada.

Si fuese un Nódulo Decisorio Simple (NDS), se iría a comprobar el valor de la condición en la matriz c apuntado por a(n,2).

De esta forma, el programa irá comprobando cada nódulo, (es lo que llamamos desarrollar el árbol), imprimendo mensajes, pidiendo entradas (inputs) y saltando hacia los nódulos requeridos, hasta que encuentre uno terminal.

Si quieres saber lo que pasa en cada momento, pon lo siguiente:

180 PRINT "ahora estamos en el nódulo";n;

y verás cómo se mueve el programa por el árbol nódulo a nódulo. Ello también te servirá para corregir cosas si hay algún fallo.

Para horribles complicaciones, esperaremos el próximo número.

Andrés R. Samudio.