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]