Hi.
Bem-vindo de volta à nossa construção deste sistema fantasma do zero.
Agora vamos ter já criado o mundo e os estados do mundo estão trabalhando na programação
das ações.
A primeira coisa que vamos construir são algumas ações.
Portanto, vamos entrar nesse roteiro e a ação em si vai se realizar.
A ação vai cuidar não necessariamente da execução da ação, mas de todos os detalhes sobre
uma determinada ação.
Agora, não vamos usar esta ação g como se fosse ela mesma, certo?
Na verdade, vamos herdar dele.
Portanto, vamos criar uma classe abstrata neste caso.
Agora, antes de continuarmos através do resto do código, também precisamos usar o ponto I do motor unitário porque estamos usando
uma malha de navegação e, portanto, precisamos acessar isso e você verá isso um pouco mais tarde.
Certo.
Portanto, subindo o topo, vamos em frente e declaremos todas as coisas que podemos estabelecer sobre uma determinada ação.
Portanto, todas elas serão públicas para que você possa colocá-las em prática.
O Inspetor.
Primeiro de tudo, temos um nome de ação e você pode querer apenas definir isso para ação
apenas como um padrão ali, depois uma bóia pública para o custo da ação.
Definiremos isso como um por padrão.
Devo mencionar sobre este custo é que seu planejador encontrará o plano mais barato para trabalhar.
Portanto, cada ação tem um custo particular e vai tentar ir com aquela que vai ser uma espécie
de tensão menor para o seu agente.
Não significa que você necessariamente fará sempre os planos de menor custo, especialmente se eles não forem realizáveis e você
pode ter que fazer outro.
Mas acho que você pode pensar no custo como se o agente realmente quisesse fazer essa ação específica?
Como se não gostasse muito de fazer essa ação para que ela faça algo que seja um pouco mais
fácil?
E eu acho que você poderia pensar nisso em termos de jogos como The Sims, onde eles terão coisas que são
suas ações mais favoritas e que eles farão e farão mais automaticamente.
Mas se isso não estiver disponível, então eles farão algo de que não gostam.
E se eles não gostam porque seu custo é muito mais alto, então suas emoções são afetadas.
Portanto, você também poderia usar este custo para considerar como seu agente se sente.
Se você quiser entrar nesse tipo de lado emocional da programação, esses agentes que não
estavam aqui, devo dizer a seguir que precisamos de um objeto de jogo público para o alvo.
Agora o alvo é o local onde esta ação vai ocorrer, de modo que temos que mover nosso
caráter de malha de navegação de um ponto para o outro.
Ok, então vamos ter um objeto de jogo público, a tag alvo, e isto é para que possamos pegar objetos de jogo usando
a tag, encontrá-los se eles existirem na hierarquia, no caso de não termos um
alvo aqui.
E você verá que isso será usado em breve.
Flutuador público.
Queremos uma duração da ação.
Quanto tempo vai demorar?
Por quanto tempo devemos ter nossos agentes em um determinado ponto de atuação praticamente executando a ação e
então precisamos de alguns estados mundiais.
Portanto, precisamos de um estado público mundial para as condições prévias e precisamos de um estado público mundial para os efeitos posteriores.
Portanto, estes são os itens que nosso planejador vai combinar em ambos os lados da ação.
Se você se lembrar do diagrama que tivemos com todas as nossas ações ligando como dominós combinados, tudo
bem.
Portanto, em seguida, precisamos de um agente de malha de navegação pública, que é nosso agente de malha de navegação ligado ao nosso agente para movimentá-lo.
E depois vamos também criar um dicionário público.
Cordão.
Int. de cordas
Pré-condições.
E um público.
Cadeia de dicionário de cada um dos efeitos.
E o que fará com estes estados mundiais aqui é que isto nos permite lembrar como fizemos o sistema de estados mundiais seriais
aqui em cima e estamos usando estados mundiais.
Podemos vê-los no inspetor.
Assim, você pode digitar todas as suas condições prévias e seus efeitos no inspetor.
Mas quando queremos ir e planejar com eles em nosso planejador, faz muito mais sentido que eles estejam
em um dicionário, apenas torna muito mais fácil trabalhar de fato com eles.
Portanto, vamos usar isto para obtê-los através do inspetor e depois vamos colocá-los nestes
dois dicionários.
A próxima coisa que precisamos é de outros estados públicos mundiais que sejam nossas crenças de agente ou o estado do
próprio agente.
Portanto, tem um conjunto interno de estados com os quais trabalharemos e, finalmente, subimos no topo aqui,
a bool pública para correr.
Então, estamos realizando esta ação neste momento?
E, inicialmente, vamos colocar isso em falso porque quando estamos realizando uma ação, então não queremos
continuar e estar realizando outra ação.
Portanto, agora vamos em frente e escrevemos ao nosso construtor.
Portanto, haverá uma ação g pública onde declararemos nossa condição prévia.
Portanto, as pré-condições são iguais ao novo dicionário int e ao novo dicionário.
O efeito é igual a uma nova dicção a cada string int.
Está bem.
Agora, o que vai acontecer ao acordar?
Bem, precisamos montar todos os pedaços e peças que estão acontecendo com nossas ações.
Inicialmente, vamos ter que preencher estes dois dicionários com os valores que são colocados
no inspetor lá.
E também precisamos de um agente de malha de navegação que esteja no mesmo objeto de jogo.
Portanto, vamos criar um vazio público desperto.
E nós vamos montar o agente primeiro.
Assim, o agente se iguala a este objeto de jogo de pontos e estamos conseguindo nosso agente de malha de navegação.
Para isso.
E então precisamos, se as condições prévias não forem iguais a nulas.
Portanto, há realmente algo nessas condições prévias no inspetor, então nós vamos passar por elas.
Assim, para cada estado mundial w em pré-condições com a capital C, então vamos acrescentá-la ao nosso dicionário
de pré-condições.
Portanto, as condições prévias adicionam a chave w ponto e w ponto valor como esse.
E então precisamos novamente da mesma coisa para nosso efeito secundário.
Portanto, vamos copiar isso e colocar aqui.
Isto será se os efeitos posteriores não forem nulos, então vamos tirar todos os estados do mundo dos efeitos posteriores.
E vamos acrescentá-los a nossos efeitos.
Portanto, agora vamos acrescentar aqui alguns métodos de ajuda que nosso planejador vai precisar.
E antes de mais nada, uma vez que um baile público seja possível.
Para determinar se podemos realmente alcançar este objetivo em particular e dentro daqui, que vai retornar.
É verdade.
Apenas assumindo que podemos.
E então o mais importante, que é um bool público, é realizável dado e esta será nossa ação realizável
dado que há certas condições prévias a serem cumpridas.
Portanto, este será o dicionário que será nossa int.
Quatro condições.
E então, dentro daqui, vamos para cada par de cordas de valor chave.
INT.
Portanto, nossa condição prévia em condições prévias.
Por isso, estamos fazendo um looping através de nossas condições prévias que temos armazenadas para esta ação em particular e estamos procurando
cada uma destas condições para nos certificarmos de que elas realmente se encaixam nelas.
Portanto, se não houver sinais de condições, o DOT contém a chave.
O p ponto ki.
Então retornaremos falsos.
Portanto, não podemos realmente fazer isso porque as condições prévias não são cumpridas.
E então voltaremos.
É verdade, se conseguimos chegar até o fim e descobrimos que combinamos todas as condições prévias para
isso.
Agora, finalmente, só precisamos e vamos nos livrar desses dois métodos porque não vamos usá-los.
Vamos acrescentar dois métodos públicos abstratos.
Bool pre perform e touro abstrato público.
Pós-execução.
Portanto, lembre-se, vamos herdar desta classe em particular e queremos
ter certeza de que forçamos a existência de um método de pré e pós-desempenho que você escreve e
que lhe permitirá colocar em código personalizado para cada ação que você pode fazer outras verificações antes que uma ação realmente
comece, que é fazer coisas como garantir que certos recursos estejam disponíveis ou que outros agentes estejam
disponíveis, e então quaisquer outras condições pósvias que possam surgir da ação em particular quanto
a se você vai afetar o estado mundial com aquela ação ou se você só afeta o agente.
Muito bem.
Portanto, salvaremos isso agora que temos a ação feita.