Saltar la navegación

13. Macros

Un macro es un archivo de texto que contiene parte del código de una escena de Descartes y que interpretado por Descartes actúa como un gráfico en una escena. Los macros pueden ser utilizados en una misma escena las veces que sean necesarios y también pueden ser utilizados por escenas diferentes. Por ejemplo, tenemos un macro que dibuja cinco círculos, cada vez que llamemos al macro dibujará cinco círculos, de forma que, si queremos dibujar 15 círculos, podríamos colocar el macro 3 veces y nos ahorramos tener que poner 15 elementos tipo arco (círculos).

Por tanto, los macros se consideran objetos gráficos que contienen elementos de programación (Definiciones y Programa) y/o gráficos. Su función es que todos los elementos de los macros puedan ser utilizados desde las escenas en bloque y cuantas veces como se quiera. Desde la escena que utiliza un macro se pueden modificar las propiedades o valores de los elementos del mismo. Existen macros ya creados y otros que pueden crearse según las necesidades del usuario.

El panel de configuración específico del tipo macro tiene este aspecto:

La siguiente tabla explica los campos específicos.

rotación
Es un campo de texto cuyo contenido es una expresión o un número que será el ángulo que se girará (en sentido contrario a la agujas del reloj) el macro al dibujarse.
posición
Es un campo de texto cuyo contenido de ser del grupo (X,Y), donde X e Y son expresiones reales cualquiera que representan las abscisa y ordenada el punto inicial del macro con respecto al origen de coordenadas del espacio.

expresión

Ruta relativa y nombre en donde se ubica el macro.

nombre

Campo para hacer uso de los parámetros del macro. Dichos parámetros se escriben poniendo el nombre del macro un punto y después el nombre del parámetro.

Creando un macro. Ejemplo 1.

Vamos a crear un ejemplo de macro muy sencillo para que se entienda como se pueden crear y utilizar estos elementos. Vamos a hacer un macro que nos dibuje una flecha que vaya desde el origen de coordenadas hasta el punto (0,5), en color rojo y con un ancho de 5 y una punta de 10 y con un texto que la acompañe en el que pondremos "Flecha".

Paso 1. En una escena en blanco introducimos el elemento segmento con los parámetros que hemos indicado.

Paso 2. En editor de Descartes, en la opción Archivo elegimos, Exportar a macro de Descartes. Guardamos el archivo con el nombre mm1.txt el macro y cuyo código será:

Paso 3. En la misma carpeta donde hemos guardado el macro mm1, vamos a crear una escena en blanco, con el gestor de escenas, que guardaremos con el nombre escemacro.html

Paso 4. Vamos a introducir el macro en la escena. Gráficos, en el menú de la izquierda pulsamos + (añadir) y en la ventanita seleccionamos macro. El macro es mm1.txt y el nombre que le daremos al macro en la escena es mac1.

Paso 5. Vamos a añadir más, macros basados en mm1, usando diferentes posiciones y rotaciones.

 

Creando un macro. Ejemplo 2.

Vamos a crear un ejemplo de macro muy sencillo que contenga una variable a.

Paso 1. En una escena en blanco introducimos un texto con una variable tal y como se indica a continuación. 

Paso 2. En editor de Descartes, en la opción Archivo elegimos, Exportar a macro de Descartes. Guardamos el archivo con el nombre mm2.txt el macro y cuyo código será:

Paso 3. En la misma carpeta donde hemos guardado el macro mm2.txt (fichero del bloc de notas), vamos a crear una escena en blanco, con el gestor de escenas, que guardaremos con el nombre escemacro2.html

Paso 4. Pasamos a introducir el macro en la escena. Gráficos, en el menú de la izquierda pulsamos + (añadir) y en la ventanita seleccionamos macro. El macro es mm2.txt y el nombre que le daremos al macro en la escena es mac2.

Paso 5. Damos valor a la variable a del macro, para ello vamos a introducir una variable mac2.a (nombre del macro.nombre de la variable) con un valor, por ejemplo 6 y veremos cómo cambia el valor de la variable en el macro.

Paso 6. Vamos a insertar otro macro basado en mm2.txt, al que llamaremos mac2. Después definiremos la variable mac3.a (nombre del macro.nombre de la variable) con un valor, por ejemplo 10 y veremos como mac3.a sólo afecta al valor de a en el macro mac3, mientras que la variable mac2.a afecta a la variable a del macro mac2.

Creando un macro. Ejemplo 3.

Detallaremos los pasos necesarios para crear un macro:

a) Se crea una escena con un único espacio 2D que puede tener elementos gráficos 2D, definiciones y/o programa en un sólo espacio 2D. Por ejemplo, crearemos una escena en la que se dibuja un cuadrado con la expresión de la fórmula de su área y cuyo lado vale inicialmente 3 unidades (un espacio con un polígono, texto y elementos de programación).

b)  En editor de Descartes, en la opción Archivo elegimos, Exportar a macro de Descartes y le damos el nombre mac1. El código del macro sería:

c) Desde una escena nueva con un espacio 2D, se puede utilizar el macro tantas veces como se quiera y se pueden modificar los parámetros del macro. En nuestro ejemplo, colocaremos en una escena nueva 2 veces el macro mac1 segmento en distintas posiciones y rotaciones. Además, desde la escena hemos definido controles que nos permiten variar la longitud del lado del cuadrado.

La escena en la que hemos introducido los macros queda de la siguiente forma.

Para modificar el valor de una variable de un macro desde la escena desde la que se le llama se debe proceder de la siguiente forma.

a) El macro debe tener definida la variable, en nuestro ejemplo lado.

b) Desde la escena se puede modificar el valor de una variable del macro, llamándola de la siguiente forma: nombre del macro.nombre de la variable. En nuestro ejemplo, es macro1.lado (para variar el valor de lado del macro 1) y macro2.lado (para variar el valor de lado del macro 2. De esta forma el valor de la variable lado del macro1 será igual que el de la variable de la escena que lo llama macro1.lado y el valor de la variable lado del macro2 será igual que el de la variable de la escena que lo llama macro2.lado.

Nota importante. Cuando se usan las escenas de Descartes en el equipo local, para que los macros funcionen, se deben añadir al final del código de la escena, entre las etiquetas <script type="descartes/macro" id="nombre del macro en la escena"> y </script>. Si en el editor de escenas de Descartes está marcada la opción "macro" del submenú "Agregar al html" del menú "Opciones", el código del mismo se añadirá automáticamente al final del código de la escena. A continuación, vemos un ejemplo de tres macros añadidos al final de una escena de un juego.

Actividad

Introducir macros en escenas.