Tiempo de reacción, ¿eres el más rápido?

Estos contenidos prácticos complementan la parte teórica de los temas 4. Fundamentos de la computación física, 5. Internet de las cosas y 6. Robótica del currículo de Computación y Robótica de 1º ESO.

Tabla de contenidos

1. Objetivo

En esta ocasión construiremos un juego que, utilizando la conductividad eléctrica de nuestro cuerpo, nos permitirá calcular el tiempo de reacción de dos jugadores para ver quién es el más rápido de la clase.

🛠 Materiales:

2. Conexiones

La instalación de nuestro circuito es muy sencilla. Conectaremos todos los componentes tal y como aparecen en la imagen, teniendo en cuenta que los 4 rectángulos blancos deben estar cubiertos con papel de aluminio.

Como puedes ver conectaremos la zona de INICIO con un cable hasta el pin P0 de la microbit. Luego conectaremos la zona de GND / TIERRA con un cable hasta el pin GND de la microbit. Y, finalmente, un cable para la zona de cada jugador, de manera que PLAYER 1 esté conectado al pin P1 y PLAYER 2 al pin P2.

3. Mecánica del juego

A la vista del montaje anterior, se puede entender cómo funcionará nuestro juego: los dos jugadores situarán una de sus manos al mismo tiempo en GND / TIERRA (siempre estarán tocando esta zona). Para activar el juego, uno de los jugadores, tocará con su segunda mano la zona de INICIO, el circuito en ese momento se cerrará y se activará un temporizador de cuenta atrás de 3 segundos que aparecerá en el panel de LEDs de la microbit. Transcurrido el contador, en una posición aleatoria del panel de LEDs se encenderá un LED; ésa será la señal de comienzo. El jugador que antes toque con su segunda mano su zona de juego será el ganador. 

Para que no haya controversia sobre quién ha pulsado antes su zona, la placa lo habrá detectado y mostrará en el panel de LEDs qué jugador ha sido y cuántos milisegundos ha tardado en hacerlo. Además, ojito porque no te puedes adelantar, si la placa detecta que te has adelantado, no funcionará y aparecerá en el panel que has sido tú

Ahora que entiendes la mecánica del juego, vamos a programarlo. Vamos a ver cómo se programaría para un sólo jugador. Después de eso, lo adaptaremos para que podáis competir entre vosotros con dos jugadores.

4. Programación

4.1. Variables

Con el objetivo de conocer la velocidad de reacción de un jugador, necesitamos crear algunas variables que almacenen ciertos datos. Primero inicializamos (fijamos o establecemos) las variables a ciertos valores de inicio. Las variables que necesitamos son: start, end y false_start. A start y end le daremos inicialmente el valor de 0, que significa que no ha pasado tiempo. Después pondremos a false las variables false_start y running, para indicar que todavía no hemos empezado.

De esta manera, cubrimos esta necesidad: el experimento de tiempo de reacción comienza y termina en ciertos instantes de tiempo basados en la reacción del jugador. El código detecta cuándo está corriendo el experimento y cuándo se ha producido un falso inicio (se ha pulsado antes de cuenta).

Ya puedes crear las variables e inicializarlas:

4.2. Pulsando aluminio

Necesitamos preparar gestores de eventos que detecten cuándo el jugador pulsa sobre GND con una mano, y pulsa sobre P0 o P1 con la otra mano, que es como se completa el circuito eléctrico. Por eso, vamos a tener dos gestores de eventos, uno al presionarse el pin P0 y otro al presionarse el pin P1:

4.3. Cuenta atrás

Necesitamos una cuenta atrás que muestre los segundos del 3 al 1 cuando se pulsa en el pin P0. Para hacer esto, simplemente mostramos el número 3, luego el 2 y luego el 1. Y después, borramos la pantalla.

4.4. Booleanos

Ahora, estableceremos nuestras variables running y false_start a false en el gestor de eventos de P0, para asegurarnos de que todo se reinicializa correctamente en los momentos clave.

4.5. Preparados, listos,……

Esos puntos suspensivos ….. es lo que vamos a programar ahora, es decir, el instante antes de que comience la competición. No podemos iniciar el juego siempre al mismo tiempo, porque los jugadores estarían preparados y a base de ensayo y error serían capaces de estimar cuándo va a empezar el juego. Esto restaría justicia a la competición. Así que, la manera que tenemos de resolver este problema, es crear un número aleatorio de milisegundos que será 1000 (1s) como mínimo y 3000 (3s) como máximo. Esto lo hacemos estableciendo una pausa de ese número de milisegundos, antes de comenzar:

4.6. ¡Ya!

Ahora sí, en este paso programaremos, ese evento que activa a los jugadores para que compitan. Como sabes, el evento que hace que los jugadores compitan es un LED que se encenderá en la microbit

Desde el punto de vista de la programación, el tiempo de reacción empezará a contar SI NO se ha detectado un inicio falso (pin P0 presionado a destiempo). Cuando el tiempo de reacción comienza (esto lo calculamos con el bloque tiempo de ejecución), le decimos a nuestra variable running que el programa está iniciado, detenemos cualquier animación que pudiera quedar pendiente, limpiamos la pantalla y encendemos un LED aleatorio.

Con esto ya tendríamos nuestro juego preparado para funcionar, pero todavía no hemos desarrollado la parte del programa que detecta las pulsaciones del jugador en su espacio de juego.

4.7. Mostrar la reacción del jugador

Vamos a añadir algo de código para detectar cuando el jugador pulsa sobre GND con una mano y P1 con la otra. Esta pieza de código detiene la circulación de corriente y paraliza el contador de tiempo. Además, añadiremos código para que la microbit lea en milisegundos la cantidad de tiempo transcurrida desde la activación del inicio del juego (paso anterior) y la finalización del mismo con la pulsación del usuario. Nuestro código también debe detectar si se ha producido un inicio válido o un inicio falso.

El panel de LEDs mostrará esta imagen si el jugador P1 ha pulsado correctamente su espacio de juego:
El panel de LEDs mostrará esta imagen si se ha producido un inicio falso, es decir, el jugador ha pulsado su espacio de juego antes de que apareciera el LED activador de inicio del juego:

Por tanto, el código del gestor de eventos al presionarse el pin P1, sería algo muy parecido a:

5. ¡Hora de volar solos!

Ahora que has entendido cómo funciona nuestro juego, estoy seguro que serás capaz de añadirle lo necesario para que podáis jugar dos jugadores, e iniciar la competición de la clase.

Pista: para saber cuál de los dos jugadores ha pulsado antes, y también cuál de los dos ha hecho un falso inicio, podrías utilizar estos dos paneles para el jugador 2:

Deja una respuesta

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