Neste vídeo, vamos começar a adicionar os cubículos como recursos que estão disponíveis para o paciente e
a enfermeira.
Primeiro de tudo, o que precisamos fazer é entrar em nosso mundo.
Então g mundo e adicionar aqui uma fila de cubículos, da mesma forma que temos esta fila de pacientes.
Agora, vou deixar isso como um desafio inicial para você fazer, e gostaria que pensasse
sobre a montagem do cubículo e como os valores de cada cubículo que já está no mundo do jogo vão
entrar na fila em primeiro lugar porque eles não são como os pacientes que podem se injetar
ali quando seus objetivos foram alcançados ou quando uma ação chega a um determinado lugar.
Ok, então vá embora e tente fazer isso.
Portanto, acrescente uma fila e acrescente todos os pedaços e peças necessárias que precisam passar por toda
essa classe mundial G para cuidar dessa fila.
E quando voltarmos, eu lhes mostrarei como fazer isso e como montar tudo isso.
Portanto, faça uma pausa no vídeo agora e boa sorte.
Bem-vindo de volta.
Como você foi?
Bem, antes de tudo, temos que criar uma fila, de modo que deve ser
bastante simples para você, que é copiar os pacientes, colocá-la lá dentro e chamá-la de cubículos.
Certo.
Podemos então ir em frente.
E no mundo está construindo essa fila.
Portanto, vamos pegar isso e fazer uma cópia e chamaremos esses cubículos também de cubículos.
Certo.
Então, precisamos de dois ajudantes, que é nosso cubículo de adição e remoção de cubículo.
Por isso, vamos apenas copiá-los e colocá-los aqui dentro.
Assim, vamos simplesmente renomeá-los como adicionar cubículo e remover cubículo e depois também mudaremos as filas dentro
delas para que tenhamos as corretas.
Cubículo e cubículo.
Certo.
Portanto, agora precisamos realmente encher essa fila porque esses cubículos são coisas que existem no ambiente
do jogo.
Portanto, uma maneira de fazê-lo é escrever um roteiro que você coloca em cada cubículo.
Então, como recurso, ele tem um pequeno roteiro, e depois diz no método inicial que
diz algo como Gee, cubículos do mundo, cubículos publicitários e depois se injeta nessa fila, o que é ótimo.
Isso funcionaria bem e isso seria bom se você quisesse adicionar cubículos dinamicamente ao mundo.
Mas o que vamos fazer aqui é apenas pegar todos os cubículos que estão no mundo.
Portanto, vamos fazer uma matriz de objetos de jogo e vamos apenas chamar estes cubos de iguais a objetos
de jogo com tag.
Lembre-se que todos esses cubículos são marcados com um cubículo com C maiúsculo para que possamos percorrer
o ambiente e pegar os que já existem.
Então, podemos passar por eles.
Assim, para cada objeto de jogo ver em cubos, cubículos ponto em fila.
Então os enfiamos na fila e colocamos C nessa fila.
Depois disso, também precisamos inserir um estado no mundo sobre os cubículos e se eles são livres ou não, assim como
se um paciente está esperando.
Portanto, inicialmente vamos dizer se os cubos têm pontos de comprimento.
É maior que zero.
Então queremos colocar o mundo.
Modificar o cubículo livre de estado.
Cubos em comprimento.
E então, quando isso entra no mundo, ele é automaticamente pego por nosso pequeno atualizador que o está
colocando naquele gooey que está na tela.
Muito bem.
Portanto, guarde isso e volte à unidade.
E nós só queremos testar que está funcionando.
Portanto, basta pressionar play.
E por causa do mundo que o faz, não dependemos de nenhum de nossos agentes para atualizar o Estado.
Certo.
Então agora você pode ver que diz cubículo livre e há três disponíveis e, portanto, podemos usar cubículo livre, algo
que nosso paciente ou nossa enfermeira está procurando para fazer outra ação para que possa ser uma condição
prévia.
Portanto, agora temos este novo recurso no meio ambiente.
Portanto, não é um agente e não é um objetivo ou sub objetivo.
Não é realmente um estado, mas a sua existência causa um estado.
Portanto, os cubículos estão causando um estado de cubículo livre ou acho que não há cubículos livres, o que é mais ou
menos o oposto.
E, portanto, precisamos de outra maneira de organizar estas coisas que os agentes precisam nelas ou disponíveis a fim de
completar uma tarefa.
E é aí que entra agora a idéia de um inventário.
Portanto, em nossa pasta GOOP, o que vamos fazer é criar um inventário.
Então vamos ver a loja e vamos chamá-la de inventário G apenas para acompanhar a maneira como temos codificado até agora com
as convenções dos nomes.
Agora, o inventário em si não é um comportamento mono e, portanto, não terá um início e uma atualização.
Portanto, é basicamente apenas manter uma lista.
Portanto, uma lista de objetos de jogo, que serão nossos itens que podemos colocar em nosso inventário ou mochila ou o que quer
que você queira chamar.
Então vamos chamá-lo de itens e ele vai se igualar a uma nova lista de objetos de jogo.
Agora vai requerer três ajudas ou funções.
E vamos nos livrar disso, como sempre, colocar isso lá dentro.
Certo.
Por isso, vai ter um vazio público adicionar item.
E nós lhe damos um olho de objeto de jogo.
E vai acrescentar isso aos seus itens, o que é bastante simples porque são apenas itens que não acrescentam.
E então eu, o próximo será um objeto de jogo público que ele retornará e será encontrado.
Item com etiqueta dada a etiqueta de corda do mesmo.
Certo.
Então, para encontrar o item aqui, vamos apenas percorrê-lo.
Assim, para cada objeto de jogo I em itens.
Se eu não etiquetar é igual a etiquetar.
Depois, vamos devolvê-lo.
Retornar I.
Caso contrário, vamos terminar nosso ciclo completo sem tê-lo encontrado e devolveremos um nulo para sabermos que
esse item não está em nosso inventário.
Finalmente, vamos ter uma remoção.
Portanto, temos a capacidade de colocá-lo em inventário.
Agora temos que tirá-lo de lá.
Portanto.
Vazio público.
Remover.
Item.
Objeto do jogo.
I.
E isto é necessário, antes de tudo, encontrar o índice para aquele item em particular.
Portanto, índice para remover é igual a menos um, o que significa que na verdade não encontramos esse item para remover para
cada um.
Objeto do jogo.
Ou em itens que depois vão definir o índice para remover iguais.
Além disso, para aumentá-la.
E então se eu for igual ao item pelo qual passamos, que é uma IA, o que é uma má idéia chamá-los de que não é isso.
Vamos chamar este de G de objeto de jogo e depois vamos colocar G aqui em seu lugar.
E se for esse o caso, então vamos romper com o índice estabelecido para aquele que realmente acabou de corresponder
e então iremos.
Se o índice a ser removido for maior ou igual a menos um, então podemos fazer a remoção do ponto de um item.
Índice para remover.
Agora precisamos fazê-lo desta forma, onde primeiro fazemos um looping por toda a coisa e depois a retiramos usando
seu índice.
Porque as listas não gostam que as coisas sejam tiradas do meio delas quando se está fazendo looping através delas.
É por isso que fizemos assim.
Ok, então esse é o nosso inventário G, então economize isso.
Agora que todos os agentes vão precisar ter acesso ao inventário.
Volte ao seu script CSS de agente G.
E no topo vamos acrescentar um novo item que será nosso inventário.
Então o inventário G público é igual a um novo inventário G, certo?
Assim, agora todos os nossos agentes, os pacientes e as enfermeiras terão acesso para colocar as coisas no inventário
e verificar se as coisas estão no inventário.
Agora, a questão é, quando vamos pegar o cúbico e colocá-lo em nosso inventário?
Você não quer isso aí o tempo todo porque os cubículos só podem ser propriedade de um paciente de cada
vez ou de um tipo de enfermeira paciente.
O que vamos fazer neste caso em particular, e esta não é a única maneira de fazê-lo,
mas antes de tudo, vamos ter a enfermeira antes mesmo de começar o plano de conseguir pacientes, e isto se tornará um plano.
Atualmente, é apenas uma tarefa que temos aí dentro.
Vamos acrescentar uma segunda condição prévia.
Portanto, não queremos nem mesmo que o plano possa ser iniciado até que haja também um cubículo livre.
Portanto, adicione um cubículo livre ali.
Certifique-se de que sua grafia esteja correta, exatamente a mesma grafia que você acaba vendo aqui quando os cubículos
são adicionados ao estado mundial.
Então agora temos esta condição que sabemos que há um cubículo livre no mundo quando o paciente está realmente
correndo.
Agora o agente tem um inventário, então as ações podem obter esse inventário do agente.
Mas você teria que fazer uma chamada de componentes para conseguir isso.
Portanto, o que eu quero fazer nesta classe de ação G é realmente apenas agarrá-la aqui também para
que possamos nos referir a ela sem ter que escrever um código tão longo ou ir para a versão otimizada de execução obter componente
toda vez que precisarmos.
Portanto, é o inventário G em nossas ações.
E isso só vai apontar para o agente que o tem.
Portanto, aqui em cima, quando estivermos construindo nossa ação, vamos acrescentar mais.
Na verdade, eu não estou fazendo isso no construtor, estou fazendo isso ao acordar e aqui teremos
inventário igual a este ponto obter componente.
Que será nosso agente.
Inventário DOT.
Certo.
Isso vai tornar muito mais fácil trabalhar e ter paciência.
Então, abra isso.
E a primeira coisa que vamos fazer é obter um recurso.
E, na verdade, já comecei este código.
Você pode vê-lo lá.
O recurso vai ser o que você quiser colocar em seu inventário.
E, neste caso, para ter paciência, acontece que é o cubículo.
Portanto, vamos conseguir o cubículo depois que o alvo tiver tido sucesso ou falhado, porque se não conseguirmos
o alvo, não precisamos de um cubículo.
Portanto, vamos descer aqui e adicionar ao recurso igual a g world dot instance dot remove cubículo e isso dará ao nosso recurso
um ponteiro para o cubículo que está em primeiro lugar naquela fila.
Agora também queremos testar se é nulo ou não.
Portanto, antes de mais nada, diremos que se o recurso não for igual a zero, então vamos adicioná-lo ao inventário de enfermeiros.
Assim, o ponto de inventário acrescenta item.
Recurso.
E se for nulo, se o recurso for igual a nulo.
O que eu acho que poderia ser uma afirmação L, não poderia.
Faz mais sentido, porque se não for nulo, vai ser nulo.
Certo, então vamos nos livrar disso.
Se acontecer de ser nulo neste caso, então g mundo.
Exemplo de ponto, ponto adicionar paciente.
Alvo.
Portanto, o que estamos fazendo aqui é que, se não conseguirmos segurar o cubículo, também vamos
liberar o paciente porque não precisamos mais do paciente e todo o pré-apresentação vai realmente falhar.
Por isso, também estabeleceremos aqui uma meta para igualar agora e depois vamos devolver um falso.
Agora, se ultrapassarmos isso e estivermos aqui embaixo, significa que estamos, de fato, em um verdadeiro
estado.
Tínhamos um cubículo livre, tiramos um cubículo.
Portanto, precisamos afetar também o estado mundial.
Portanto.
G mundo.
Exemplo de ponto.
O mundo não tem mundo.
Estado modificado.
E aqui seremos cúbicos livres e vamos fazer um modificador de menos um.
Então, o que isso vai fazer?
Bem, vai reduzir a contagem que está naquela condição mundial em um.
Agora, lembre-se, de volta a Modificar o Estado neste exemplo em particular, nós o temos para que, se chegar
a zero, ele realmente remova o estado completamente do meio ambiente.
Portanto, quando ficarem sem cubículos, não haverá nenhum cubículo sentado no estado, porque os estamos
tirando enquanto os pegamos aqui.
Agora, o que vai ser feito no posto?
Bem, se conseguimos passar e fizemos a ação com sucesso, então, no Post executar, queremos
tirar um paciente à espera.
Mundo So G.
O exemplo ensinado não ganha o mundo.
O Estado Modificar e, neste caso, sua espera.
E menos um.
E então também vamos dizer que se tivermos um alvo, que neste caso é nosso agente ao qual nos dirigimos
na sala de espera, então o alvo será o ponto de destino.
Componente.
G agente.
Ponto de inventário de ponto adiciona item.
Recurso.
Assim, estamos adicionando o cubículo ao agente, o inventário do paciente, para que a enfermeira encontre o cubículo.
E então, se descobrir que a enfermeira encontra o paciente, então a enfermeira dá ao paciente acesso ao cubículo.
Então agora ambos têm o mesmo cubículo em seu inventário, o que significa que agora podemos ir em frente
e criar as ações onde ambos os nossos agentes se dirigem para aquele cubículo e nós voltaremos e faremos isso no próximo
vídeo.