3er paso: Interacción entre objetos (parte IV)

Al comenzar este 3º paso nos propusimos agregar un objeto al proyecto de manera de analizar fundamentalmente una cuestión: la interacción entre objetos.
Volvamos a lo nuestro. Estuvimos viendo cómo decidir si el murciélago pasa por detrás o por delante del arbolito.
Pero ¿qué pasa si va directo contra él? ¿Podremos simular esta situación de "encuentro" entre dos objetos y generar una respuesta programada para la misma?
La respuesta es afirmativa. Necesitaremos sí de más elementos que los ya conocidos para resolverla.

ACLARACIÓN

Quizás tomé un desvío demasiado largo a la hora de tratar el tema Capas, pero lo creo justificado: suele ser fuente de incertidumbre y termina generando falta de confianza en el nuevo programador el no poder percibir que puede controlar claramente el resultado de un proyecto.

Un mundo con sentidos

Estoy cansado pero no escribí mal. Quiero referirme al valor de los sentidos como medio de "contacto" con el mundo exterior… de hecho podríamos decir que sabemos del mundo externo sólo aquello que nuestros sentidos nos permiten percibir (pero dejemos el tema "el mundo y su representación" para una clase de filosofía).
Ahora bien, ¿qué pasa con Murci? Hasta ahora solo conseguimos que sea "consciente" de los límites de su mundo (el escenario), y esto gracias al hecho de que añadimos el bloque rebotar si está tocando un borde.

Si vamos a hacer que Murci interactúe con el árbol va a ser necesario "darle un sentido" para que lo perciba: necesitará de un sensor que le indique que entró en contacto con él.

Los bloques sensores en Scratch

Los bloques sensores (o reporteros) vienen en nuestro auxilio. Su función es la de informar (o reportar) sobre diversas cosas: algunas vinculadas a una acción externa (como ser si se presionó el mouse u alguna tecla), otras vinculadas a la interacción entre objetos o de ellos con los bordes del escenario, otras sobre informar sobre los estados o atributos de los objetos del programa, etc.
Una cosa importante a destacar es que los bloques sensores no generan una acción por sí mismos: siempre servirán a algún comando o instrucción que los necesite.
NOTA: Tratar de forma amplia el uso de los diversos tipos de bloques-sensores supera los alcances de este tutorial, pero tené en mente que los mismos te permitirán enriquecer y mucho tus proyectos a futuro.

¿Qué sensor usar?

Todo dependerá de lo que decidamos que pase en el momento de ocurrir la interacción entre nuestros objetos Murci y árbol. Es entonces la ocasión precisa para definir esta cuestión:

Nuestro objetivo puntual será que cuando Murci "choque" con el árbol…
[1] emita un sonido (mitad de dolor, mitad de asombro),
[2] dé media vuelta sobre sus pasos —es una forma de decir—, y
[3] reflexione para sí durante unos segundos.
  En cuanto al árbol… ni enterado de que algo pasó.

El sensor que mejor parece adaptarse a nuestra necesidad será ¿ tocando ( ) ?. Es un sensor de tipo booleano: quiere decir que nos dará sólo dos tipos de respuesta: SI o NO (o verdad / falso).
Voy a ser reiterativo en un punto: aquí estamos exponiendo una de las tantas soluciones posibles para implementar el objetivo pedido. Puede o no que nos lleve a la solución más sintética y/o elegante, pero de seguro no será la única.

Seleccionando bloques

Suele ser buena idea ir juntando en el Área de Programas los bloques que muy posiblemente sirvan a nuestro fin. Si el objetivo no es muy complicado y está bien expuesto, tendremos una aproximación muy certera sobre su elección.
A la derecha verás los que parecen ser candidatos a ser utilizados… tomate un instante para analizar el listado y compararlo con el objetivo enunciado. Cuando sea el momento de buscarlos recordá que podés guiarte por los colores.
sueltos
Les aclaro (a riesgo de parecer obvio) que estos bloques van a formar parte de algún script de Murci, así que es el objeto Murci el que tendrá que estar seleccionado, y es en su Área de Programas donde encontrarán su destino final.
Como se ve, hay algunas "caras nuevas" entre los mismos. Dediquémosles un poco de nuestra atención.

Decir o pensar

