1 00:00:00,280 --> 00:00:06,280 [Música de presentación] 2 00:00:09,000 --> 00:00:11,760 (Profesor) Hola. En la clase pasada, habíamos visto 3 00:00:11,840 --> 00:00:15,600 cómo controlar las colisiones de un objeto contra otro. 4 00:00:15,680 --> 00:00:18,640 En nuestro caso, del canguro contra uno de los jabalíes. 5 00:00:18,720 --> 00:00:21,560 Nos faltaba controlar las colisiones del mismo personaje, 6 00:00:21,640 --> 00:00:23,960 pero también contra el otro jabalí. ¿Se acuerdan? 7 00:00:24,040 --> 00:00:25,440 Teníamos este método, 8 00:00:25,520 --> 00:00:27,600 que controlaba el avance del personaje. 9 00:00:27,680 --> 00:00:30,200 Ahora bien, acá, como dijimos antes, 10 00:00:30,280 --> 00:00:33,120 estamos hablando solamente de uno de los jabalíes. 11 00:00:33,200 --> 00:00:36,640 ¿Podemos simplemente repetir este pedazo de código 12 00:00:36,720 --> 00:00:38,640 y poner acá al jabalí dos? 13 00:00:39,240 --> 00:00:41,040 No, eso no va a funcionar 14 00:00:41,120 --> 00:00:44,360 porque, si no se choca contra el jabalí uno, 15 00:00:45,000 --> 00:00:47,680 ya acá le estamos diciendo que avance, 16 00:00:47,760 --> 00:00:50,840 independientemente de lo que pase con el jabalí dos. 17 00:00:51,400 --> 00:00:55,480 Si no me creen, pruébenlo ustedes y fíjense qué pasa. 18 00:00:55,920 --> 00:00:59,080 Vamos a ver ahora una manera de solucionar esto. 19 00:00:59,560 --> 00:01:01,880 Para eso, lo primero que vamos a hacer 20 00:01:01,960 --> 00:01:05,040 es crear una lista de todos los posibles obstáculos 21 00:01:05,120 --> 00:01:07,120 que tiene nuestro personaje al moverse. 22 00:01:07,200 --> 00:01:09,680 Entonces, vamos a venir a "Mundo", 23 00:01:09,760 --> 00:01:12,080 vamos a venir a "propiedades" 24 00:01:12,160 --> 00:01:15,520 y vamos a crear una nueva variable, 25 00:01:15,600 --> 00:01:16,720 pero, a diferencia 26 00:01:16,800 --> 00:01:19,200 de las que habíamos estado usando hasta ahora, 27 00:01:19,280 --> 00:01:22,680 esta variable va a albergar objetos, 28 00:01:22,760 --> 00:01:24,200 pero no uno; varios. 29 00:01:24,280 --> 00:01:27,320 Entonces, vamos a usar esta opción que dice "hacer un list". 30 00:01:27,400 --> 00:01:28,960 Es una mala traducción. 31 00:01:29,040 --> 00:01:31,120 Debería decir "hacer una lista". 32 00:01:31,520 --> 00:01:34,480 La variable se va a llamar "obstáculos" 33 00:01:35,360 --> 00:01:38,160 y vamos a insertar, uno a uno, en ella 34 00:01:38,440 --> 00:01:39,480 todos los obstáculos 35 00:01:39,560 --> 00:01:44,080 contra los que queremos hacer que nuestro personaje se choque, 36 00:01:44,160 --> 00:01:45,480 que no pueda atravesarlos. 37 00:01:45,560 --> 00:01:48,200 Entonces, voy a poner acá a los dos jabalíes. 38 00:01:48,280 --> 00:01:49,360 Perfecto. 39 00:01:49,560 --> 00:01:52,240 Entonces, ya tengo mi lista de obstáculos. 40 00:01:52,440 --> 00:01:54,480 Bien, ¿qué voy a hacer ahora? 41 00:01:54,680 --> 00:01:57,960 Ahora, quiero asegurarme de que el personaje no se choque 42 00:01:58,040 --> 00:02:00,680 contra ninguno de los posibles obstáculos. 43 00:02:00,760 --> 00:02:04,280 Para eso, voy a usar una construcción que es nueva 44 00:02:04,360 --> 00:02:06,840 y es "Para todos en orden". 45 00:02:07,320 --> 00:02:11,200 Con esa construcción lo que hago es realizar una acción, 46 00:02:11,280 --> 00:02:14,640 no solamente para un objeto, sino, uno a uno, 47 00:02:14,720 --> 00:02:17,320 para todos los objetos de exactamente una lista, 48 00:02:17,400 --> 00:02:18,880 que es lo que me está preguntando. 49 00:02:18,960 --> 00:02:20,120 Entonces, para eso, 50 00:02:20,200 --> 00:02:23,680 voy a seleccionar acá la lista que creé antes. 51 00:02:23,920 --> 00:02:25,960 Entonces, miremos la construcción. 52 00:02:26,040 --> 00:02:27,200 Lo que dice es 53 00:02:27,280 --> 00:02:31,640 para toda la lista de obstáculos hacer que haya un objeto 54 00:02:31,720 --> 00:02:33,960 que se llame "elementos de obstáculos". 55 00:02:34,040 --> 00:02:36,880 Y, con él, vamos a hacer lo siguiente. 56 00:02:36,960 --> 00:02:38,080 ¿Qué vamos a hacer? 57 00:02:38,160 --> 00:02:41,560 Bueno, quiero hacer este análisis que hicimos acá 58 00:02:41,640 --> 00:02:43,640 para ver si se chocaba o no. 59 00:02:43,880 --> 00:02:45,880 Por eso lo voy a poner acá adentro, 60 00:02:45,960 --> 00:02:47,880 pero, en vez de hacerlo contra el jabalí, 61 00:02:47,960 --> 00:02:53,080 lo voy a hacer contra el objeto de la lista. 62 00:02:53,280 --> 00:02:55,000 Entonces, ¿qué va a hacer esta construcción? 63 00:02:55,080 --> 00:02:56,920 Va a ir recorriendo, uno a uno, 64 00:02:57,000 --> 00:02:59,320 los objetos de la lista de obstáculos 65 00:02:59,400 --> 00:03:03,640 y, si el personaje está a menos de un metro de ellos, 66 00:03:03,880 --> 00:03:06,520 va a declarar que está muy cerca 67 00:03:06,600 --> 00:03:08,960 y lo va a hacer ir para atrás. 68 00:03:09,320 --> 00:03:10,920 Bien, veamos cómo queda. 69 00:03:12,240 --> 00:03:14,440 El canguro se mueve hacia el jabalí, 70 00:03:14,520 --> 00:03:15,760 rebota, perfecto. 71 00:03:15,840 --> 00:03:19,920 Vamos a hacer que vaya para el otro y también, a ver, perfecto, rebota. 72 00:03:20,000 --> 00:03:24,120 Justo lo que queríamos, pero ¿y qué pasa si ahora queremos, 73 00:03:24,200 --> 00:03:25,280 no queremos que rebote, 74 00:03:25,360 --> 00:03:28,240 simplemente queremos que decida si puede pasar o no? 75 00:03:28,440 --> 00:03:30,440 ¿Cómo podemos hacer eso? 76 00:03:30,520 --> 00:03:35,800 Bueno, lo que vamos a necesitar es una condición que nos diga 77 00:03:35,880 --> 00:03:40,040 si, efectivamente, está suficientemente cerca o no, 78 00:03:40,120 --> 00:03:43,280 no de uno, sino de cualquiera de los personajes. 79 00:03:43,360 --> 00:03:47,080 Entonces, para eso, vamos a crear una variable nueva, 80 00:03:47,160 --> 00:03:48,480 de un tipo que hasta ahora no vimos, 81 00:03:48,560 --> 00:03:50,880 que son las variables "booleanas". 82 00:03:51,240 --> 00:03:52,800 Las variables booleanas 83 00:03:52,880 --> 00:03:56,200 son variables que pueden contener solo dos valores posibles. 84 00:03:56,280 --> 00:03:59,480 Pueden ser o verdaderas, que en inglés se dice "true", 85 00:03:59,800 --> 00:04:03,200 o falsas, que en inglés se dice "false". 86 00:04:03,280 --> 00:04:07,200 Se usan, justamente, para guardar condiciones. 87 00:04:07,280 --> 00:04:09,000 La condición, en este caso, 88 00:04:09,080 --> 00:04:11,880 va a ser si el personaje puede avanzar 89 00:04:11,960 --> 00:04:14,000 y así voy a llamar a la variable. 90 00:04:14,080 --> 00:04:17,600 Y va a empezar perfectamente, como dice acá, en verdadero. 91 00:04:18,000 --> 00:04:19,120 ¿Qué va a representar? 92 00:04:19,200 --> 00:04:22,480 Justamente va a representar si están dadas todas las condiciones 93 00:04:22,560 --> 00:04:24,160 para que el personaje avance. 94 00:04:24,240 --> 00:04:27,720 Entonces, si está demasiado cerca de alguno, 95 00:04:27,800 --> 00:04:30,120 yo, en ese caso, voy a decir 96 00:04:30,200 --> 00:04:32,680 que ya no es más cierto que puede avanzar. 97 00:04:32,760 --> 00:04:36,040 En este caso, es falso que puede avanzar. 98 00:04:36,800 --> 00:04:38,560 Entonces, ¿qué voy a hacer? 99 00:04:38,640 --> 00:04:40,080 Al final de todo, 100 00:04:40,160 --> 00:04:42,880 luego de haber comparado contra todos los personajes, 101 00:04:42,960 --> 00:04:45,240 me voy a fijar qué pasó con la variable. 102 00:04:45,320 --> 00:04:49,400 Si sigue siendo verdadero, recién en ese caso, 103 00:04:49,480 --> 00:04:52,800 voy a permitir que el personaje se mueva para adelante 104 00:04:52,880 --> 00:04:54,360 y, si no, no voy a hacer nada. 105 00:04:54,440 --> 00:04:56,560 Y no quiero que el personaje rebote. 106 00:04:56,640 --> 00:04:59,680 Entonces, esta instrucción ya no la necesito más. 107 00:05:00,960 --> 00:05:04,080 Analicemos un poquito el programa a ver cómo nos quedó. 108 00:05:04,320 --> 00:05:07,440 Originalmente, el personaje puede avanzar, 109 00:05:07,520 --> 00:05:09,720 es decir, la variable es verdadera. 110 00:05:09,800 --> 00:05:12,000 Luego, vamos a analizar, uno por uno, 111 00:05:12,080 --> 00:05:15,560 si está suficientemente cerca del resto de los personajes. 112 00:05:15,800 --> 00:05:19,080 Si está suficientemente cerca de alguno de ellos, 113 00:05:19,160 --> 00:05:22,040 ya decimos que es falso, que no puede avanzar. 114 00:05:22,640 --> 00:05:24,080 Cuando terminamos de analizar 115 00:05:24,160 --> 00:05:27,280 si estaba suficientemente cerca de todos los personajes, 116 00:05:27,360 --> 00:05:30,480 si en ese caso todavía la variable es verdadera, 117 00:05:30,560 --> 00:05:32,240 es decir, si puede avanzar, 118 00:05:32,320 --> 00:05:34,680 bien, ahí dejamos que se mueva adelante. 119 00:05:34,760 --> 00:05:36,320 Veamos el resultado 120 00:05:36,400 --> 00:05:40,920 y fíjense cómo nuestro canguro, esta vez, ya no rebota, 121 00:05:41,000 --> 00:05:43,200 sino que, simplemente, no avanza más. 122 00:05:43,280 --> 00:05:46,360 Y lo mismo nos pasa con el otro jabalí. 123 00:05:46,440 --> 00:05:48,160 Es como si fuese una pared. 124 00:05:48,560 --> 00:05:51,400 Los espero, entonces, la próxima clase. Hasta luego. 125 00:05:51,480 --> 00:05:57,480 [Música de cierre]