A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.
Transcript of A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.
![Page 1: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/1.jpg)
A Assombrosa Caverna do WumpusA Assombrosa Caverna do Wumpus
Versão Life
Ioram Sette
![Page 2: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/2.jpg)
Estrutura do ProgramaEstrutura do Programa
Inicialização da Interface Gráfica Inicialização do Ambiente Inicialização das Percepções Inicialização do Agente Passo do Agente
• Subpasso 1 - Atualizar conhecimento com novas percepções
• Subpasso 2 - Escolher a próxima ação • Subpasso 3 - Atualizar o Ambiente segundo a ação• Subpasso 4 - Atualizar o Conhecimento• Subpasso 5 - Atualizar o Objetivo
Regras do jogo: subpassos 1, 3 e 4 Estratégia de exploração: subpassos 2 e 5
![Page 3: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/3.jpg)
Inicialização da InterfaceInicialização da Interface
Programa dividido em 4 Janelas:• Tabuleiro 10x10 onde será construido e exibido o
ambiente do jogo.• Tabuleiro 10x10 onde será exibido o conhecimento do
agente sobre o ambiente• Janela de Mensagens indicando o que o usuário deve fazer
para usar o programa• Janela de informação que dá avisos durante o jogo.
![Page 4: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/4.jpg)
![Page 5: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/5.jpg)
Inicialização do AmbienteInicialização do Ambiente
Escolha da posição do Wumpus, Ouro e Buracos,clicando-se sobre as casas da janela de ambiente.
1 psi-term p/ Ambiente::env(monstro=>list, ouro=>list, buracos=>list).
monstro, ouro e buracos são listas de coordenadas com as localizações dos mesmos no tabuleiro::coord(x=>int,y=>int).
Variáveis New_Env e Old_Env p/ passar ambiente entre predicados.
![Page 6: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/6.jpg)
Inicialização das PercepçõesInicialização das Percepções
1 psi-term p/ Percepções::perc(brisa=>list, fedor=>list, brilho=>list).
Botão Iniciar Percepções gera lista das coordenadas onde existirão brisas e fedores (em volta dos buracos e do Wumpus, considerando-se as excessões:cantos) e brilho (na mesma coordenada do ouro).
Variáveis Old_Perc e New_Perc para passar percepções entre predicados.
![Page 7: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/7.jpg)
Inicialização do AgenteInicialização do Agente
Psi-term usado para o Agente e seu conhecimento:::agent(pos=>coord, obj=>goal, wumpus=>list, morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).goal := {acharouro;acharsaida}
Variável persistente para representar o Agente:persistent(agente)?
![Page 8: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/8.jpg)
![Page 9: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/9.jpg)
PassosPassos
Engloba os 5 subpassos Pode ser dado todo de uma vez, ou dividido em seus
subpassos Existem 2 variáveis persistentes estado e subestado
que indicam o número do passo e do subpasso respectivamente.
O subpasso recebe as variáveis Env, Perc, Acao e retorna New_Env, New_Perc e retorna as variáveis New_Env, New_Perc e New_Acao
![Page 10: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/10.jpg)
Subpasso 1Subpasso 1Agente atualiza seu conhecimento Agente atualiza seu conhecimento
com suas novas percepçõescom suas novas percepções
Agente percebe se em sua posição atual existe brisa ou fedor, e descobre se as casas ao seu redor são seguras ou se existem riscos (wumpus? ou buraco?) ** colocar regras que implementam esse raciocínio **
Remove os riscos do wumpus? E buracos? das casas que ele sabe que estão seguras ** colocar regras disso **
Tenta descobrir onde está o Wumpus.• porque não com os buracos, explica estratégia
Pinta Janela do Agente
![Page 11: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/11.jpg)
Subpasso 2Subpasso 2Escolhendo a AçãoEscolhendo a Ação
De acordo com seu objetivo, escolhe uma das possíveis acoes:acao := {andar;pegar;atirar;voltar;fim}.
Se o objetivo for achar ouro, as ações podem ser:• Pegar, se o agente está numa casa com brilho!• Atirar se o agente sabe onde está o Wumpus!• Andar, caso contrário.
Se o objetivo for achar saída, ele volta (voltar) até a casa 1,1 e termina o jogo (fim).
![Page 12: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/12.jpg)
Estratégia de Andar e VoltarEstratégia de Andar e Voltar
Andar sempre em casa seguras, dando preferência às menos visitadas.
Ordem de preferência: Direita, Esquerda, Baixo, Cima.
Voltar sempre em casas já visitadas. Ordem de preferência: Esquerda, Cima,
Direita, Baixo. Evita girar Evita também choque nas paredes (explicar
como faz)
![Page 13: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/13.jpg)
Subpasso 3Subpasso 3Atualização do AmbienteAtualização do Ambiente
Atualizar ambiente nos casos:• do Agente matar Wumpus e • do Agente pegar o Ouro
![Page 14: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/14.jpg)
Subpasso 4Subpasso 4Atualização do AgenteAtualização do Agente
Caso a ação seja atirar:• retirar a flecha dos objetos do agente• retirar fedor de suas percepções• retirar wumpus! de seu conhecimento.
Caso a ação seja pegar:• adicionar ouro aos objetos
Caso a ação seja andar ou voltar:• atualizar posição do agente.
** mostrar código **
![Page 15: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/15.jpg)
Subpasso 5Subpasso 5Atualização do ObjetivoAtualização do Objetivo
Caso a ação seja pegar, o objetivo será alterado de acharouro para acharsaida.
![Page 16: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/16.jpg)
![Page 17: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/17.jpg)
Hierarquia de TiposHierarquia de Tipos
item := {monstro;ouro;buraco}. percept := {brisa;brilho;fedor}. e’ grito,
choque na parede? goal := {acharouro;acharsaida}. acao := {andar;pegar;atirar;voltar;fim}. objeto := {ouro;arco;flecha}.
![Page 18: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/18.jpg)
Hierarquia de ClassesHierarquia de Classes
::coord(x=>int, y=>int). ::env(monstro=>list, ouro=>list, buracos=>list). ::perc(brisa=>list, fedor=>list, brilho=>list). ::agent(pos=>coord, obj=>goal, wumpus=>list,
morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).
![Page 19: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/19.jpg)
RegrasRegras
Preferência a regras que funções. Não é trivial utilizar-se funções e predicados
conjuntamente. Ex.: Determinar se coordenada contida numa
lista de coordenadas: contem(X,[]) :- fail.contem(X,[Y|S]) :- (X.x =:= Y.x, X.y =:= Y.y) ; contem ( X, Y).
![Page 20: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/20.jpg)
FunçõesFunções
As únicas utilizadas foram as do ambiente gráfico, event_handler e handle_event.
event_handler (Old_Env) -> handle_event1(xGetEvent(wumpuswindow, eventmask=>wumpusmask), Old_Env).
![Page 21: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/21.jpg)
Predicados X Psi-TermsPredicados X Psi-Terms
xmonstro(X,Y). xouro(X,Y). xburaco(X,Y).::env(monstro=>list, ouro=>list, buracos=>ist).
xcheiro(X,Y), xbrisa(X,Y), xbrilho(X,Y).::perc(brisa=>list, fedor=>list, brilho=>list).
ouro, monstro, buraco, brilho, cheiro, brisa::agent(pos=>coord, obj=>goal, wumpus=>list, morto=>bool, ok=>list, objs=>list, vis=>list, fedor=>list, brisa=>list, pw=>list, nw=>list, pb=>list, nb=>list).
![Page 22: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/22.jpg)
DiscussõesDiscussões
Assert, Retract X Old_Var, New_Var Assert, Retract X Persistent(var)?
** mostra codigo comparando uso de um x o outro **
+ e - de OldVar NewVar x Persistent(var)
![Page 23: A Assombrosa Caverna do Wumpus Versão Life Ioram Sette.](https://reader036.fdocumentos.tips/reader036/viewer/2022062512/552fc10b497959413d8c2708/html5/thumbnails/23.jpg)
Demonstração AoVivoDemonstração AoVivo
Local: Laboratório C6Dia: 28/01
Horário: NOW!
Estão todos convidados!! :)