Buscar

Desenvolvimento Mundo De Wumpus Com Algoritmos Reativo e Genético

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DESENVOLVIMENTO MUNDO DE WUMPUS COM ALGORITMOS 
GENÉTICOS: 
Trabalho refente a disciplina de Inteligencia Computacional. 
 
Edson Martins Cavalcante 
Matrícula: 201533840014 
Engenharia da Computação UFPA 
 
Pedro da Silva Cavalcante 
Matrícula: 201633840029 
Engenharia da Computação UFPA 
 
Valdeney André Matos Júnior 
Matrícula: 201733840042 
Engenharia da Computação UFPA 
 
 RESUMO 
 
O artigo a seguir introduz tecnicas computacionais inteligentes como objetivo desenvolver um 
jogo aplicando principios básicos de algoritmo genêtico e agente reativo. Algoritmos 
Genéticos são baseados no princípio Darwiniano da evolução das espécies, são algoritmos 
probabilísticos que fornecem um mecanismo de busca paralela e adaptativa baseado no 
princípio de sobrevivência dos mais aptos e na reprodução. O experimento se baseia na 
pesquisa de mercado dos jogos e na apliação dos conceitos de inteligencia artificial no 
desenvolvimento do jogo mundo de Wunpus. 
Palavras-chave: PyGame, Python, Criação de Jogos, Introdução, Programação. 
 
1. INTRODUÇÃO 
 
O mercado de jogos teve uma grande crescente pelo mundo em decorrência do 
isolamento social provocado pela pandemia de SARS-Cov-2. O mais recente levantamento da 
Pesquisa Games Brasil (PGB 2021) afirma que jogos tiveram uma relevância importante no 
período de quarentena, 46% dos entrevistados disseram que jogaram mais com o isolamento 
social e 42,2% relataram ter gasto mais dinheiro com jogos. Outro dado gerado pela pesquisa 
descreve que dois terços dos entrevistados afirmaram ter assistido mais conteúdos a respeito 
de jogos. A receita do mercado de jogos cresceu 12% no ano de 2020, segundo SuperData. 
 
 
 
2. LINGUAGEM DE PROGRAMAÇÃO 
 
O projeto visa a criação de jogos, utilizando a linguagem de programação Python, que 
é uma linguagem de alto nível, relativamente simples, de fácil acesso e compreensão. Bem 
difundido entre profissionais da indústria, professores especialístas, matemáticos e 
pesquisadores. Conta com o suporte de diversas bibliotecas, que por sua vez se tratam de 
subprogramas utilizados para a aplicação de software, sendo um diferencial quando 
comparado com outras linguagens de programação. A biblioteca PyGame possue ferramentas 
usadas para simplificar o desenvolvimento de jogos, e entre suas funcionalidades estão 
incluídos os mecanismos de rederização 2D/3D, colisão, controle e linguagem Script. 
 
3. SISTEMAS INTELIGENTES 
 
 A Inteligência Computacional é uma área da ciência que busca, através de técnicas 
inspiradas na Natureza, o desenvolvimento de sistemas inteligentes que imitam aspectos do 
comportamento humano, tais como: aprendizado, percepção, raciocínio, evolução e 
adaptação. 
Algoritmos Genéticos são algoritmos matemáticos inspirados nos mecanismos de 
evolução natural e recombinação genética. A técnica de Algoritmos Genéticos fornece um 
mecanismo de busca adaptativa que se baseia no princípio Darwiniano de reprodução e 
sobrevivência dos mais aptos. 
 
4. ALGORITMOS GENÉTICOS: PRINCÍPIOS E APLICAÇÕES 
 
Algoritmos Genéticos constituem uma técnica de busca e otimização, altamente 
paralela, inspirada no princípio Darwiniano de seleção natural e reprodução genética. De 
acordo com a teoria de C. Darwin, o princípio de seleção privilegia os indivíduos mais aptos 
com maior longevidade e, portanto, com maior probabilidade de reprodução. Indivíduos com 
mais descendentes têm mais chance de perpetuarem seus códigos genéticos nas próximas 
gerações. Genes constituem a identidade de cada indivíduo e estão representados nos 
cromossomas. Estes princípios são imitados na construção de algoritmos computacionais que 
buscam uma melhor solução para um determinado problema, através da evolução de 
populações de soluções codificadas através de cromossomas artificiais. Um cromossomo é 
uma estrutura de dados que representa uma das possíveis soluções do espaço de busca do 
problema. Cromossomo são então submetidos a um processo evolucionário que envolve 
avaliação, seleção, recombinação sexual (crossover) e mutação. Após vários ciclos de 
evolução. 
 
5. DESCRIÇÃO DO JOGO 
 
O jogo a ser desenvolvido é o Mundo de Wumpus, onde será criado um ambiente de 
rederização 2D com características de matriz 4x4. Foram adicionados quatro elementos: 
Agente, Wumpus, Poço e Ouro. O objetivo do jogo é fazer com que o usuário controle o 
movimento do Agente pelo ambiente, fazendo com que este expresse reações em palavras ao 
colidir com objetos ou se aproximar deles. 
 
6. LÓGICA DA PROGRAMAÇÃO WUMPUS 
 
