¡Buenas CMAKERS!. Aquí estamos de nuevo con nuestra entrada semanal. Como muchos de vosotros ya sabéis, Scratch 3 lleva con nosotros casi un mes. Para celebrarlo hemos creado una nueva sección titulada «Aprende a programar en Scratch 3». En esta sección os enseñaremos y explicaremos programas hechos por nosotros, para que aprendáis y pongáis en práctica vuestros conocimientos sobre Scratch 3.
Para que no sea una «entrada genérica más sobre Scratch», hemos pensado en dar a todos los programas y juegos un objetivo educativo específico. En el ejemplo de hoy os enseñaremos a programar el icónico juego de Snake, pero con cambios importantes. El programa base lo hemos sacado del libro Scratch Programming Playground, un muy buen libro si estáis empezando en Scratch. Nosotros hemos modificado el código para que en cada ronda nuestra mascota D_BOT nos pregunte la suma de 2 números. Rápidamente tendremos que elegir la manzana con la suma correcta, todo ésto con cuidado de no pillarte la cola ni salirte de los márgenes. ¡Todo un reto!
El objetivo final que perseguimos es que los más peques conozcan el juego que marcó la infancia de muchos (nos incluimos..), y además practiquen el cálculo mental rápido. ¡Empecemos!
Elementos del programa
Si alguna vez habéis programado en Scratch, sabréis que el programa divide el programa en objetos (los que necesites) y el escenario. Con respecto al escenario, hemos elegido uno predeterminado de la biblioteca de Scratch 3. Con respecto a los objetos, hemos necesitado 6.
Todos los objetos menos el llamado «bordes» llevan una programación asociada. La cabeza, el cuerpo y los bordes los hemos hecho directamente con el editor de Scratch 3. Las manzanas las hemos sacado de la biblioteca. El logo de D_BOT es de nuestra cosecha.
Para no hacer la entrada interminable, os vamos a enseñar y explicar el programa completo de cada objeto. Estas entradas no pretenden ser un «paso a paso guiado» (eso daría para un libro completo).
Programación de la cabeza
Empecemos con el código de la izquierda. Al iniciar el juego nos tenemos que asegurar de lo siguiente:
- La música del juego debe empezar: La música la hemos encontrado por internet (no tiene copyright). Tenemos que utilizar la pieza de «iniciar sonido».
- La cabeza se tiene que situar en un lugar fijo de la zona de juego: Le hemos dado la posición x=100, y=-100 y mirando hacia arriba (oº).
- La puntuación acumulada debe ser cero. Para poder hacer esto primero tenemos que crear nuestra primera variable llamada «puntos», y darle el valor de cero.
Por otro lado, nuestro «game over» se dará cuando la serpiente se toque a sí misma o choque contra el área de juego. El color del borde de la serpiente y del escenario es negro, así que hemos establecido la condición que véis en la imagen. Cuando ésto ocurra, se enviará un mensaje de «game over» que activará un sonido de fin de juego, y detendrá el programa por completo.
Por último, la zona central hace referencia al control de la serpiente. Su control será a través de los cursores. Aquí os animamos a ser creativos, ya que si tenéis un Lego Mindstorms, Microbit o Makey Makey, podréis controlar la serpiente de formas muy distintas y divertidas.
Programación de las dos manzanas
Como véis, tenemos 2 objetos que parecen iguales, pero en realidad internamente son muy diferentes. Nuestro objetivo es conseguir que una manzana nos diga el resultado correcto de la suma de dos números (manzana buena), y que la otra nos diga un resultado aleatorio no muy alejado del valor correcto de la suma (manzana mala).
Empecemos por la "manzana mala". Al principio del programa podéis ver dos nuevas variables llamadas "numero1" y "numero2". Estas variables son números enteros aleatorios que cambian al empezar el juego y después de cada ronda de manzanas (su programación la veremos después en el objeto D_BOT). Después de programar esta primera línea conseguiremos que, al empezar el juego, "manzana mala" muestre un número aleatorio alejado en no más de 2 unidades, respecto del valor correcto de manzana buena.
¿Que pasa cuando la serpiente se come la manzana mala?. Pasan muchas cosas, que a continuación os detallamos:
- Un sonido nos advierte que nos hemos comido la manzana incorrecta.
- Nos restan un punto a nuestro marcador.
- Se envía un mensaje llamado "TOCADOMALO". Este mensaje sirve para que "manzana buena" detecte que nos hemos comido la mala y así cambie su valor, volviendo a mostrar otra suma diferente.
- La manzana se mueve a otro lugar aleatorio de la zona de juego.
- La manzana vuelve a mostrar otro valor aleatorio.
Por último, el bloque relativo a "TOCADOBUENO" detecta el evento en el que nos hemos comido la manzana correcta, y por tanto hace que la mala se desplace y muestre un nuevo valor aleatorio.
Pasemos a "manzana buena". Su programación es muy similar a "manzana mala". Las diferencias son las siguientes:
- En este caso se mostrará la suma correcta, por lo que no tenemos que añadir la suma de un valor aleatorio entre 1 y 2.
- Se enviará el mensaje "TOCADOBUENO" cuando nos comamos la manzana.
- Al recibir "TOCADOMALO" se moverá a un lugar aleatorio de la zona de juego y volverá a decir la suma de los dos números enteros.
Como véis, si habéis entendido como programar "manzana mala", ésto es sólo una pequeña modificación.
Programación del Cuerpo de la serpiente
El movimiento del cuerpo de la serpiente puede ser un poco difícil de entender. Si queremos, podemos crear 2 disfraces al cuerpo (no es obligatorio). Al iniciar el juego, el cuerpo coge el primer disfraz. El bloque de programación de la izquierda se dedica a crear clones del cuerpo. Estos clones siempre se dirigen a la cabeza. De esta manera conseguimos la sensación de movimiento. El bloque de la derecha se dedica a eliminar clones, y su ritmo de eliminación es inferior conforme vamos ganando puntos. Al final lo que tenemos es un balance de clones creados vs eliminados, que en función de nuestros puntos se inclina hacia una lado o hacia otro.
Como véis, en nuestro caso el número de cuerpos creados no coincide con el número de manzanas comidas. Eso sí, cada vez que sumemos puntos, será más difícil no chocar contra nosotros mismos.
Programación de D_BOT
Finalmente tenemos a nuestra querida mascota D_BOT en Scratch 3. Su misión es preguntarnos en cada ronda cuanto suman las variables "numero1" y "numero2". La pregunta que nos debemos hacer es: ¿Que eventos pueden provocar que D_BOT cambie la suma?. Os los resumimos:
- Al inicio del juego: Cuando le damos a start D_BOT da un valor aleatorio a cada variable. Cada variable la hemos restringido un poco, para que no nos den sumas muy elevadas. El juego está destinado a los peques y no queremos ponerlo aún más difícil.
- Al recibir el mensaje "TOCADOMALO". Es decir, cuando te comes una manzana mala y te equivocas.
- Al recibir el mensaje "TOCADOBUENO". Es decir, cuando te comes una manzana buena y aciertas.
El código es sencillo. Lo único que hay que tener claro son los eventos que provocan una nueva pregunta de nuestra mascota.
¡Vamos a jugar!
Siempre que hagamos un nuevo juego o aplicación, es muy interesante probarlo en profundidad para detectar errores y mejorarlo. Nosotros hemos encontrado una mejora clara, relacionada con las manzanas. Se puede dar el caso que el valor de manzana buena y mala coincida, y como son iguales en apariencia, no sabremos cual es la correcta. Esto se solucionaría restringiendo el valor de "manzana mala" a todos los valores menos los valores de "manzana buena".
Como es nuestro primer ejemplo, no hemos querido complicarlo aún más. Creemos que por ahora y al tratarse de la primera entrada de esta serie de publicaciones es suficiente. Ya habrá tiempo para complicarnos la vida..
A continuación tenéis un vídeo dónde podréis ver el funcionamiento del programa. Si queréis trabajar directamente en Scratch 3 con el código, podéis ir directamente a nuestra cuenta de Scratch 3. Esperamos que os haya gustado el juego. ¡Hasta pronto!