Estos bloques son muy útiles a la hora de crear animaciones: nos permitirán (mediante globos de diálogo) que nuestros objetos se expresen a la manera de una historieta animada. Al cabo de usarlos unas cuantas veces verás que su aplicación es casi intuitiva.
Sus posibilidades se han ampliado y mucho con las innovaciones introducidas en la versión 1.4 de Scratch, especialmente por su incorporación de variables string y con el manejo de cadenas de texto (cuestión que amerita otro tutorial).
decir pensar
Conviene aclarar una diferencia que puede parecer sutil pero no lo es…
  • Si usamos la opción simple del comando, el globo asociado permanecerá en escena hasta que otro lo reemplace (si queremos que desaparezcan el truco es usar el bloque decir ( ) o pensar ( )  sin texto alguno).
  • Cuando usamos la opción "cronometrada" de estos bloques (por x segundos) el globo de diálogo permanece a la vista el tiempo indicado y luego desaparece, lo que sin duda es de mucha utilidad.

La diferencia importante a destacar entre uno y otro caso es que al ejecutarse el bloque usando la opción "simple" se pasa inmediatamente a la instrucción posterior; en cambio, al usar la opción "cronometrada" la instrucción siguiente deberá esperar los x segundos indicados en el bloque antes de ser ejecutada: esto suele ser fuente de discontinuidades no deseadas.

Si no te quedó claro, tranquilo. Ya vas a ver la diferencia cuando implementemos la interacción en nuestro proyecto.

Sonidos en Scratch

Hasta ahora le pasamos de largo a todo un mundo de prestaciones que Scratch nos ofrece en el aspecto sonoro: vamos a corregir ese error. Sin exagerar, el universo de posibilidades multimediáticas que se abre con los bloques de sonido potencia la calidad y variedad de los proyectos de una manera extraordinaria (cuando puedas, echale una mirada a los proyectos de ejemplo que están en la carpeta Music and Dance).
Nuevamente: estamos tratando de acotar los alcances del tutorial, así que nos concentraremos en conocer aquello que sea estrictamente necesario como para introducir sonidos en nuestro proyecto.
add sound
Algunas de las posibilidades de sonido en Scratch necesitarán de poder sumarle a un objeto una nueva propiedad asociada. Es algo parecido a cuando le agregábamos un nuevo disfraz… pensalo como darle nuevas posibilidades de expresión.
La importancia de los sonidos en Scratch queda manifiesta en el hecho que deben manejarse desde una pestaña en particular: la pestaña Sonidos. Como estamos contemplando el uso de un sonido pre-grabado, usaremos la opción Importar.
De manera similar a cuando buscábamos imágenes, se nos presentará una ventana inquiríendonos por la búsqueda de un archivo —en este caso de sonido—. Exploremos entonces en la carpeta Human el sonido Scream-female (…espero que Murci encuentre su voz aceptable). Al aceptar la elección, una nueva voz aparecerá dentro de la lista de sonidos asociados al objeto.
Si hacemos clic en la lista desplegable del bloque tocar sonido ( ) podremos elegir ahora scream-female. En dicha lista aparecen sólo los sonidos asociados al objeto más la opción grabar, que te permitirá generar motu propio una voz para Murcisólo si tenés un micrófono (e histrionismo), se entiende—.

A consumar la idea

… y si hablábamos de respuestas ante una interacción…
Ya tenemos nuestros bloques listos para ser ensamblados. Creo que no tendrás mayores inconvenientes en asociar el objetivo propuesto con la manera de implementarlo que te muestro a la derecha.
A diferencia de otras situaciones que se pueden resolver con el uso de un solo bloque de programa, esta requirió de un poco de ingenio… pero acostumbrate a este hecho, porque a medida que sigas programando verás que es la situación más común.
ensamble

Lo que logramos hasta aquí es un "bosquejo" de solución ante un objetivo planteado. Estos bloques deben integrarse de manera efectiva con el resto de nuestro proyecto anterior, y es muy probable que nos encontremos frente al hecho de tener que hacer cambios.

Esta es la (compleja) cuestión que trataremos a continuación… tratar de ensamblar estos bloques.
Como siempre, antes de seguir asegurate de haber entendido el contenido de esta página… ¡Fuerza, que ya terminamos!
Última actualización: Febrero 22, 2014

No hay comentarios.:

Publicar un comentario

© Scratch CodeLab | D153ñ0 b454d0 3n l4 pl4n71ll4 SimpleRWD d3 Oloblogger