Nuestro primer videojuego con Scratch (y 4): sistema de puntuación sencillo

Como sabéis, tengo en curso una serie en PItando en la que trato de crear con vosotros un videojuego muy básico en Sratch. Se divide en cuatro partes:

  1. Mover al gato en las cuatro direcciones y hacer que rebote en los bordes del escenario. Conseguido en la primera entrega.
  2. Programar la lógica de rebote para cuando el gato se encuentre con una pared roja. Conseguido en la entrega anterior.
  3. Programar la lógica de “gato encuentra a ratón”. Lo podéis leer aquí.
  4. Proponer un esquema de puntuación para poder competir con nuestros amigos.

En esta entrada de hoy, la cuarta de la serie y que cierra todos los puntos básicos del juego, vamos a recorrer ese paso que nos queda por dar, y aplicar puntuación al juego.

Si te animas, que espero que sí, sigue leyendo 🙂

Como venimos haciendo y para dar cabida a todos los lectores, tengáis o no una Raspberry Pi, haremos este ejercicio sobre el navegador web. Abre la página del editor on-line de Scratch y sube el fichero que guardábamos la semana pasada. Si no lo tienes, ¿qué mejor momento el de ahora para hacer las tres primeras partes del ejercicio? 😉

Para ello, ve al menú Archivo y pulsa la opción Subir de tu computadora.

Opción para subir un proyecto al editor Web de Scratch
Opción para subir un proyecto al editor Web de Scratch

Localiza el fichero y confirma la selección, tras lo cual el editor te pedirá confirmación en inglés (Replace contents of the current project?). Confirma la carga con el botón OK y, si todo ha ido bien, verás el editor cargado con el estado en el que lo dejamos en la ocasión pasada.

Dibuja un mapa más complejo

Para poder presentar un desafío a los jugadores, el escenario debería tener más que dos paredes. Abre el editor de escenarios de Scratch y, sobre tu escenario de pruebas, dibuja alguna pared más. Yo he dibujado este escenario:

Escenario del juego; puedes descargártelo si quieres pinchando en la imagen primero para ampliarlo.
Escenario del juego; puedes descargártelo si quieres pinchando en la imagen primero para ampliarlo.

En este escenario, el gato saldrá de la esquina inferior izquierda y el ratón estará en la esquina inferior derecha. Sube el escenario como hacíamos en el primer artículo de la serie.

Lógica de la puntuación y retoques finales al fin del juego

Lo primero que vamos a hacer una vez subido ese escenario es recolocar al gato una vez toca al ratón y, en general, como posición de partida, para que aparezca en la esquina inferior izquierda:

Gato recolocado a la esquina inferior izquierda.
Gato recolocado a la esquina inferior izquierda.

He reducido también el tiempo durante el cual el mensaje se queda en la pantalla, porque será más cómodo.

Vamos ahora a preguntar al jugador, tras esos dos segundos, si quiere volver a jugar. Para eso debemos combinar dos bloques del grupo Sensores y una condición del grupo Control:

Pregunta al usuario.
Pregunta al usuario.

Así, cuando el gato toque al ratón, recibiremos una pregunta como esta:

Podremos responder a la pregunta escribiendo "sí" (con tilde) en la caja de texto
Podremos responder a la pregunta escribiendo “sí” (con tilde) en la caja de texto

A partir de ahora ya sólo queda establecer un mecanismo de puntuación. El que os propongo en este artículo está basado en el tiempo en que tardamos en llegar al ratón. Para eso, dentro de Sensores existe un bloque llamado cronómetro que siempre está funcionando.

Lo que haré será poner el cronómetro a cero cuando el usuario comience a jugar pulsando una tecla por primera vez, y empezaré a restar los segundos transcurridos de un valor máximo, por ejemplo, 100. Es decir: se parte de 100, y se pierden puntos con el transcurso del tiempo.

Esa puntuación estará almacenada en una variable llamada puntuación, que deberemos dar de alta en el grupo Datos.

Os enseño el código completo de esta pequeña porción del ejercicio para luego explicároslo:

Puntuación y control del juego
Puntuación y control del juego

Como veis, tengo una variable que se llama jugando. Me sirve para que el juego sólo cuente puntuación a partir de que el jugador pulse una tecla por primera vez, para mover el gato. Cuando el juego está en transcurso, pongo jugando a 1; desde que el jugador gana hasta que pulsa la primera tecla tras responder sí a la pregunta que acabamos de programar, pongo jugando a 0.

También veréis que redondeo la resta con la que calculo la puntuación: lo hago porque el cronómetro tiene varios decimales de precisión, y no necesitamos tanta.

Por otro lado, antes de reiniciar el cronómetro cuando el jugador pulsa una tecla por primera vez escondo las dos variables de control, parar y jugando, para que sólo se muestre la de puntuación.

Y esto es todo, en realidad. Con este bloque tenemos ya un pequeño juego que permite a los pequeños de la casa (y a nosotros) experimentar con un entorno de programación muy interesante, como es Scratch, y también echar alguna partida. No te quedes aquí, y haz cuantas pruebas quieras. Por ejemplo, cosas que puedes intentar hacer por ti mismo son las siguientes:

  • Añade movimiento automático al ratón para que sea más difícil de capturar.
  • Haz que el gato pierda más puntos si toca una pared.
  • Coloca algún objeto extra en el escenario que, por ejemplo, permita al gato atravesar paredes.
    • Complícalo haciendo que la posición del objeto sea aleatoria, usando el bloque sacar un número al azar entre … y … del bloque operadores.

Y paro, pero podría seguir.


Espero que haya sido interesante. Podéis dejarme cualquier comentario en esta misma entrada, o enviándome cualquier comentario a tavés del formulario de contacto y la dirección de correo que allí os indico. Recordad también que PItando está tanto en twitter, como en Facebook, y en Google+ también podéis seguir mis publicaciones, incluyendo las del podcast (iTunesiVooxRSS).

 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *