Bienvenido de nuevo.
En la última conferencia, te dejé con la tarea de imprimir el sencillo árbol de comportamiento que hemos estado
construyendo.
Desgraciadamente, esto no es una tarea sencilla y bien hecho si consigues descifrarlo.
Mejor aún si realmente fue a investigar un poco para saber cómo hacerlo.
Bien, entonces el Árbol de Comportamiento es básicamente un gráfico y hay un montón de algoritmos por ahí que
ya han sido escritos para recorrer un gráfico e imprimirlo.
Puedes hacerlo de dos maneras.
Puedes utilizar la recursión o puedes hacerlo sin recursión.
Ahora voy a hacerlo sin recursividad, sólo para no confundir a la gente que no está al tanto de cómo funciona
la recursividad, porque puede ser un poco alucinante.
Muy bien.
Así que empecemos con nuestro árbol de huellas.
Así que aquí, estoy, en primer lugar, va a poner en una cadena y que la cadena será la impresión del árbol.
Así que voy a almacenar todo en una cadena y luego imprimirlo al final.
Así que eso no equivale a nada en este momento.
Ahora, para recordar dónde estamos en este árbol, voy a crear una pila y la pila va a tener
nodos en ella.
Y llamemos a eso la pila de nodos igual a la nueva pila de nodos.
Y luego ponemos el nodo actual.
Así que el nodo actual en este punto es el propio árbol básico.
Así que vamos a ir nodo, nodo actual es igual a esto y luego vamos a ir nodo pila punto, empuje actual.
Nota.
Bien, entonces tenemos la raíz del árbol en esa pila.
A continuación, básicamente empezamos a hacer un bucle a través de cada nodo que si tiene hijos, queremos ponerlos
en la pila y luego queremos salir de los padres e imprimirlos.
Así que va a parecer esto mientras la pila de nodos no cuenta, no es igual a cero, y no debería la primera vez porque hemos
puesto un nodo aquí arriba.
Así que mientras no es igual al nodo cero, el siguiente nodo es igual al nodo.
Stick Dot Pop.
Así que nos agarramos a la ruta en este punto porque es la única que hay.
Y luego lo imprimimos.
Así que lo añadimos a nuestra cadena de impresión del árbol.
Va a ser igual más igual al siguiente nombre de nodo más un retorno.
Así que podemos bajar a una nueva línea.
Luego vamos por int I y hacemos un bucle alrededor de todos los hijos del que acabamos de sacar y los ponemos
en la pila.
De acuerdo.
Así que en este caso, voy a hacer un bucle hacia atrás a través de los niños.
La razón es que, si miras hacia adelante a través de los hijos, en realidad los imprime en
orden inverso debido a la forma en que está saliendo de la pila.
Así que voy a empezar por el extremo superior de la lista de niños.
Así que el siguiente nodo punto hijos, punto, cuenta menos uno.
I es entonces mayor o igual a cero.
Así que, aunque no hemos contado con todos los niños menos con los que añadiremos a nuestra pila.
Así que la pila de nodos dot push siguiente.
Punto de nodo.
Los niños.
I.
De acuerdo.
Entonces cuando hayamos hecho eso podemos ir a depurar el registro y vamos a imprimir el árbol.
Imprime el valor así y eso imprimirá nuestro árbol.
Así que.
¿Cómo te fue?
Supongo que si tienes algo que funciona, sabes que está funcionando así que bien hecho.
Esta es la forma en que lo estoy haciendo.
Si tienes un método diferente que te funcione, compártelo.
Si lo has hecho con recursión, compártelo también para que otros puedan aprender de tu código.
Bien, voy a guardar eso.
Ahora, de vuelta en mi comportamiento de la goma, en realidad he añadido en una especie de nodos adicionales ficticios aquí sólo para que tengan algo más
interesante para imprimir y voy a eliminar un poco más tarde.
Así que tenemos nuestro material de robo aquí arriba.
También he añadido un nodo ocho que tendrá dos hijos de ir a la pizzería y comprar pizza, y por lo tanto los estoy añadiendo
aquí abajo de la misma manera que hicimos para el acero en la parte superior.
Por supuesto, no es necesario ponerlas.
Sólo me gusta ver un poco más de datos cuando imprimo esto.
De acuerdo.
Así que en la parte inferior del inicio, podemos entonces ir árbol, punto, imprimir árbol para ejecutar ese método que acabamos de crear.
Guárdalo.
Ahora volvamos a la unidad entonces.
¿Quieres añadir el script de comportamiento de la goma al ladrón?
Como puedes ver, ya lo he hecho aquí.
Y vamos a pulsar el play y echar un vistazo.
Bien, ahora toca en la consola.
No verás todo el árbol.
Sólo vas a ver el nivel superior del árbol.
Pero si haces clic aquí abajo en la consola actual, verás tu árbol.
Así que hay árbol todavía algo.
Así que ese es el primer hijo del árbol.
Y luego tienes que ir a Diamond, ir a Van, luego tienes que comer algo e ir a la
pizzería y comprar pizza.
Genial.
Así que todo está en el orden correcto.
Ahora, lo que estaría muy bien es que pudiéramos hacer una sangría para mostrar cuáles son hijos de cuáles.
Así que con un poco de código complicado, si vuelvo a entrar ahí, voy a añadir una pequeña estructura muy simple y descarada
justo aquí arriba.
Así que vamos a crear una estructura o nivel de nodo y esta estructura va a mantener el nodo y el nivel que el nodo
está en el árbol.
Así que la raíz es el nivel cero.
El siguiente nodo hacia abajo sería el nivel uno.
Sus hijos serán de nivel 2.
Y luego cualquiera al mismo nivel que uno, todos serán unos.
Y luego sus hijos tienen dos y tres años de edad en todo el camino.
Así que aquí queremos tener un nivel int público y un nodo público para almacenar el nodo.
¿De acuerdo?
Así que una vez que hemos hecho eso, sólo tenemos que modificar nuestro árbol de impresión.
Así que esta pila ahora va a tener nivel de nodo en su lugar.
Así que aquí voy a poner el nivel de nodo por aquí será el nivel de nodo.
Entonces, cuando empujamos la primera cosa en esa pila, ya no es un nodo.
Tiene que ser un nivel de nodo.
Así que dentro de aquí pondremos lo nuevo.
No hay nivel y porque es una estructura, podemos ir como este nivel es igual al nodo actual y luego saber que no necesita es igual
al nivel que será cero en este punto.
Coma.
El nodo es igual al nodo actual y al final hay unos corchetes.
Así que fíjate en cómo se declara y se crea esa estructura y se empuja a través de ella.
De acuerdo.
Entonces tenemos dentro de nuestro bucle while que queremos hacer lo mismo es correcto.
O esto.
Ahora, lo que se va a sacar en este punto va a ser un nivel de nodo.
Y entonces lo que estamos imprimiendo aquí es el siguiente nodo, punto nodo, punto nombre, y queremos usar el
nivel.
Ahora vamos a utilizar el nivel no impreso.
Se podría imprimir lo que es el nivel sería cero uno, dos, tres, lo que sea, pero en realidad
vamos a utilizar el número del nivel para poner algunos guiones.
Así que vamos a poner nueva cadena y luego dentro de aquí una comilla simple, un guión, una comilla simple, y luego
una coma, siguiente nodo nivel de punto.
Y eso será un plus.
Por el nombre.
Así que lo que sea este número aquí, imprimirá esta cantidad de guiones.
Así que si estás en el nivel cinco, por ejemplo, habrá cinco guiones ahora en el bucle for, será punto
de nodo siguiente, punto de nodo, recuento de puntos de niños.
Y entonces lo que estamos empujando de nuevo aquí abajo es esto básicamente.
Así que queremos un nuevo nivel de nodo, el nivel de soporte es igual.
Ahora, ¿a qué va a equivaler en este momento?
Bueno, si hemos ido a los hijos, va a ser igual al siguiente nodo aquí fue el nivel más uno, porque este es el
que es el padre que estamos recibiendo los niños de.
Así que si copiamos eso y lo ponemos aquí y luego ponemos más uno y luego pondremos una coma y esto
será nodo igual a eso.
Y no olvides el corchete al final y esto será el siguiente nodo punto, nodo punto hijos.
Bien, así es como podemos hacerlo con esta estructura.
Y, por supuesto, puedes poner esa estructura en la parte superior de tu código.
Lo pongo ahí para que lo puedas ver en la misma pantalla que el resto del caso.
Así que guárdalo.
Volvamos a entrar aquí.
Ahora, cuando pulsamos el play y bajamos a echar un vistazo a nuestro árbol, echa un vistazo a la preciosa estructura que tenemos.
¿De acuerdo?
Así que tenemos nuestro árbol en la parte superior.
Entonces tenemos una carrera para nuestro primer nivel de acero algo.
Y si bajas a comer algo, puedes ver que eso también tiene una sola raya.
Y los hijos de cada uno de estos van a Diamante, van a Van son ahora sangrados por dos.
Si quieres exagerar, puedes poner más de un guión que se repita.
Ahora que tenemos esto, podemos utilizarlo en cualquier momento para comprobar que nuestro árbol es correcto en todo momento.
Así que es sólo una pequeña manera de depurar que, así como aprender un algoritmo para recorrer a través de su árbol de
comportamiento.
De acuerdo.
Así que déjame volver al código aquí en caso de que hayas estado siguiendo.
Exactamente.
Voy a volver a mi goma y en realidad voy a deshacerme de mi consumo de la pizza porque en realidad no es realmente
relevante en este momento.
Y si quieres dejar ese árbol de huellas ahí, pues mejor, porque
si te has tomado la molestia de crearlo y te va a servir.
Muy bien.
Así que eso es imprimir tu árbol.
En el próximo vídeo, volveremos a ver las acciones y cómo hacer que nuestro personaje
se mueva.