A princípio é necessario planejar as etapas de desenvolvimento do software, buscando 
otimizar e organizar uma sequência lógica. Foi criado um fluxograma, onde o mesmo, 
representa a sequência de programação, com o objetivo de esclarecer a ideia envolvida no 
desenvolvimento do jogo. O fluxograma de sequência do código de programação pode ser 
apreciado na Figura 1. 
 
Figura 1 – Fluxograma de programação do jogo 
Fonte: Autor, 2021. 
 
O código de programação é iniciado com inserção da biblioteca Pygame. Um display é 
programado com dimensões de 600 pixels nos eixos X e Y, tendo seguimentos separados e 
hachurados na cor verde. 
As figuras que representam os elementos do jogo foram criados no site pixelart. Em 
seguida foram carregadas e posicionadas no código com dimensões escalares de 150 pixel nos 
eixos X e Y. 
A função KEYDOWN é utilizada para trabalhar com as teclas do computador na 
movimentação do personagem. As teclas programadas W, A, D e S fazem o Agente ir nas 
direções cima, esquerda, direita e baixo respectivamente, com movimentações de 150 pixel no 
ambiente. Quando as figuras colidem ou se aproximam a ferramenta COLLIDERECT tem o 
papel de enviar uma mensagem ao jogador descrevendo o tipo de sensação do Agente. 
 As três linhas criadas na vertical e horizontal foram projetadas afim de fornecer a 
sensação de matriz 4x4. As linhas vão de uma ponta a outra da janela, separadas 150 pixel de 
distância umas das outras nos eixos X e Y. 
 
7. LÓGICA DO JOGO 
O Mundo de Wumpus foi desenvolvido com funções simples de impressão do Agente, 
onde o mesmo anda pelo ambiente através do controle de usuário, e ao se aproximar de 
objetos expressa reações que variam quando deparado aos diferentes elementos, sendo: poço, 
ouro ou wumpus. As expressões apresentadas podem ser: brisa, brilho e fedor. O Agente ao 
cair no poço é comunicado com “caí no poço”. Caso ache o ouro é informado a mensagem 
“achei ouro”. Se o mesmo se deparar com o Wumpus, a nota exibida será “Wumpus pegou”. 
 
 
Figura 2 – Agente e os sentindo brisa. 
Fonte: Autor, 2021. 
 
 
Figura 3 – Agente e os sentindo fedor. 
Fonte: Autor, 2021. 
 
 
Figura 4 – Agente e os sentindo brilho. 
Fonte: Autor, 2021. 
 
 
 
 
Figura 6 – Agente achou o ouro. 
Fonte: Autor, 2021. 
 
 
 
 
 
 
 
 
Figura 5 – Agente caiu poço. 
Fonte: Autor, 2021. 
 
 
 
Figura 7 – Agente pego pelo wumpus. 
Fonte: Autor, 2021. 
 
 
AGENTE REATIVO 
 O agente reativo é muito simples, ele se baseia nas sensações que são geradas pelo 
ambiente, de acordo com seus sentidos ele toma certas decisões. Esses sentidos são 
implementados no código em uma matriz (int sens[][]), essa matriz é gerada apartir de outra, a 
matriz do ambiente (amb[][]), e assim nós temos o mapeamento dos sentidos a serem 
informados pro agente. 
 A movimentação do agente, na prática, se dá baseada em uma cadeia de condicionais, 
if/else, de acordo com as informações da matriz das sensaçoes, concatenando com a posição do 
agente, assim essa cadeia de condicionais faz uma espécie de de funil, que direciona o nosso 
agente para a melhor movimentação possível, e mais segura, em cada momento. 
 Outra implementação que ajuda demais o agente, é a criação de uma matriz que 
armazene as posições por onde o agente já passou, assim ele consegue distinguir posições 
seguras, deoutras não segurança, e que talvez possam ter algum perigo. A implementação na 
prática foi feita na linguagem c, uma linguagem de baixo nível, e que era a mais conhecida para 
os que desenvolveram o projeto. 
 É basicamente isso que é implementado no agente reativo, procedimentos básicos, e 
predefinidos, diferente do agente genético, onde o agente é moldado de acordo com o 
desenvolvimento das amostras. 
1. CONCLUSÃO 
 
Foi de suma importancia as pesquisas realizadas para obter o conhecimento 
necessarios no desenvolvimento do projeto. Estudos com algoritmos genéticos forneceram 
informações essenciais que truxeram exito ao desemvolvimento do trabalho. Os resultados 
obtidos através das experiéncias trouxe resultados positivos para a aplicação aprendizado e 
conhecimento do grupo. 
 
REFERÊNCIAS 
• Pesquisa Games Brasil 2021. Disponível em 
<https://canaltech.com.br/games/pesquisa-games-brasil-2021-mostra-
crescimento-do-consumo-de-jogos-com-isolamento-182208/>. Acesso em: 
27/05/2021. 
• O que é Python?. Disponível em < https://tecnoblog.net/405640/o-que-e-python-
guia-para-iniciantes/>. Acesso em: 27/05/2021. 
• Pygame: o que é, como instalar e jogos feitos em Pygame. Disponível em < 
https://kenzie.com.br/blog/pygame/>. Acesso em: 28/05/2021. 
• Ensino de leitura e escrita através do pareamento com modelo. Disponível em < 
https://www.scielo.br/j/epsic/a/tYNpjXVGLVtSF3hXLtCTcWf/?format=pdf&lan
g=pt>. Acesso em: 28/05/2021.

Continue navegando