Bem-vindo de volta.
Na última palestra, deixei a vocês a tarefa de imprimir a árvore de comportamento simples que estivemos
construindo.
Infelizmente, esta não é realmente uma tarefa simples e bem feita para você se você conseguir tirá-la de lá.
Melhor ainda se você realmente foi e fez um pouco de pesquisa para descobrir como fazer isso.
Ok, então Behavior Tree é basicamente um gráfico e há muitos algoritmos por aí que já foram
escritos para atravessar um gráfico e imprimi-lo.
Agora você pode fazer isso de duas maneiras.
Você pode usar a recorrência ou pode fazê-lo sem recorrência.
Agora vou fazê-lo sem recorrência, só para não confundir as pessoas que não estão em todos os lugares que a recorrência
funciona, porque pode ser um pouco de curvatura da mente.
Muito bem.
Comecemos, então, com nossa árvore de impressão.
Portanto, aqui dentro, vou, antes de mais nada, colocar um cordel e esse cordel será a impressão em árvore.
Por isso, vou guardar tudo em um fio e depois imprimi-lo logo no final.
Portanto, isso não equivale a nada neste momento.
Agora, para lembrar onde estamos nesta árvore, vou criar uma pilha e a pilha vai
ter nós nela.
E vamos chamar que a pilha de nós é igual à nova pilha de nós.
E então colocamos o nó atual lá dentro.
Portanto, o nó atual neste ponto é a própria árvore básica.
Então, vamos fazer nó, o nó atual é igual a isto e depois vamos empilhar o ponto do nó, empurrar a corrente.
Nota.
Certo, então temos a raiz da árvore naquela pilha.
Em seguida, basicamente começamos a fazer um looping por cada nó que, se ele tiver filhos, queremos colocá-los
na pilha e depois queremos sair dos pais e imprimi-los.
Portanto, vai ficar assim enquanto a pilha de nós não conta, não é igual a zero, e não deve ser a primeira vez porque
colocamos um nó aqui em cima.
Portanto, embora não seja igual a zero nó, o próximo nó é igual a nó.
Stick Dot Pop.
Portanto, agarramos a rota neste ponto porque essa é a única ali dentro.
E então imprimimos isso.
Por isso, adicionamos à nossa árvore de impressão um fio.
Vai ser igual a mais igual ao nome do próximo nó mais um retorno.
Assim, podemos descer para uma nova linha.
Em seguida, vamos para o int I e damos a volta a todos os filhos daquele que acabamos de soltar e os colocamos
na pilha.
Certo.
Portanto, neste caso, vou fazer um looping para trás através das crianças.
A razão é que, se você olhar para a frente através das crianças, na verdade as imprime em
ordem inversa, devido à forma como está saltando da pilha.
Portanto, vou começar na parte superior da lista de crianças.
Então, próximo nó ponto crianças, ponto, conte menos um.
I é então maior ou igual a zero.
Assim, embora não tenhamos contabilizado todas as crianças menos eu as adicionarei ao nosso monte.
Então, empilhe os pontos de empilhamento do nó a seguir.
Ponto do nó.
Crianças.
I.
Certo.
Depois, quando tivermos feito isso, podemos fazer a depuração do tronco e vamos imprimir a árvore.
Imprima um valor assim e isso imprimirá nossa árvore.
Portanto.
Como você foi?
Acho que se você tem algo funcionando, você sabe que está funcionando tão bem feito.
É assim que eu estou fazendo.
Se você tem um método diferente que funciona para você, então, por favor, compartilhe-o.
Se você fez isso com recorrência, então compartilhe isso também, para que outros possam aprender com seu código.
Ok, então eu vou salvar isso.
Agora, de volta ao meu comportamento de borracha, eu realmente acrescentei aqui algum tipo de nós extras falsos para que eles tenham algo mais interessante
para imprimir e eu os apagarei um pouco mais tarde.
Por isso, temos aqui nossas coisas roubadas.
Eu também acrescentei em um nó de oito que terá dois filhos de ir à pizzaria e comprar pizza, e por isso estou apenas
acrescentando-os aqui embaixo da mesma forma que fizemos para o aço no topo.
É claro que não é preciso colocá-los ali.
Eu só gosto de ver um pouco mais de dados quando imprimo isto.
Certo.
Assim, na parte inferior do início, podemos então ir árvore, ponto, imprimir árvore para executar o método que acabamos de criar.
Guarde-o.
Agora vamos então voltar à unidade.
Você quer adicionar o roteiro do comportamento da borracha ao ladrão?
Como podem ver, eu já fiz aqui.
E nós vamos fazer um jogo de imprensa e dar uma olhada.
Muito bem, então jogue agora no console.
Você não vai ver a árvore inteira.
Você só vai ver o nível superior da árvore.
Mas se você clicar aqui embaixo, no console real, você verá sua árvore.
Portanto, ainda há alguma coisa na árvore.
Então este é o primeiro filho da árvore.
E depois você tem sua ida ao Diamond, vai ao Van, depois come alguma coisa e vai
à pizzaria e compra pizza.
Ótimo.
Portanto, tudo está na ordem certa.
Agora, o que seria realmente agradável é se pudéssemos recuar estes para mostrar quais são as crianças de quais.
Portanto, apenas com um pouco de código complicado, se eu voltar para lá, vou acrescentar uma estrutura muito simples
e atrevida aqui em cima.
Portanto, vamos criar uma estrutura ou nível de nó e esta estrutura vai se agarrar ao nó e ao nível em que o nó se encontra
na árvore.
Portanto, a raiz é nível zero.
O próximo nó para baixo seria o nível um.
Suas crianças serão de nível dois.
E então qualquer um no mesmo nível de um, todos eles serão um.
E então seus filhos são dois e três ao longo de todo o percurso.
Portanto, aqui queremos ter um nível de int público e um nó público para armazenar o nó.
Está bem?
Assim, uma vez feito isso, temos apenas que modificar nossa árvore de impressão.
Portanto, esta pilha agora vai ter nível de nó.
Portanto, aqui colocarei o nível do nó aqui será o nível do nó.
Então, quando empurramos a primeira coisa para aquela pilha, não é mais um nó.
Tem que ser um nível de nó.
Portanto, dentro daqui colocará novas.
Sem nível e por ser uma estrutura, podemos realmente ir como este nível é igual ao nó atual e então saber que não precisa ser igual
ao nível que será zero neste ponto.
Vírgula.
O nó é igual ao nó atual e, em seguida, os parênteses de rabisco no final.
Portanto, basta observar como essa estrutura está sendo declarada e criada e empurrada por aqui.
Certo.
Então, temos dentro de nosso laço enquanto queremos fazer a mesma coisa é correto.
Ou isto.
Agora a coisa que está sendo lançada neste ponto vai ser um nível de nó.
E então o que estamos imprimindo aqui é o próximo nó, nó de ponto, nome do ponto, e queremos usar o nível.
Agora vamos usar o nível não impresso.
Você poderia imprimir qual seria o nível zero um, dois, três, o que quer que seja,
mas na verdade usaremos o número do nível para colocar alguns traços.
Assim, colocaremos um novo fio e, dentro dele, uma única citação, um traço, uma única citação e, em seguida,
uma vírgula, próximo nível de ponto do nó.
E isso será uma vantagem.
Ao nome.
Portanto, qualquer que seja este número aqui, ele imprimirá estes muitos travessões.
Portanto, se você estiver no nível cinco, por exemplo, haverá cinco traços agora em loop, será
o próximo ponto de nó, ponto de nó, contagem de pontos para crianças.
E então o que estamos empurrando novamente para baixo é basicamente isto.
Portanto, queremos um novo nível de nó, nível de parênteses iguais.
Agora, o que vai ser igual neste momento?
Bem, se formos até as crianças, será igual ao próximo nó aqui em cima que for nível mais um, porque este
é o que é o pai do qual estamos recebendo as crianças.
Portanto, se copiarmos isso e colocarmos isso aqui e depois colocarmos mais uma e depois colocaremos uma vírgula
e este será um nó igual a isso.
E não se esqueça do suporte com rabisco na ponta e este será o próximo ponto de nó, ponto de nó crianças.
Então, é assim que podemos fazer com esta estrutura.
E é claro que você pode colocar essa estrutura no topo de seu código.
Estou apenas colocando lá para que você possa realmente vê-lo na mesma tela que o resto deste caso.
Portanto, salve-o.
Vamos voltar para aqui.
Agora, quando pressionamos o play e descemos e damos uma olhada na nossa árvore, dê uma olhada na bela estrutura que temos.
Está bem?
Portanto, temos nossa árvore no topo.
Depois temos um traço para nosso aço de primeiro nível qualquer coisa.
E se você desce para comer alguma coisa, você pode ver que isso também tem um único traço.
E os filhos de cada um deles vão para Diamond, vão para Van são agora indentados por dois.
Se você quiser exagerar, pode colocar mais de um traço que está sendo repetido.
Agora que temos isto, podemos usá-lo a qualquer momento apenas para verificar se sabemos que nossa árvore está correta em todo o processo.
Portanto, é apenas uma maneira agradável de depurar que, além de aprender um algoritmo para atravessar a árvore de seu
comportamento.
Certo.
Portanto, deixe-me apenas voltar ao código aqui, caso você tenha acompanhado.
Exatamente.
Vou voltar para a minha borracha e vou realmente me livrar de comer a pizza porque, na verdade, não é realmente
relevante neste momento.
E se você quiser deixar aquela árvore impressa lá dentro, bem, você também pode,
porque se você se deu ao trabalho de criá-la e ela virá em uso.
Muito bem.
Então isso é imprimir sua árvore.
No próximo vídeo, vamos voltar e começar a olhar as ações e como fazer com que nosso personagem
se mova.