miércoles, 5 de abril de 2017

Scratch. Un coche que recorre un circuito

Este ejercicio es interesante ya que vamos a hacer que un coche recorra el solo un circuito. Aprenderemos a tomar decisiones en función de unos datos (sentencia condicional).

Dibujo del coche

Empezamos creando un objeto, que será un coche visto desde arriba al que le añadiremos dos puntos que actuarán a modo de sensores, con dichos puntos podremos decidir hacia que lado debe girar el coche o bien si puede avanzar en línea recta.
Dibujo del coche:

Es importante que los dos puntos añadidos sean de distinto color y que no hayamos usado dichos colores para dibujar el coche. Con el botón de la esquina superior derecha marcamos el centro de rotación.
Dibujaremos el coche mirando hacia la derecha.

Dibujo del circuito

A la izquierda de la lista de objetos selecciono el escenario y pinto un circuito de forma que la pista tenga un color uniforme. Procuraremos que las curvas no sean demasiado cerradas y que tenga una anchura suficiente para que pueda circular el coche. Resultado:

Programar el coche

Queremos que el coche avance recto si está dentro del asfalto y que al llegar a una curva gire. Hemos dibujado dos puntos con colores distintos para saber si tiene que girar hacia la izquierda o hacia la derecha.

Si el punto amarillo deja de tocar el asfalto debemos girar hacia la derechaSi el punto verde deja de tocar el asfalto debemos girar hacia la izquierda

De la categoría control sacamos un bloque 'si-entonces-sino'.
De la categoría sensores sacamos un bloque '¿color-tocando?' y lo encajamos dentro del bloque 'si-entonces-sino'. Con el ratón pulsamos sobre el primer cuadradito y a continuación pulsamos sobre el punto del coche; pulsamos el segundo cuadradito y después pulsamos sobre el circuito.
Lo que hemos hecho hasta ahora significaría "si el color amarillo del coche toca el color gris (del asfalto) entonces....
Ahora podemos duplicar todo el bloque y cambiamos el color del primer cuadradito pulsando sobre el otro punto del coche, el verde.


En el sino metemos la orden de giro adecuada para cada caso.
Encajamos los bloques uno dentro de otro como se muestra en la siguiente imagen:
Vendría a significar: si el amarillo toca el asfalto compruebo si el verde toca el asfalto y si es que sí (ambos tocan el asfalto) avanzo en línea recta con la orden mover y si el verde no toca el asfalto giro a la izquierda.
Si el amarillo no toca el asfalto giro a la derecha.





Todo el conjunto de bloques anterior lo meto dentro de un bloque 'por siempre' para que lo repita todo el tiempo y lo engancho al evento 'al presionar bandera verde'. Para iniciar el programa pulsaré la bandera verde. En la siguiente imagen he añadido un cambio de tamaño del coche ya que era demasiado grande y órdemes mover en las curvas, para que además de girar avance un poquito.

Puede ocurrir que, a pesar de tener bien escritas las instrucciones el coche no se mueva bien, debemos comprobar que hemos seleccionado bien los colores, el tamaño del coche, los grados de giro en las curvas, los pasos que avanzamos....
Quizá tengamos que dibujar el circuito con curvas menos cerradas, ... cuestión de ir probando.
A veces resulta útil probar paso a paso. En la siguiente imagen vemos como he copiado las órdenes en el evento 'pulsar la tecla espacio' de forma que puedo ir pulsando sucesivamente la tecla espacio para ver si el coche se mueve como yo quiero.