1 00:00:00,430 --> 00:00:06,150 Muy buenas, en esta práctica vamos a montar y jugar al juego Repítelo. 2 00:00:06,710 --> 00:00:08,630 Lo primero vamos a ver en qué consiste este juego. 3 00:00:09,449 --> 00:00:11,250 Para ello voy a empezar la simulación 4 00:00:11,250 --> 00:00:19,530 y vamos a ver cómo se reproduce una secuencia de encendido de luces. 5 00:00:20,589 --> 00:00:24,589 En el juego tenemos que memorizar esa secuencia y reproducirla. 6 00:00:24,589 --> 00:00:34,579 En este caso, como hemos acertado 7 00:00:34,579 --> 00:00:37,119 Se ha reproducido un sonido alegre 8 00:00:37,119 --> 00:00:40,759 Y se pone una nueva secuencia con una longitud mayor 9 00:00:40,759 --> 00:00:42,600 En el caso de que fallemos 10 00:00:42,600 --> 00:00:45,560 Se va a producir un sonido más triste 11 00:00:45,560 --> 00:00:52,340 Y se va a volver a reproducir la secuencia anterior 12 00:00:52,340 --> 00:01:10,409 Bueno, así sucesivamente 13 00:01:10,409 --> 00:01:12,510 Cada vez iríamos subiendo de nivel 14 00:01:12,510 --> 00:01:17,049 haciendo la secuencia más larga, probando la memoria del jugador. 15 00:01:18,409 --> 00:01:20,349 Bueno, pero vamos a ver cómo está hecho el código. 16 00:01:21,069 --> 00:01:24,090 En este programa vamos a utilizar cuatro constantes. 17 00:01:24,450 --> 00:01:28,329 Una sería para la longitud máxima de la secuencia, que por supuesto se puede cambiar. 18 00:01:28,950 --> 00:01:32,769 Otra para el número de luces que se incrementa en cada ronda. 19 00:01:33,390 --> 00:01:37,730 Luego tenemos dos constantes para el tiempo de encendido de los LEDs. 20 00:01:37,730 --> 00:01:57,670 Y luego pues tenemos nuestras variables asociadas a cada uno de los pines de los componentes que hemos puesto en el circuito, una variable muy importante longsec que es la longitud de la secuencia en cada uno de los niveles y por supuesto una raiz secuencia donde vamos a almacenar todos los valores de la secuencia. 21 00:01:57,670 --> 00:02:04,969 Para indicar si se enciende el led izquierdo o derecho utilizaremos dos números, el 0 para la izquierda y el 1 para la derecha. 22 00:02:05,890 --> 00:02:13,729 En el setup vamos a configurar los pines y vamos a crearnos una primera secuencia llamando a la función crear secuencia. 23 00:02:13,969 --> 00:02:26,710 Esta función la encontramos aquí y lo que hace es que recorre todo el array poniendo números aleatorios, bien 0, bien 1, a cada uno de los componentes de ese array, de esa lista. 24 00:02:26,710 --> 00:02:38,729 Volvemos para atrás. A continuación esperamos un tiempo simplemente para que no empiece enseguida a encenderse las luces, que dé tiempo al jugador a centrarse y esto es todo lo que tendríamos en el setup. 25 00:02:39,370 --> 00:02:47,610 A continuación en el loop vamos a utilizar dos funciones, reproducir secuencia y leer secuencia. Vamos a la primera, reproducir secuencia. 26 00:02:47,610 --> 00:02:55,490 Reproducir secuencia lo que hace es recorrer el array hasta la longitud correspondiente con el nivel 27 00:02:55,490 --> 00:02:59,789 Encendiendo el led correspondiente, bien el de la izquierda o bien el de la derecha 28 00:02:59,789 --> 00:03:07,430 La otra función del loop, leer secuencia, lo que vamos a ir haciendo es recoger las pulsaciones que dé el jugador 29 00:03:07,430 --> 00:03:14,069 Entonces vamos a tener un bucle de tipo while, de tal manera que esta variable que vamos a utilizar como índice del array 30 00:03:14,069 --> 00:03:24,810 Pues mientras que sea menor que la longitud de la secuencia, lo que hacemos es lo siguiente, leemos un pulsador, por ejemplo el izquierdo, y comprobamos si ese pulsador está a nivel bajo. 31 00:03:25,009 --> 00:03:37,370 Os recuerdo que estos pulsadores los estamos configurando con la resistencia de ULAB del Arduino, de tal manera que cuando pulsemos se ponen a nivel bajo, por defecto están a nivel alto. 32 00:03:37,370 --> 00:04:02,909 Entonces cuando pulsamos, cuando está a nivel bajo, lo que hacemos es primero encender el LED correspondiente, de alguna forma mostramos al usuario que la pulsación ha sido captada y luego decimos que si el valor de la secuencia se corresponde con 0, que era el de la izquierda, pues entonces incrementamos en 1 el valor del contador y si no, lo que hacemos es que le ponemos la longitud de la secuencia más 1. 33 00:04:02,909 --> 00:04:21,649 De esta forma nos aseguramos que vamos a salir del bucle while y que el valor de contador no va a valer el mismo valor que long sec. Luego veremos por qué. Bueno, hacemos lo mismo para el pulsador de la derecha, pero en este caso, claro, comprobamos si el valor es 1, que es el que se corresponde con el de la derecha. 34 00:04:21,649 --> 00:04:33,949 Y esto se estaría haciendo todo el rato hasta que el contador o bien valga la longitud máxima más 1 o bien valga el valor del onSec, que en ese momento nos saldríamos del bucle while y vendríamos a esta parte de aquí. 35 00:04:33,949 --> 00:04:45,470 En esta parte nos dice que si el contador es igual a la longitud, eso es que hemos acertado, hemos hecho bien todas las pulsaciones, si no lo que va a suceder es que va a ser mayor porque va a valer máximo más 1. 36 00:04:45,470 --> 00:04:49,829 En el caso de que sea cierta, se va a llamar a la función MelodíaGanar. 37 00:04:50,689 --> 00:04:56,089 MelodíaGanar simplemente lo que hace es reproducir una melodía alegre, como que hemos ganado. 38 00:04:56,990 --> 00:05:02,750 A continuación, llamamos a la función IncLongSeg, que esta función la tenemos por aquí. 39 00:05:03,189 --> 00:05:06,230 Lo que hace es incrementar la longitud de la secuencia. 40 00:05:06,649 --> 00:05:12,930 Y eso sí, nos aseguramos que esa longitud nunca va a ser mayor que el máximo de la longitud que hemos definido aquí. 41 00:05:12,930 --> 00:05:18,029 En caso de ser mayor, se acota, se pone como máximo ese valor 42 00:05:18,029 --> 00:05:20,790 Bueno, y por último, se crea una nueva secuencia 43 00:05:20,790 --> 00:05:24,949 Todo esto en caso de que el jugador haya acertado la secuencia 44 00:05:24,949 --> 00:05:27,629 Y si no, lo que se hace es llamar a la función melodía perder 45 00:05:27,629 --> 00:05:33,410 Que como podemos imaginar, reproduce una melodía triste, como que se ha perdido 46 00:05:33,410 --> 00:05:36,569 Bueno, si volvemos al loop, vemos que se va a estar repitiendo entonces 47 00:05:36,569 --> 00:05:38,410 Reproducir secuencia, leer secuencia 48 00:05:38,410 --> 00:05:47,430 A continuación, vamos a copiar el programa, teniendo cuidado de que seleccionamos solamente el código y no otras cosas. 49 00:05:48,610 --> 00:05:57,069 A continuación, montaremos físicamente el circuito y utilizaremos la aplicación de Arduino para programar la placa. 50 00:05:58,370 --> 00:06:05,250 Abrimos la aplicación de Arduino y a continuación eliminamos el código que haya en ella y copiamos el nuestro. 51 00:06:05,250 --> 00:06:12,350 Ahora vamos a guardar con el nombre juego, repítelo, sin tildes. 52 00:06:12,730 --> 00:06:20,649 Bien, conectaremos la placa de Arduino y nos aseguraremos de que la aplicación la ha detectado. 53 00:06:21,610 --> 00:06:32,250 Para ello, pinchamos aquí, en herramientas, nos vamos a puerto y tenemos que ver cómo efectivamente se ha detectado en uno de los puertos la placa Arduino Uno. 54 00:06:32,250 --> 00:06:38,810 1. Además, tenemos que asegurarnos de que la placa que tiene seleccionada el entorno 55 00:06:38,810 --> 00:06:43,930 de programación se corresponde con nuestra placa Arduino 1. Una vez que hemos hecho esto, 56 00:06:44,470 --> 00:06:51,370 vamos a dar al botón de subir, de tal manera que la aplicación va a mandar el programa 57 00:06:51,370 --> 00:06:58,250 a nuestra placa de Arduino. Una vez que esté mandado y el circuito conectado, podremos 58 00:06:58,250 --> 00:07:01,889 jugar con nuestro juego. Bueno, y esto es todo lo que hay que hacer.