Modularidad, extensiones, clones y mochila
Juan García Cortés 2020 [email protected]
@juan_garciaTIC
Índice
1. Introducción...3
2. Extensiones...3
2.1. Las nueve extensiones incluidas...5
2.2. Otras Extensiones...11
2.3. Crear Extensiones...12
2.4. Distribución de extensiones...13
3. Clones...14
3.1. Bloques...15
3.2. Actividad guiada de clones...15
4. La mochila...19
4.1. Agregar medios a la mochila...20
4.2. Videotutoriales...22
5. Bibliografía...23
1. Introducción
En este tema vamos a ver diferentes cosas que nos ayudan a extender y reutilizar proyectos. Vamos a tratar el concepto de modularidad y el sentido que ofrece no sólo en la organización de la programación sino en la reutilización de código.
Scratch 3.0 nos ofrece la utilización de extensiones para conectar con otros proyectos de forma distinta. En lugar de copiar el código permite el acceso a nuevos desarrollos de una forma integrada en la interfaz del editor.
Modularidad
La modularidad es la capacidad que tiene un sistema de ser estudiado, visto o entendido como la unión de varias partes que interactúan entre sí y que trabajan para alcanzar un objetivo común, realizando cada una de ellas una tarea necesaria para la consecución de dicho objetivo. Cada una de esas partes en que se encuentre dividido el sistema recibe el nombre de módulo. Idealmente un módulo debe poder cumplir las condiciones de caja negra, es decir, ser independiente del resto de los módulos y comunicarse con ellos (con todos o sólo con una parte) a través de unas entradas y salidas bien definidas.
Modularidad en Ciencias de la computación es la característica por la cual un programa de computador está compuesto de porciones que se conocen como módulos. El diseño estructurado es la técnica de diseño de algoritmos en que se basa la programación modular, paradigma de programación que persigue desarrollar programas modulares.
Recordemos que Scratch es un lenguaje visual y modular. Se organiza en bloques que realizan diferentes funciones. Al juntar bloques, de forma similar a cómo se encajan piezas de Lego, se crean acciones complejas que dan lugar a los programas.
2. Extensiones
Como hemos visto anteriormente en el entorno e incluso en los bloque de Lápiz y Sonido, los bloques de Lápiz, Vídeo y Música son, en la versión de Scratch 3.0, extensiones.
La extensiones de Scratch permiten conectar proyectos Scratch con hardware externo
(como LEGO WeDo o micro: bit), fuentes de información en la web (como Google Translate y Amazon Text to Speech) o bloques que permiten una funcionalidad más avanzada. Añaden una colección de bloques de comandos y de información que pueden usarse para interactuar con un dispositivo o fuente de datos en particular. Cuando se habilita una extensión, sus bloques aparecen en una ubicación con el mismo nombre que la extensión.
Las siguientes extensiones ya están disponibles con Scratch:
● Extensión musical
● Extensión del Lápiz
● Extensión de detección de vídeo
● Extensión de texto a voz
● Extensión del traductor
● Extensión Makey Makey
● Micro: extensión de bit
● Extensión LEGO MINDSTORMS EV3
● Extensión LEGO Education WeDo 2.0
● Fuerza directa y extensión de aceleración
2.1. Las nueve extensiones incluidas
● Micro:bit
Sin duda, 2018 ha sido el año de micro:bit (al menos a juzgar por su crecimiento y protagonismo en nuestro país) y este año se espera que consolide el éxito.
Scratch 3.0 incorpora la extensión de micro:bit con un conjunto de 10 bloques que permiten hacer uso de los dos botones, la inclinación de la placa, la pantalla LED y la conexión de los tres pines.
Como hemos comentado en el punto anterior, es necesario descargar el programa
Scratch Link y, además, instalar en la placa el archivo Scratch micro:bit HEX (descarga disponible aquí).
El equipo de Scratch propone tres proyectos de inicio con micro:bit: Latido de corazón, Guitarra con inclinación y Aventura oceánica.
Fuente: https://programamos.es/bienvenido-scratch-3-0/
● LEGO MINDSTORMS EV3
Otra extensión nueva es la de LEGO MINDSTORMS EV3. Probablemente conoceréis ya este kit para inventar con motores y sensores que podemos utilizar para construir robots interactivos.
Encontramos 11 bloques propios de la extensión EV3, que permiten utilizar los sensores de contacto (botón), de luz (brillo) y de ultrasonidos (distancia), los motores y el altavoz (tocar nota).
De momento no encontramos bloques para el girosensor (incluido en la versión educativa del kit) y no tengo claro si el bloque de la distancia funcionará con el sensor de infrarrojos (incluido en la versión Home); por no hablar de sensores no incluidos en el conjunto básico de EV3 como el de temperatura o ya más específicos de otras marcas. En cuanto a los actuadores, tampoco está implementado el uso de la pantalla ni de la iluminación verde, naranja, rojo de los botones del bloque EV3.
De igual modo que con micro:bit y WeDo 2.0, debemos instalar el programa Scratch Link (descarga disponible aquí).
El equipo de Scratch propone tres proyectos de inicio con LEGO MINDSTORMS EV3: Juega a baloncesto, Crear música y Tacos espaciales.
Fuente: https://programamos.es/bienvenido-scratch-3-0/
● LEGO Education WeDo 2.0
Una extensión que ya encontrábamos en la versión 2.0: la de LEGO Education WeDo 2.0. Como sabéis, es un kit de introducción para inventar que podemos usar para crear robots interactivos y otras creaciones.
En este caso, los 11 bloques de WeDo 2.0 sí permiten sacar provecho de los dos sensores (inclinación y de objetos), del motor y del color de la luz.
Igual que con micro:bit y EV3, debemos instalar el programa Scratch Link (descarga disponible aquí).
El equipo de Scratch propone tres proyectos de inicio con LEGO Education WeDo 2.0: Crea tu mascota, Mueve el zorro e Hichando el pez globo.
Fuente: https://programamos.es/bienvenido-scratch-3-0/
● Makey Makey
Ha sido una sorpresa: coincidiendo con el lanzamiento, ¡ha aparecido una extensión de Makey Makey! Pensaréis: ¿qué utilidad tiene, si lo que hace en realidad la placa es simular el teclado del ordenador? ¿No podríamos hacer lo mismo con el bloque de Eventos «al presionar la tecla espacio»?
Tenéis razón, pero si miráis bien los bloques veréis que han integrado en uno solo una secuencia determinada de instrucciones, como «al presionar en orden teclas arriba arriba abajo abajo izquierda derecha izquierda derecha». Aunque se podría hacer lo mismo encadenando bloques de control «esperar hasta que», estaremos de acuerdo que simplifica el trabajo. Ideas en la publicación Actividades con Scratch y Makey Makey.
Fuente: https://programamos.es/bienvenido-scratch-3-0/
● Música
Como novedad respecto a la versión 2.0, se han separado los bloques relativos a los sonidos de aquellos que permiten la creación musical desde la propia programación.
Así pues, con los siete bloques de la extensión de Música podemos escoger entre diferentes percusiones o instrumentos, tocar notas que van desde el C (0) hasta el
B (130)♭ y modificar el tempo.
● Lápiz
En Scratch 2.0 los bloques de Lápiz ocupaban una categoría en la paleta de bloques mientras que ahora conforman una extensión propia.
Encontramos 9 bloques, que son menos de los que había en 2.0 pero en cambio han añadido opciones: ahora vemos un desplegable que nos permite escoger el color, saturación, brillo y transparencia del lápiz.
● Sensor de vídeo
Otro gran acierto ha sido el de separar (y a su vez destacar) los cuatro bloques de vídeo de los otros de la categoría sensores.
Por las pruebas hechas en la versión beta, podemos decir que funcionan muy bien.
Estamos convencidos de que cada vez encontraremos más ejemplos y propuestas que utilicen el sensor de vídeo, como las tarjetas creadas en motivo del congreso ScratchMIT2018.
● Texto a voz
He aquí otra novedad: la extensión Text to Speech. Permite reproducir en sonido el texto escrito.
Encontramos tres bloques: decir [texto], que es donde escribiremos el texto que queramos reproducir; asignar voz a contralto, tenor, chillido, gigante o gatito; y fijar idioma a, que permite modificar la pronunciación con un acento en concreto (sin traducir el texto).
Entre los idiomas disponibles encontramos Spanish (European) pero no otros como el catalán, vasco o gallego: habrá que esperar a próximas actualizaciones.
● Traducir
Y una novedad más para acabar el repaso. La extensión Traducir incluye dos bloques: traducir [texto] al [idioma], y el que nos indica el idioma original, que coincide con el de visualización del editor.
Es decir, si queremos escribir un texto en castellano y que lo traduzca al francés por ejemplo, pero resulta que los bloques se muestran en inglés u otro idioma, tendremos que hacer clic en la esfera del mundo en el menú y seleccionar Español.
Si os fijáis en la forma del bloque Traducir veréis que hay que unirlo a otro, como los de color morado Decir o Decir durante x segundos, para que la traducción aparezca como bocadillo sobre el personaje (objeto). Por lo tanto, quedaría: decir (traducir [hola] a [francés]) durante 2 segundos.
O también podemos combinar las extensiones Texto a voz y Traducir para escuchar la traducción de un texto: ¿os imagináis utilizar Scratch para salir del paso cuando no entendemos a nuestro interlocutor extranjero?
Fuente: https://programamos.es/bienvenido-scratch-3-0/
2.2. Otras Extensiones
Las que no están incluidas y las que están por venir…:
● WeDo 1 y Picoboard
A diferencia de Scratch 2.0, la nueva versión ya no incluye la extensión para conectar el kit LEGO Education WeDo (el original) ni tampoco la placa Picoboard.
En caso que queramos hacer un proyecto con este kit tendremos que descargar Scratch 2.0 Desktop o alternativas como S2Bot.
De acuerdo con las FAQ, el equipo de Scratch publicará especificaciones y directrices para las extensiones en el futuro. Una vez disponible, podremos enviar extensiones al equipo Scratch para su consideración en la biblioteca oficial de extensiones Scratch 3.0. También proporcionarán pautas para desarrollar y distribuir extensiones «experimentales», que se pueden utilizar para crear proyectos en ordenadores individuales, pero no compartidos con la comunidad online de Scratch.
● ScratchX
La página web ScratchX era un espacio de pruebas experimental para extensiones.
Las extensiones creadas para ScratchX no son compatibles con Scratch 3.0. Una vez que las extensiones experimentales sean totalmente compatibles en Scratch, dejarán de dar soporte a ScratchX y proporcionarán a los desarrolladores y usuarios un tiempo de transición de ScratchX a la nueva plataforma de extensiones.
Por lo tanto, paciencia hasta que podamos integrar en un solo proyecto de la versión oficial de Scratch gadgets y robots tan diferentes como Arduino, Dash and Dot, Sphero, ¡o incluso canciones de Spotify! (algo que es posible en ScratchX)
Fuente: https://programamos.es/bienvenido-scratch-3-0/
2.3. Crear Extensiones
Algunas características nos permiten crear nuestras propias extensiones. Hay dos mecanismos para extender Scratch 3.0, ya sea con solicitudes HTTP o JavaScript.
● Extensiones JavaScript
Este mecanismo de extensión usa JavaScript para crear las extensiones. La documentación para crear este tipo de extensión para Scratch 3.0 se puede encontrar aquí.
● HTTP Extensions
Scratch 2.0 no podía interactuar con dispositivos de hardware directamente. En cambio, las extensiones de hardware venían con una aplicación auxiliar, una aplicación separada que el usuario necesitaba instalar y ejecutar en su equipo.
Scratch se comunicó con la aplicación auxiliar a través de solicitudes HTTP, y la aplicación auxiliar se comunicaba con el hardware.
Se redactó un documento para los desarrolladores de extensiones HTTP Scratch 2.0 que describía el protocolo para comunicarse entre las aplicaciones auxiliares de extensión de Scratch y el proceso de desarrollo de la extensión. Esta especificación aún era preliminar y se suspendió debido al lanzamiento de Scratch 3.0.
El mecanismo de extensión Scratch 2.0 todavía estaba en desarrollo, y el Equipo Scratch todavía estaba descubriendo cómo se compartirían y distribuirían las extensiones. Sin embargo, se suspendió con el lanzamiento de Scratch 3.0.
Nota: Este mecanismo trabaja sólo con el editor offline.
2.4. Distribución de extensiones
Aún se está elaborando una estrategia de distribución de extensiones. El equipo de Scratch probablemente albergará una pequeña biblioteca de extensiones "compatibles".
Los usuarios podrán explorar y seleccionar extensiones de esta biblioteca desde el editor Scratch. El equipo de Scratch comprobará la calidad y la seguridad de las extensiones compatibles. Es probable que existan criterios estrictos para incluir una extensión en la biblioteca de extensiones compatibles con el equipo Scratch, como la claridad del conjunto de comandos y la facilidad de uso, el tamaño de la audiencia potencial, la disponibilidad generalizada de cualquier hardware asociado y un compromiso a largo plazo de soporte la extensión.
Los proyectos con extensiones experimentales no se pueden compartir en el sitio web de Scratch y generarán un mensaje emergente cada vez que un usuario intente compartir un proyecto con extensiones experimentales. Los desarrolladores de extensiones pueden compartir sus extensiones distribuyendo archivos de proyecto de Scratch 2 (.sb2). Los usuarios pueden usar el comando "Archivo → Cargar desde la computadora" para importar el proyecto que usa la extensión.
3. Clones
Una de las limitaciones de Scratch 1.4 es que era necesario crear un personaje por cada entidad. Es decir, que si querías tener 10 marcianitos en un videojuego, aunque fueran todos iguales y todos tuvieran el mismo comportamiento porque ejecutaban el mismo código, necesitabas programar 1 personaje y luego hacer 9 copias. Este esquema tenía varias limitaciones, ya que hay un número máximo de personajes y además el mantenimiento y depuración del código se complica, ya que si quieres realizar cualquier cambio tienes que hacerlo en todos los personajes.
Con Scratch 2.0 es posible crear clones de un personaje. ¿Cómo funciona este mecanismo de los clones? Cada clon es una copia exacta de un personaje, de forma que:
● Cada clon ejecuta exactamente el mismo código que su personaje.
● Cada clon cuenta con los mismos componentes que su personaje (disfraces, variables, sonidos).
● Cuando se crea un clon, éste aparece exactamente en la misma posición que su personaje. La primera instrucción debe ser, por tanto, el posicionamiento del clon.
La clonación debe usarse siempre que un proyecto tenga muchos sprites u objetos similares que hagan cosas similares. Debido a que el proyecto realiza los clones en lugar del usuario, la clonación evita que el usuario tenga que hacer los mismos cambios en cada uno de los muchos sprites. Por ejemplo, la clonación puede usarse para:
● Juegos de Tower Defense
● Muchos juegos de estilo arcade
● Efectos especiales como fuegos artificiales y nieve.
● Proyectos basados en RNG
● Rastros del ratón
● Cualquier proyecto que necesite muchos sprites repetitivos.
3.1. Bloques
Hay tres bloques relacionados con la clonación, todos los cuales se encuentran en la paleta Control:
Clona el sprite seleccionado cuando yo comienzo como una clon
Cuando se clona un sprite, este bloque de sombreros se ejecuta en el clon recién creado
Elimina el clon en el que se ejecuta y detiene todos sus scripts
3.2. Actividad guiada de clones
En este juego vamos a usar tres objetos:
● Gato. Es el que dice lo que hay que hacer y también nos informa cuando hemos completado el juego.
● Círculo. Crearemos 5 clones de este objeto y el jugador tendrá que hacer clic sobre estos objetos. Lo dibujaremos directamente en Scratch.
● Figura. También crearemos varios clones de este objeto. Tendremos dos disfraces uno de «cuadrado» y otro de «rectángulo». Los dibujaremos los dos en Scratch.
Además vamos a usar:
Un mensaje llamado FINAL. Lo enviará el objeto CÍRCULO cuando se haya hecho clic en todos los círculos. Al recibirlo, el gato dirá que se ha completado el juego.
El código que vamos a introducir en el gato es el siguiente:
En la primera parte hacemos que, al empezar el juego, la variable puntos tenga el valor cero. En la segunda hacemos que al recibir el mensaje FINAL, el gato cambie su mensaje e indique que se han encontrado todos los círculos.
El código dentro de círculo será:
● En (1) primero se muestra el objeto y después se repite 5 veces la creación de un clon.
● En (2) hacemos que al empezar el clon se coloque en una posición aleatoria.
Scratch cuenta con un bloque para colocar un objeto en una posición aleatoria pero podría colocarlo encima del gato o de forma que no se viera completo. Por eso en este caso hemos preferido elegir nosotros el rango de los valores aleatorios para que se coloquen en la parte de la pantalla que queremos.
● En (3) hacemos que al hacer clic en el objeto se incremente la variable puntos.
Después comprobamos si se ha llegado a seis puntos, es decir, se ha hecho clic sobre todos los círculos. Si se ha llegado a seis, enviamos el mensaje FINAL. Por último escondemos y eliminamos el clon. Hacemos las dos cosas porque una
«funciona» con los clones y la otra con el círculo original.
El código dentro de figura:
● (1) es muy similar a lo que antes hemos comentado para el círculo, al empezar creamos 7 clones del objeto.
● (2) cuando se haga clic en el objeto, dirá durante 2 segundos que no es un círculo.
● (3) Al recibir el mensaje FINAL, se ocultará
● (4) al comenzar como clon lo colocamos en una posición aleatoria como ya hemos comentado para los círculos. Después generamos un número aleatorio y si es uno, se pone el disfraz de «cuadrado» y es dos, el de «rectángulo».
4. La mochila
La mochila es una característica del editor de proyectos Scratch 3.0 que permite a los usuarios arrastrar y soltar disfraces, sprites, sonidos y scripts de otros proyectos y luego arrastrarlos y soltarlos fácilmente en nuestro proyecto. Se puede usar para crear múltiples copias de un guión o agregar un guión a un proyecto diferente.
Se encuentra en la parte inferior de la ventana y esta característica sólo aparece en la versión online del editor de Scratch 3.0.
Por ejemplo, podemos arrastrar nuestro motor de plataformas en nuestra mochila para usarlo en otro juego de plataformas que hagamos, sin la necesidad de volver a crearlo todo. La mochila es plegable, por lo tanto, si el usuario no la usa, no desperdicia espacio.
Esta característica es diferente de las versiones anteriores, porque incluso si se descarga un proyecto, los archivos utilizados dentro de él no son fácilmente accesibles para su uso en otro proyecto, y el usuario debe exportar los medios primero.
Cuando pulsamos sobre la pestaña Mochila, se despliega el espacio para poder seleccionar cosas de ella o poder arrastrar cosas hasta ella. Con cosas nos referimos a disfraces, sprites, sonidos y scripts de otros proyectos.
4.1. Agregar medios a la mochila
Para agregar medios a la mochila, abra la mochila haciendo clic en la etiqueta "Mochila"
en la parte inferior de la pantalla. Luego arrastre un fragmento de sprite, sonido, disfraz o guión en él. No hay límite en cuanto a la cantidad de medios que puede contener la mochila. También se puede hacer clic y arrastrar los medios por la mochila para organizarlos.
En la siguiente imagen estamos arrastrando el objeto Gato a nuestra mochila:
Y quedaría listo para reutilizar en otros proyectos:
Para eliminar medios de la mochila, haga clic derecho o toque y mantenga presionado el elemento deseado y seleccione "borrar".
En la versión offline no nos aparece la gestión de la mochila pero podemos exportar los elementos y cargarlos en las diferentes partes del programa. Por ejemplo, vamos a
exportar un objeto o sprite y después lo cargaremos en otro proyecto:
A diferencia del proyecto que se guardaba con la extensión “.sb3” ahora se exporta con la extensión “.sprite3” por tratarse de un objeto y no del proyecto completo.
4.2. Videotutoriales
● https://www.youtube.com/watch?v=ZAX8TPyDBg
5. Bibliografía
● Ferrer M.A., García J. (2009) Programació senzilla d'animacions i jocs: scratch
● Ortega S. (2019) Pensamiento computacional en el aula con Scratch Recuperado de: Pensamiento computacional en el aula con Scratch
● Proyecto Scratch https://scratch.mit.edu/
● Scratch School Recuperado de: https://www.scratch.school/leccion/el-programa/
● XTEC. Materials didàctics: Curs de Scratch (actualitzats a Scratch 3.0) Recuperado de: https://projectes.xtec.cat/programacioirobotica/curs-scratch-primaria