Pular para o conteúdo principal

Módulo ambiente

Descrição do módulo

O módulo ambiente implementa a Classe Ambiente que é responsável por construir o cenário do mundo do Wumpus, além disso, a classe implementa métodos que posicionam os objetos e suas percepções de forma correta no ambiente.

Expeficicações do Ambiente

  • Tamanho (n) = ordem(n) da matriz quadrada (n >= 3). Linha e coluna = (n - 1);
  • Objetos: poços (p), Wumpus (W) e ouro (o). Quantidade? [São parâmetros definidos pelo usuário (p, W, o >= O). E, também, podem ser atribuídos automaticamente, de acordo com o tamanho do ambiente (n), via a definição de alguma regra].
  • A partir dos objetos, posicionar no ambiente, também, as percepções geradas por cada um deles.
  • A casa (0,0) é a única que não pode ter nenhum objeto, pois é a posição inicial do Agente
  • Onde houver poço não pode ser posicionado o ouro e o Wumpus. No entanto, estes podem ser posicionados em quaisquer uma das outras casas.

Classe

class Ambiente:

Parâmetros da classe

ParâmetrosDescrição
dimensao_ambienteEsse parâmetro define o tamanho do Mundo do Wumpos, o ambiente é sempre uma matriz quadrada.
wumpusDefine a quantidade de Wumpus no Ambiente.
ouroDefine a quantidade de Ouro no Ambiente

Métodos da classe

MétodosDescrição
Ambiente.tempo_pausaPausa a execução por um tempo determinado na inicialização da instáncia.
Ambiente.clearLimpa o terminal.
Ambiente.atualiza_pos_agenteAtualiza a posição do Agente no Ambiente.
Ambiente.get_pos_objetosObtem as posições dos Objetos no Ambiente.
Ambiente.get_percepcoesObtem as percepções dos Objetos no Ambiente.
Ambiente.__add_pos_obj_mapPosiciona o objeto em um local válido no ambiente, para isso, usa o método Ambiente.__sortear_pos para sortear a posição.
Ambiente.__salvar_pos_objetosPArmazena as posições dos Objetos em um dicionário Python.
Ambiente.__sortear_posSorteia uma posição para adicionar um objeto.
Ambiente.__add_percepcoes_objPosiciona as percepções de um dado objeto ao seu redor.
Ambiente.__add_pos_wumpusPosiciona o(s) Wumpos e as suas percepções no ambiente, usa os métodos Ambiente.__add_pos_obj_map e Ambiente.__add_percepcoes_obj para realizar a lógica.
Ambiente.add_pos_pocosPosiciona os poços e as suas percepções no ambiente, usa os métodos Ambiente.__add_pos_obj_map e Ambiente.__add_percepcoes_obj para realizar a lógica.
Ambiente.__add_pos_ouroPosiciona o(s) Ouro(s) e as suas percepções no ambiente, usa o método Ambiente.__add_pos_obj_map para realizar a lógica.
Ambiente.__add_pos_agenteAdiciona o Agente na posição [0, 0]
Ambiente.__menuMenu com as descrições dos objetos.
Ambiente.infos_ambienteMostra informações sobre o Mundo do Wumpus.
Ambiente.mostrar_ambienteMostra a matriz que representa o Mundo do Wumpus.
Ambiente.mostrar_percepcoesMostra as posições das percepções dos objetos.

Exemplos 1

Tamanho do mundo 3x3

Código:

main.py
from ia_wumpus import Ambiente

amb = Ambiente(dimensao_ambiente=3)
amb.mostrar_ambiente()

Saída:

====== Menu - Mundo do Wumpus ======
+ 1 - Wumpus
+ 2 - Poços
+ 3 - Ouro
+ 4 - Agente
====================================

Mundo do Wumpus:
[[4 1 0]
[2 2 3]
[0 0 2]]

Exemplos 2

Esse exemplo mostra a matriz que representa o ambiente com os objetos em suas posições e as posições das percepções dos objetos.

Tamanho do mundo 3x3

Código:

main.py
from ia_wumpus import Ambiente


amb = Ambiente(dimensao_ambiente=3)
amb.mostrar_ambiente()
amb.mostrar_percepcoes()

Saída:

====== Menu - Mundo do Wumpus ======
+ 1 - Wumpus
+ 2 - Poços
+ 3 - Ouro
+ 4 - Agente
====================================

Mundo do Wumpus:
[[4 0 0]
[2 1 3]
[2 0 2]]

======== Posições das Percepções - Mundo do Wumpus ========
Posição Fedor :
[(1, 2), (1, 0), (2, 1), (0, 1)]
Posições Brisa :
[(0, 1), (1, 2), (2, 1), (1, 2), (0, 2), (0, 0), (1, 1)]
Posição Brilho :
[(2, 1)]
============================================================

Exemplos 3

Para realizar a atualização basta usar o método Ambiente.mostrar_ambiente() passando uma tupla com as coordenadas válidas dos eixos x e y, Para visualizar a atualização da posição, basta usar o método Ambiente.mostrar_ambiente() após atualizar a posição.

Tamanho do mundo 3x3

Código:

main.py
from ia_wumpus import Ambiente


amb = Ambiente(dimensao_ambiente=3)
amb.mostrar_ambiente()
amb.atualiza_pos_agente((1, 1))
amb.mostrar_ambiente()
amb.atualiza_pos_agente((2, 2))
amb.mostrar_ambiente()

Saída:

====== Menu - Mundo do Wumpus ======
+ 1 - Wumpus
+ 2 - Poços
+ 3 - Ouro
+ 4 - Agente
====================================

Mundo do Wumpus:
[[4 3 0]
[0 2 2]
[1 0 2]]

Mundo do Wumpus:
[[0 3 0]
[0 4 2]
[1 0 2]]

Mundo do Wumpus:
[[0 3 0]
[0 0 2]
[1 0 4]]

O exemplo 3 mostra a atualização do Agente, para cada chamada do método Ambiente.mostrar_ambiente() o Agente anda uma casa na diagonal.