Animación Título

Clase 5


En el Scratch que diseñamos en la clase anterior, vimos que el juego terminaba cuando la pelota tocaba 10 veces al gato.

El tema es que aquí hay dos fallas en el diseño del juego, una a favor de la pelota y otra a favor del gatito, veamos:

1. Situación favorable a la pelota:
La pelota tiene todo el tiempo del mundo para tocar 10 veces al gato. Esto lo determina la orden "por siempre" que se ejecuta luego de presionar la bandera verde.

2. Situación favorable al gatito:
El gato puede cometer una infracción desleal que le permitiría ganar siempre. ¿Cómo? Situándose en una esquina neutral, en la cual la pelota nunca lo toque y quedándose quietito. Además, si se desplaza con el mouse, la pelota no lo atrapa nunca.

Veamos entonces como penalizar ambas situaciones para que aquí no haya "gato encerrado":

Penalización de la situación 1
Penalizaremos a la pelota si no puede tocar al gatito 10 veces en menos de 25 segundos.
Si el gato resiste 25 segundos sin ser tocado 10 veces, ganará el juego. En cambio si la pelota toca al gato 10 veces en menos de ese tiempo, ganará la pelota.
Para ello usaremos las siguientes instrucciones dentro del objeto PELOTA:


  • Reiniciar cronómetro: pone el cronómetro en cero. Será la primera acción luego de pulsar la bandera verde. Todos los juegos arrancan en cero.  La imagen a continuación es una programación del escenario:

NOTA IMPORTANTE: COMO EL CRONOMETRO Y EL CONTADOR DE TOQUES SON ACCIONES INDEPENDIENTES DE LA PELOTA O EL GATITO, SE PONEN COMO PROGRAMACION PROPIA DEL ESCENARIO. Para ello, la única consideración que debe ser tenida en cuenta es que las variables, por ejemplo "contador de toques" deben ser declaradas como "válidas para todos los objetos" al momento de ser creadas.


  • Cronómetro: Es una variable que lleva el tiempo de juego. En nuestro caso, el límite a considerar valdrá 25 segundos.

Este último valor deberá estar siendo chequeado dentro del ciclo "por siempre" preguntando si el cronómetro vale más o menos que 25. Si vale más que 25, el juego se detiene y debe ser declarado ganador el gato. Si vale menos que cien, no se toma ninguna acción significativa, se debe dejar que el juego continúe hasta que se cumplan los 25 segundos, o hasta que la pelota toque 10 veces al gato.


Penalización de la situación 2.
Penalizaremos al gatito si se esconde en los bordes, si se escapa del tablero, o si se mueve con el mouse, en todos los casos forzándolo a moverse al centro del tablero.
Para ello usaremos las siguientes instrucciones dentro del objeto GATITO:


con estos tres sensores (familias de controles de color celeste) prácticamente impedimos que el gato se quede en un rincón o que salga del tablero o que se maneje por mouse: solo lo podrá hacer con flechas de dirección.
La orden "ir a X: -14 Y: -4" corresponde más o menos al centro del tablero. La idea es que cada vez que el jugador intente cometer alguna de las 3 deslealtades, el gato responda moviéndose al centro del tablero para que esté mas alcanzable por la pelota.

Actividades para hacer en clase:

Abrir el juego desarrollado en la clase anterior, y modificarlo según las siguientes consignas:
- Agregarle en el Escenario: a) un fondo; b) la programación descripta arriba
- Renombrar el Objeto1 como gatito; y el Objeto 2 como pelota. ¿Qué pasa con las líneas de programación que hacían mención a Objeto1 y a Objeto2 previamente?
- Agregar en la programación del gatito y la pelota las penalizaciones correspondientes.
- La pelota puede, según el ángulo inicial de rebote, adquirir un comportamiento previsible, con lo cual nuevamente, el gato si se oculta en un rincón inaccesible ganará seguro. Mejorar esta situación aplicando en el movimiento de pasos de la pelota, la orden 

- Una vez finalizado, guardar el archivo con los nombres de los alumnos, y compartir el proyecto en scratch.mit.edu, con el usuario del taller.(tallervje)

Clase 4: tomando el control de los objetos


Vimos en la clase 3 como mover distintos objetos (el perro, el gatito) en distintos escenarios, y a la vez, como cambiar el aspecto de dichos escenarios de fondo.
También vimos que tanto los sprites como los escenarios son pasibles de recibir órdenes de programación.
Pero... hasta ahora hemos movido los animalitos basándonos en instrucciones programadas sin mediar interacción con el usuario.
Sin dudas, esto es un gran avance, pero todavía insuficiente, dado que es muy común en los videojuegos que los usuarios tomen el control de los objetos moviendo algunas pocas teclas del teclado (flecha arriba, flecha abajo, flecha derecha, flecha izquierda, barra espaciadora por citar algunas) y de esa manera desplacen u orienten el sprite en la dirección que ellos quieran.

Eventos:

Un evento es un llamado de atención que alerta a un programa de computación que está ejecutándose, reclamando su atención y esperando una respuesta en consecuencia. 

Un ejemplo: 
Hay un evento al cual estamos acostumbrados, que es la Bandera Verde para empezar el programa.
Pero hay un segundo evento que lo interrumpe: al presionar la tecla Barra Espaciadora, todos los sonidos se interrumpen un momento (que suerte!) para continuar resonando luego. 

Prueben este ejemplo en su Scratch: 

Traten de que al ejecutarlo, puedan presionar las cuatro teclas de dirección (arriba, abajo, izquierda, derecha) y ver como se comporta el sprite.

Actividad 1: jugando al Pac-Man con Scratch

Teniendo como personajes un gatito y una pelota, diseñaremos el siguiente juego:
a) Objeto 1: el gato se moverá con los movimientos de flecha descriptos arriba

b) Objeto 2: Pelota; se moverá según la siguiente programación:

El objetivo será tratar de que el gatito escape de la pelota, sin dejar que lo toque.
No obstante, si la pelota lo llega a tocar, tendrá una vida menos.
El máximo de vidas del gatito es de 10.

¿Se animan?
Para ello debemos tener en cuenta además de las programaciones del gato y la pelota estos conceptos:

  1. Es necesario contar los toques que la pelota le hizo al gato. Para ello debemos:
  • Ir al objeto Pelota, y crear una variable llamada contador de toques, y fijar su valor inicial en cero

  • En el objeto Pelota, con cada toque que la pelota le haga al gato, debemos incrementar la variable en una unidad.

(ver que el toque de la pelota se refleja en la expresión "Si tocando objeto 1?" )

  • Por último si el número de toques es 10 o más, debemos abortar el juego:


En resumen, teniendo en cuenta todos los factores mencionados, el código final perteneciente a la pelota es el siguiente:

Consulta: después de jugar dos o tres veces... ¿cuál creen que será la mejor estrategia de supervivencia del gatito para que escape de la endomoniada pelota???

Bonus Track:
Para el que lo quiera visitar, les dejo mi página de Scoop.it!