From Test-Scratch-Wiki
Un bloque apilable es un bloque diseñado para poder conectarse tanto por arriba como por abajo a otros bloques. La mayoría de bloques de Scratch son apilables, y están presentes en todas las categorías salvo en los Bloques operadores y los Bloques de PicoBoard.
Proceso de ejecución
Cuando se conectan varios bloques apilables formando un script, sus instrucciones se ejecutan en orden de arriba a abajo. Toda la pila se ejecuta en un fotograma. Por ejemplo, en el siguiente script:
reiniciar cronómetro mover (10) pasos mover (10) pasos mover (10) pasos mover (10) pasos mover (10) pasos fijar [tiempo transcurrido v] a (cronómetro)
la variable tiempo transcurrido mostrará que la pila se ha ejecutado en 0 segundos. Así pues, aunque hay cinco bloques de movimiento, no se observa al objeto hacer cinco movimientos de 10 pasos, sino un único movimiento de 50 pasos. Desde luego, un script especialmente largo puede necesitar más tiempo para ejecutarse, por lo que el tiempo transcurrido podría ser mayor.
Tomemos ahora el siguiente código. Aunque parece equivalente, solo que utilizando un bucle, esta vez no se ejecuta en un solo fotograma:
reiniciar cronómetro repetir (5) mover (10) pasos end fijar [tiempo transcurrido v] a (cronómetro)
En este caso sí se sucederán cinco movimientos independientes de 10 pasos cada uno, y el script necesitará cinco fotogramas para ejecutarse. La variable tiempo transcurrido debería mostrar 0.166 segundos (1/6, o 5 fotogramas a 30 por segundo). Esto sucede por cómo funciona el bucle de repetición: cada iteración se ejecuta en un fotograma distinto. De hecho, la única manera de evitar este comportamiento es colocando el bucle dentro de un bloque personalizado y marcando la casilla "Correr instantáneamente".
Bloques apilables con retardo
Algunos bloques apilables, desde luego, sí fuerzan una pausa antes de que el siguiente bloque se ejecute. Bien fijando un tiempo en segundos o en pulsos:
- deslizar en () segs a x: () y: ()
- decir () por () segundos
- pensar () por () segundos
- tocar tambor () durante ()
- silencio por () pulsos
- toca nota () durante ()
- esperar () segundos
o bien esperando hasta que se dé algún evento o condición:
- cambiar fondo a () y esperar
- tocar sonido () y esperar
- enviar () y esperar
- esperar hasta que ()
- preguntar () y esperar
Bloques
Hay 77 bloques apilables en Scratch:
- mover () pasos
- girar a la derecha () grados
- girar a la izquierda () grados
- apuntar en dirección ()
- apuntar hacia ()
- ir a x: () y: ()
- ir a ()
- deslizar en () segs a x: () y: ()
- cambiar x por ()
- fijar x a ()
- cambiar y por ()
- fijar y a ()
- rebotar si toca un borde
- fijar estilo de rotación ()
- decir () por () segundos
- decir ()
- pensar () por () segundos
- pensar ()
- mostrar
- esconder
- cambiar disfraz a ()
- siguiente disfraz
- cambiar fondo a ()
- cambiar fondo a () y esperar
- siguiente fondo
- cambiar efecto () por ()
- establecer efecto () a ()
- quitar efectos gráficos
- cambiar tamaño por ()
- fijar tamaño a ()%
- enviar al frente
- ir () capas hacia atrás
- tocar sonido ()
- tocar sonido () y esperar
- detener todos los sonidos
- tocar tambor () durante () pulsos
- silencio por () pulsos
- tocar nota () durante () pulsos
- fijar instrumento a ()
- cambiar volumen por ()
- fijar volumen a ()%
- cambiar tempo por ()
- fijar tempo a () ppm
- borrar
- sellar
- bajar lápiz
- subir lápiz
- fijar color de lápiz a () (color)
- cambiar color de lápiz por ()
- fijar color de lápiz a () (#)
- cambiar intensidad de lápiz por ()
- fijar intensidad de lápiz a ()
- cambiar tamaño de lápiz por ()
- fijar tamaño de lápiz a ()
- ...
Forma
Los bloques apilables están diseñados de manera similar a una pieza de puzle: la parte superior tiene una hendidura, y la inferior un saliente. Debido a esta forma, se pueden conectar unos a otros, y los scripts se pueden extender indefinidamente.
Esta forma les permite conectarse en cualquiera de estas areas:
- Debajo (después) de un bloque de inicio:
al presionar bandera verde decir [¡Hola Mundo!] por (2) segundos
- Encima o debajo de otros bloques apilables:
ir a x: (0) y: (0) bajar lápiz mostrar
- Encima (antes) de un bloque de cierre:
decir [¡Adiós!] por (2) segundos detener [este programa v]
- Dentro de un bloque C:
por siempre si <(puntos) = (0)> entonces enviar [game over v]
Uso
Dado que estos bloques se pueden apilar entre ellos, se usan prácticamente en todas partes en un script. Cualquier script debe contener al menos un bloque apilable para ser funcional. Un ejemplo:
al presionar bandera verde subir lápiz ir a x: (0) y: (0) apuntar en dirección (0 v) bajar lápiz repetir (4) mover (100) pasos girar a la derecha (90) grados end decir [¡Cuadrado terminado!] por (2) segundos detener [este programa v]
Obsérvese que los bloques apilables constituyen todos los comandos del script.