‫Hola y bienvenidos a esta conferencia.
‫Vamos a aprender cómo podemos ejecutar una pieza de código un número variable de veces para que
‫podamos imprimir todos los objetos que se superponen dentro de esta área, este componente desencadenante.
‫Así que pueden ver aquí que cuando estamos los dos, yo estoy parado adentro y también hay una gárgola.
‫Está imprimiendo tanto el nombre de las gárgolas como el nombre de los planos del jugador.
‫Vamos a sumergirnos y ver cómo se hace esto.
‫Ahora, el problema con nuestro código aquí es que nuestra matriz de actores puede tener mucho más que un solo
‫actor, y si queremos que muestre todos los actores superpuestos, queremos hacer algo con todos
‫esos actores.
‫Necesitamos poder ejecutar el código.
‫Sería muy ineficiente escribir una sentencia if para el caso en el que tenemos dos,
‫tres, cuatro o cinco, etc. Y ciertamente nunca detectaría todos los casos porque tenemos una cantidad limitada
‫de líneas en nuestro archivo.
‫Así que la forma en que lidiamos con esto, queremos repetir un fragmento de código varias veces, pero un número de veces que en
‫realidad no sabemos.
‫Cuando estamos compilando el código, necesitamos reemplazar nuestra declaración if, donde la declaración if esencialmente dice,
‫debo ejecutar este código o no con algo que diga, debo ejecutar este código o debo ejecutarlo
‫muchas veces, dos veces, tres veces, cuatro veces, etc.?
‫La forma en que hacemos esto es con algo llamado declaración salvaje.
‫Ahora está construido de manera muy parecida a una declaración if.
‫Entonces, mientras coloca algún tipo de valor booleano dentro de los paréntesis, y luego tenemos algunas llaves y dentro
‫de las llaves, un bloque de código que seguirá ejecutándose una y
‫otra vez hasta que la condición en nuestra declaración salvaje se vuelva falsa. .
‫Por eso se llama mientras.
‫Entonces, si bien esto es cierto, ejecute este código.
‫Entonces, es un poco como una declaración if en la que a veces puede que no ejecute el código
‫en absoluto, pero a diferencia de su declaración que solo puede ejecutar un fragmento de código una vez, la declaración
‫salvaje básicamente podría seguir ejecutándolo para siempre si este valor booleano nunca se convierte en falso.
‫Entonces, ¿por qué es esto útil?
‫Bueno, podríamos crear un int 32 y llamarlo índice y comenzar desde cero.
‫Y luego, cada vez que pasamos por el cuerpo de este bucle salvaje, aumentamos el valor almacenado en ese índice.
‫Entonces podríamos decir que índice es igual a índice más uno.
‫Ahora, en C++, hay una forma abreviada de hacer esto en lugar de tener que hacer índice más uno
‫como este, haces más más índice, y eso solo agrega uno a lo que sea que esté almacenado en la variable de índice.
‫Bueno.
‫Así que empezamos de cero.
‫Nosotros cada vez que damos una vuelta, aumentamos el índice.
‫Y lo que podemos hacer es hacerlo de modo que solo rodeemos este bucle salvaje mientras nuestro índice esté dentro de
‫los límites de nuestra matriz.
‫Entonces podemos decir que el índice debe ser menor que el número de puntos de los actores.
‫Así que ese es el tamaño de la matriz.
‫Recuerde que cuando tenemos cinco elementos en la matriz, el último elemento de la matriz es el índice cuatro.
‫Y entonces podemos ver que esto será cierto cuando el índice sea válido, cuando el índice cuatro sea menor que cinco.
‫Pero tan pronto como ese índice pase el final de la matriz, cuando llegue al índice cinco, entonces el
‫número de actor no será más cinco que no será menor que cinco.
‫Entonces el bucle while dejará de ejecutarse y continuará con el resto de la función.
‫Entonces, lo que eso significa es que ahora podemos tomar el código que teníamos arriba y reescribirlo, tomarlo, copiarlo, cortarlo
‫y pegarlo aquí por un tiempo.
‫Círculo.
‫Pero antes de aumentar el índice, lo más importante, porque lo que vamos a hacer es reemplazar
‫este cero donde obteníamos el actor cero, podemos reemplazarlo con el índice del actor.
‫Así que sigamos con esto.
‫¿Cómo funcionaría esto?
‫Lindo.
‫Elimine nuestra declaración if porque eso confunde un poco las cosas.
‫Así que empezamos el valor en el índice de la variable va a ser cero.
‫Ahora imagina que tenemos que actuar es mantener las cosas simples es cero menos que dos.
‫Sí, así es.
‫Así que entramos y obtenemos el actor cero, obtenemos su nombre y lo desconectamos y luego aumentamos el valor en el índice
‫en uno.
‫Entonces pasa de ser cero a ser uno.
‫Ahora volvemos a evaluar la condición del ciclo while y decimos ¿es uno menos que dos?
‫Sí, lo es.
‫Luego podemos entrar y obtener el actor uno y luego vamos a obtener su nombre e imprimir su nombre.
‫Luego aumentamos el índice nuevamente al índice dos y hacemos la pregunta nuevamente en el ciclo while diciendo
‫¿dos menos que dos?
‫Bueno, la respuesta es no.
‫Así que nos saltamos el cuerpo del ciclo while y continuamos y ejecutamos el resto del código.
‫Así que eso es básicamente lo que queremos lograr.
‫Queremos imprimir el nombre de cada actor en la matriz, y eso es lo que hará este fragmento de
‫código.
‫Avancemos, compilémoslo y comprobemos que tengo razón.
‫Si continuamos y presionamos reproducir y entramos en el cuadro, puede ver que solo estábamos superponiendo el jugador
‫BP.
‫¿Y si vamos a buscar nuestra gárgola?
‫Si lo metemos solo en el rebote, podéis ver que conseguimos solapar la gárgola.
‫Pero, ¿y si yo también intervengo?
‫Ahora puede ver que está imprimiendo tanto el jugador como la gárgola superpuestos en el mismo marco.
‫Así que nuestro bucle salvaje está funcionando.
‫Está ejecutando un fragmento de código varias veces cuando hay varios actores en la matriz.
‫Ahora, debido a que este patrón es tan común, tenemos algún tipo de índice y lo aumentamos cada vez que pasamos
‫por el ciclo.
‫De hecho, hay una abreviatura para esto en C++, y si escribe for en su código de Visual Studio, entonces hay un
‫fragmento para un bucle de cuatro aquí que puede expandir y puede ver que esta es una estructura general.
‫Tiene algo llamado talla T aquí.
‫Podemos reemplazar eso con INT 32 para nuestros propósitos.
‫Y esencialmente lo que esto dice es que hay tres declaraciones dentro de los paréntesis del ciclo for.
‫El primero es equivalente a donde configuramos nuestra variable de índice antes de nuestro ciclo while.
‫La segunda es la condición que es equivalente a lo que ponemos dentro de nuestro ciclo while.
‫Y puede ver que podríamos reemplazar el conteo con actores punto num.
‫Y luego, el último bit es básicamente el plus, ya sea que lo coloque antes o después, el
‫índice no es demasiado importante, pero puede ver que esto aumenta el valor en el índice.
‫Entonces es equivalente a la línea que ponemos al final de nuestro bucle.
‫Entonces, esto solo reúne todo en una línea lo que teníamos que distribuir en múltiples usando nuestro
‫bucle salvaje.
‫Así que aquí hay un desafío simple para ti.
‫Convierta su bucle waah en un bucle for.
‫Vas a copiar y el cuerpo del código cambiará el índice de ese índice de nombre a I.
‫Por lo general, usamos la abreviatura en bucles de I, solo una abreviatura para indexar realmente y compilar
‫y probar reproducciones de video.
‫Bueno.
‫Bienvenido de nuevo.
‫Así que esto debería ser bastante sencillo.
‫No queremos el índice más más aquí.
‫Así que vamos a cortar el resto.
‫Un cambio sobre dónde estamos indexando la matriz de actores con la variable de índice.
‫Vamos a cambiar eso a IE la variable.
‫Está disponible solo dentro de este bucle for.
‫Esa es otra ventaja de la sintaxis de bucle completo: la variable IE solo está disponible, solo está disponible
‫dentro del bucle completo, mientras que cuando la declaramos aquí en el bucle while,
‫está disponible fuera, lo que contamina los índices que podemos usar más adelante para que podamos eliminar ese bucle salvaje.
‫Y puedes ver que el bucle completo está mucho más condensado y te acostumbrarás a la sintaxis
‫un poco extraña que tiene.
‫Avancemos y compilemos y solo verifiquemos que realmente haga el mismo trabajo.
‫Si voy y agarro mi gárgola y me acerco a los actores superpuestos, pueden ver que, de hecho, está imprimiendo a
‫nuestros dos actores cuando ambos estamos superpuestos en la alcoba.
‫Buena cosa.
‫Así que en esta lección hemos visto una nueva idea de programación, la idea de los bucles, y nos hemos encontrado
‫particularmente con el bucle Y y el bucle for.
‫Te veré en la próxima conferencia.