SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
Instituto Superior Politécnico de Tecnologias e Ciências
ISPTEC
Desenvolvimento do jogo da velha em Inteligência Artificial usando
processing.
Por: Nunes Fernando.
Luanda, 2017
2
Instituto Superior Politécnico de Tecnologias e Ciências
ISPTEC
Desenvolvimento do jogo da velha em Inteligência Artificial usando
processing.
Apresentação do projecto de desenvolvimento
do jogo da velha em inteligência artificial usando
processing como condição para aprovar na
cadeira de inteligência artificial do quarto ano do
curso de Engenharia Informática.
Por: Nunes Fernando.
Luanda,2017
3
Sumário
Índice
Objectivos .................................................................................................. 4
Específicos............................................................................................... 5
Introdução.................................................................................................. 6
Desenvolvimento ....................................................................................... 7
Aspectos Científicos e técnicos do jogo da velha..................................... 7
Aspectos técnicos do jogo da velha....................................................... 13
Resultados................................................................................................ 15
Conclusão................................................................................................. 18
Bibliografia............................................................................................... 19
4
Objectivos
Gerais
 Desenvolver um jogo em inteligência artificial usando uma
linguagem de programação e que seja capaz de simular um
“comportamento” que seja considerado inteligente usando uma
linguagem de programação de qualquer paradigma que seja.
5
Específicos
 Desenvolver o jogo da velha usando processing.
 Desenvolver o jogo da velha que seja capaz de simular inteligência
artificial.
 Aplicar inteligência artificial no desenvolvimento do jogo da velha,
simulando um agente capaz de reconhecer perceções com base em
inputs do jogo e seja capaz de agir em função destes.
6
Introdução
O presente trabalho de Inteligência Artificial tem como tema
Desenvolvimento do jogo da velha usando processing.
Ao longo deste projecto vai se desenvolver o conceito geral e histórico da
essência do próprio jogo e partindo da origem do jogo, passando até as
regras de atuação do jogo. Também apresentar-se-á as estratégias do
próprio jogo da velha.
Depois deste trajecto se passará para a implementação destas regras para
a codificação de modo a desenvolver o jogo velha em processing
carregando toda moldagem do processo real para a virtualização do
mesmo.
E por fim culminará o desenvolvimento do projecto com a conclusão
sintetizando tudo o quanto foi feito ao longo do desenvolvimento do
projecto.
7
Desenvolvimento
O jogo da velha (português brasileiro) ou jogo do galo (português de
Portugal) ou Tic Tac Toe como é chamado em países de língua
oficial inglesa é um jogo de raciocínio lógico de regras extremamente
simples, que não possui grandes dificuldades para os seus executantes ou
jogadores e de fácil aprendizagem. Ao longo deste trabalho vai se mostrar
a veracidade do referido acima.
Fig.01: exemplo de facilidade do jogo da velha.
Origem
A origem do jogo da velha é até certo ponto ainda questionável, contudo
muitos estudiosos acreditam fortemente que o jogo teve origem no
Egipto, afirmação esta que é sustentada pelo facto de se encontrar tábuas
ou tabuleiros esculpidos na rocha, que teriam mais de 3.500 anos. Já
outros estudiosos acreditam que o jogo teve origem na europa pelo facto
de se encontrar o desenho do tabuleiro em Warscheueck na Áustria e em
uma caverna Fontainebleu na França. Contudo apoiam a ideia de que o
jogo teve origem no Egipto.
Aspectos Científicos e técnicos do jogo da velha
O jogo da velha embora seja bastante simples de se aprender, apresenta
muitas possibilidades em termos matemáticos, vendo a coisa do ponto de
vista de possibilidades. Por exemplo o jogo da velha é um jogo de 3x3, o
que significa que apresenta 362.880 possibilidades, isto deve-se pelo de
ter 3x3 o que dá 9 e fazendo 9! Dá exactamente o número acima referido.
O que sistematicamente quer dizer que existem 255.168 combinações
8
vencedoras no jogo se assumirmos que “X” é o vencedor. Tecnicamente
tem as seguintes relações:
 131.184 Jogos finalizados são ganhos por 'X'
 1.440 São ganhos por 'X' após 5 movimentos
 47.952 São ganhos por 'X' após 7 movimentos
 81.792 São ganhos por 'X' após 9 movimentos
 77.904 Jogos finalizados são ganhos por 'O'
 5.328 São ganhos por 'O' após 6 movimentos
 72.576 São ganhos por 'O' após 8 movimentos
 46.080 Jogos finalizados resultam em empate
Se ignorarmos as jogadas assimétricas teremos:
 91 Resultados únicos são ganhos por 'X'
 21 São ganhos por 'X' após 5 movimentos
 58 São ganhos por 'X' após 7 movimentos
 12 São ganhos por 'X' após 9 movimentos
 44 Resultados únicos são ganhos por 'O'
 21 São ganhos por 'O' após 6 movimentos
 23 São ganhos por 'O' após 8 movimentos
Regras de jogabilidades
O jogo da velha é jogado em turnos alternados entre dois jogadores, o
jogador humano e o jogador artificial (o computador). O jogo passa-se
num tabuleiro de 3x3 posições nas quais os jogadores fazem suas marcas
em uma das posições durante as rodadas, O jogador que inicia a partida
utiliza o símbolo “X”, enquanto o segundo jogador utiliza o símbolo “O
Cada jogador é livre para colocar uma marca em qualquer posição no seu
turno, desde que a posição esteja vazia (sem marcas). Ao colocar uma
marca no tabuleiro, a jogada passa para o próximo jogador, aonde o
processo é repetido até que um dos jogadores vença, ou até o tabuleiro
ser completamente preenchido, situação na qual ocorre empate.
A vitória ocorre quando um jogador consegue colocar três símbolos em
sequência, seja em linha, coluna ou na diagonal principal do tabuleiro. O
9
objetivo dos jogadores, então, é colocar três marcas numa das
configurações válidas, enquanto evitam que o seu oponente consiga fazer
as três marcas antes dele.
Fig02: Exemplo de Victória no jogo da velha
Assim, os critérios de avaliação final de uma partida para o jogador
humano são as seguintes:
• Vitória: o jogador humano consegue colocar as três marcas numa das
configurações válidas do jogo.
• Empate: o tabuleiro é completamente preenchido e nem o jogador
humano, nem o oponente artificial, conseguem colocar as três marcas
numa das configurações válidas.
• Derrota: o oponente artificial consegue colocar as três marcas numa das
configurações válidas.
Estratégias
O jogo da velha é de raciocínio lógico, matemático e estratégico. Serve
para trabalhar a coordenação motora, Senso de lógica, Senso direcional,
Planejamento, etc.
A partida será disputada entre o jogador humano contra programas ou
agente inteligentes desenvolvidos por outro jogador ou fornecidos pela
10
própria empresa desenvolvedora do game. Mas o que seria agentes
inteligentes.
O jogo da velha pode ser dividido e tratado em agente e ambiente. O
agente seria o jogador, que percebe o seu ambiente por meio de sensores
(os parâmetros) e age sobre o ambiente por intermédio de atuadores, isto
é, o valor retornado com as coordenadas da jogada.
Ambiente do jogo da velha
Completamente observável
Os agentes têm acesso ao estado completo do ambiente. Os
sensores detectam todos os Aspectos que são relevantes para a
escolha da ação. A cada jogada o jogador recebe a matriz do
tabuleiro atualizada.
Estratégico
O próximo estado do ambiente é completamente determinado pelo
estado atual e pela ação executada pelos agentes.
Sequencial
A decisão afeta todas as ações futuras. Ações em curto prazo
podem ter consequências em longo prazo. O jogador faz uma
jogada, o próximo jogador pode dar continuidade a sua jogada
anterior como também se defender ou iniciar uma nova jogada.
Estático
O ambiente não se altera enquanto o agente está decidindo sobre a
realização de uma ação, nem precisa se preocupar com a passagem
do tempo.
11
Discreto
O ambiente tem um número finito de estados distintos, também
tem um número discreto de perceções e ações.
Multiagente
O agente está em um ambiente de dois agentes, o jogo precisa de
dois jogadores pra disputar a partida.
Existem 2 tipos de agentes inteligentes para o jogo da velha: o agente que
faz a melhor jogada analisando a situação atual, o que significa que para
sua próxima jogada o seu movimento atual vai ser realmente útil; e o
agente que planeja as suas jogadas, este que age com estratégia. O agente
que faz a melhor jogada olha para o tabuleiro e se pergunta: "O que pode
me fazer ganhar ou perder?”. Já o agente estratégico pode fazer jogadas
que aparentemente não tem sentido, mas que futuramente vão decidir a
partida.
Implementação
A implementação do jogo da velha mostra claramente, como as técnicas
de inteligência artificial são úteis. Essa implementação pode ser feita
diversas formas com níveis de abstração diferentes.
Cada melhora no desempenho do jogo, implica primeiramente na escolha
das estruturas mais adequadas para representar o problema e na
consequente utilização de técnicas de IA.
A cada melhora no algoritmo, percebe-se que este cresce em
complexidade, uso de generalizações, clareza de conhecimento e
extensibilidade da abordagem.
A utilização de outras técnicas de IA, mais potentes, resulta em jogos com
melhor desempenho tais como jogos de estratégia, onde a máquina
12
praticamente melhora suas estratégias conforme vai "aprendendo" com o
desafiante.
Minimax lida com jogos como jogo da velha, no qual cada jogador pode
ganhar, perder ou empatar. No nosso exemplo específico que é o jogo da
Velha, você pode considerar que após a sua jogada, o adversário vai
escolher a melhor jogada possível e então você a partir dessa melhor
jogada já pensa na melhor que você pode fazer e assim sucessivamente.
Por exemplo, vamos chamar um jogador de MIN e outro de MAX (daí veio
nome: MINIMAX). O jogador MAX sempre considera que MIN vai escolher
a jogada que o deixa na pior situação (pior caso para MAX) e que ele (o
MAX) vai escolher a melhor jogada para si. O algoritmo minimax ajuda a
encontrar a melhor jogada ao caminhar pelas opções válidas a partir do
fim do jogo. A cada passo assume-se que o jogador MAX está tentando
maximizar as chances de MAX ganhar, enquanto na próxima rodada o
jogador MIN está tentando minimizar as chances de isso acontecer (ao
maximizar as chances de que ele próprio ganhe).
Resumindo, o jogador usando o algoritmo miniMax constrói uma árvore
de jogadas achando que ambos (ele mesmo e o adversário) sempre
escolherão soluções ótimas para si mesmos. Veja um exemplo de uma
possível parte de uma árvore de jogo da velha. Atente apenas para o
detalhe que nessa árvore temos a impressão que começou no MIN,
quando na verdade começa no MAX. Eu escolhi essa parte do meio da
árvore.
13
Árvore de busca de uma partida de Jogo da velha
Os números que você vê ao fundo representam o VALOR MINIMAX(n).
Esse valor é apenas um “indicativo” de utilidade para o jogador MAX, ou
seja, quanto MAIOR O VALOR da jogada do jogador MIN, melhor para o
MAX e quanto MENOR O VALOR da jogada do jogador MAX, melhor para o
MIN. No caso acima os números indicam as chances de se ganhar com a
jogada correspondente. Caso você faça a jogada no centro do tabuleiro, o
computador irá, com certeza, fazer a jogada no canto superior esquerdo.
Repare que o MIN escolhe o mínimo valor e o MAX escolhe o máximo
valor.
É a sua vez de jogar, o que você escolheria? Fazer um movimento de
defesa impedindo que oponente vença na próxima jogada, iniciar um nova
estratégia, continuar com a sua estratégia de jogadas anteriores ou fazer o
movimento para a vitória? Separe os tipos de jogadas e estabeleça
prioridades. É preferível vencer que impedir que o adversário vença na
próxima jogada.
Aspectos técnicos do jogo da velha
Como já foi dito deste o princípio da apresentação do projecto, o presente
projecto foi desenvolvido usando a língua processing, contudo existem
Aspectos técnicos que foram levados em conta.
O ogo foi desenvolvido usando processing versão 3.3.4, sendo uma
linguagem orientada a objectos apresenta a seguir alguns estratos do
código.
14
Fig03:Exemplo do código do projecto.
Fig04: Exemplo do código zona de matrix.
15
Resultados
 Aspecto visual
O jogo da velha foi desenvolvido na versão desktop, e tem a
seguinte aparência:
Fig03: tela inicial do jogo.
Fig04: exemplo de execução do jogo.
16
Fig05:Exemplo em curso.
17
Fig06: exemplo de victoria do jogo
18
Conclusão
O projecto apresentado, mostra as etapas seguidas para o
desenvolvimento do jogo da velha ou pelo menos mostra a lógica usada
para o desenvolvimento do mesmo. O desenvolvimento deste jogo atingiu
quase todos os resultados esperados, embora não se consiga cobrir todos
os detalhes exigidos no desenvolvimento do jogo de modo que falta por
implementar a componente interatividade, homem-máquina. Contudo a
implementação do projecto seguiu a rigor os demais componentes
requeridos para o caso. Espera-se que evolui nas próximas versões e se
complemente os Aspectos que não foram implementadas nesta versão.
19
Bibliografia
1. Zaslavsky, Cláudia (1982). Tic Tac Toe: And Other Three-In-A Row
Games from Ancient Egypt to the Modern Computer.
2. Kevin Crowley, Robert S. Siegler (1993). «Flexible Strategy Use in
Young Children's Tic-Tat-Toe». Cognitive Science.
3. Portal do professor: http://portaldoprofessor.mec.gov.br
4. KNAUT, Michelle Souza Julio. Ludicidade e prática pedagógica.
Curitiba: Editora Opet, 2012.
5. PIAGET, J. A formação do símbolo na criança: imitação, jogo e
sonho, imagem e representação. 4. Ed. Rio de Janeiro: LTC, 2010.
6. Cortella, Mario Sergio. A escola e o conhecimento: fundamentos
epistemológicos e políticos. 4. Ed. São Paulo: Cortez: Instituto Paulo
Freire, 2001.
7. Falkembach, Gilse. A.Morgental. O Lúdico e os Jogos Educacionais.
In: CINTED - Centro Interdisciplinar de Novas Tecnologias na
Educação, UFRGS. Disponível em: Acesso 14 de junho, 2015.
8. Oliveira, Núcia Alexandra Silva. “Novas” e “Diferentes” Linguagens e
o Ensino de História: construindo significados para a formação de
professores. In: Revista EntreVer, Florianópolis, Jan./Jun. 2012.
9. Secretaria de Educação Fundamental. Parâmetros curriculares
nacionais: história. Brasília: MEC/SEF, 1998.
10. Processing em Https://processing.org/download

Mais conteúdo relacionado

Mais procurados

Optimal auction through Deep Learning
Optimal auction through Deep LearningOptimal auction through Deep Learning
Optimal auction through Deep Learningharmonylab
 
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化美团点评技术团队
 
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)Kongregate
 
HITCON CTF 介紹 - HG 導覽活動
HITCON CTF 介紹 - HG 導覽活動HITCON CTF 介紹 - HG 導覽活動
HITCON CTF 介紹 - HG 導覽活動HITCON GIRLS
 
Criando jogos com python e pygame 1 aula
Criando jogos com python e pygame 1 aulaCriando jogos com python e pygame 1 aula
Criando jogos com python e pygame 1 aulaDiego Lopes
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
OpenALの紹介
OpenALの紹介OpenALの紹介
OpenALの紹介K Moneto
 
從零架設直播伺服器
從零架設直播伺服器從零架設直播伺服器
從零架設直播伺服器Claire Chang
 
AtCoder Regular Contest 022 解説
AtCoder Regular Contest 022 解説AtCoder Regular Contest 022 解説
AtCoder Regular Contest 022 解説AtCoder Inc.
 
[系列活動] 使用 R 語言建立自己的演算法交易事業
[系列活動] 使用 R 語言建立自己的演算法交易事業[系列活動] 使用 R 語言建立自己的演算法交易事業
[系列活動] 使用 R 語言建立自己的演算法交易事業台灣資料科學年會
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjpcocodrips
 
Bypassing Secure Boot using Fault Injection
Bypassing Secure Boot using Fault InjectionBypassing Secure Boot using Fault Injection
Bypassing Secure Boot using Fault InjectionRiscure
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveESUG
 
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6信之 岩永
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석GangSeok Lee
 

Mais procurados (20)

Optimal auction through Deep Learning
Optimal auction through Deep LearningOptimal auction through Deep Learning
Optimal auction through Deep Learning
 
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化
美团点评技术沙龙09 - 美团外卖中的单量预估及列表优化
 
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)
Building Games for the Long Term: Pragmatic F2P Guild Design (GDC Europe 2013)
 
HITCON CTF 介紹 - HG 導覽活動
HITCON CTF 介紹 - HG 導覽活動HITCON CTF 介紹 - HG 導覽活動
HITCON CTF 介紹 - HG 導覽活動
 
Amazon - Parque Amazônia
Amazon - Parque Amazônia Amazon - Parque Amazônia
Amazon - Parque Amazônia
 
Criando jogos com python e pygame 1 aula
Criando jogos com python e pygame 1 aulaCriando jogos com python e pygame 1 aula
Criando jogos com python e pygame 1 aula
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
Java start01 in 2hours
Java start01 in 2hoursJava start01 in 2hours
Java start01 in 2hours
 
OpenALの紹介
OpenALの紹介OpenALの紹介
OpenALの紹介
 
從零架設直播伺服器
從零架設直播伺服器從零架設直播伺服器
從零架設直播伺服器
 
AtCoder Regular Contest 022 解説
AtCoder Regular Contest 022 解説AtCoder Regular Contest 022 解説
AtCoder Regular Contest 022 解説
 
[系列活動] 使用 R 語言建立自己的演算法交易事業
[系列活動] 使用 R 語言建立自己的演算法交易事業[系列活動] 使用 R 語言建立自己的演算法交易事業
[系列活動] 使用 R 語言建立自己的演算法交易事業
 
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
強くなるためのプログラミング -プログラミングに関する様々なコンテストとそのはじめ方-#pyconjp
 
Lifespace Curitiba
Lifespace CuritibaLifespace Curitiba
Lifespace Curitiba
 
Bypassing Secure Boot using Fault Injection
Bypassing Secure Boot using Fault InjectionBypassing Secure Boot using Fault Injection
Bypassing Secure Boot using Fault Injection
 
Bloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future PerspectiveBloc for Pharo: Current State and Future Perspective
Bloc for Pharo: Current State and Future Perspective
 
Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6Unityで使える C# 6.0~と .NET 4.6
Unityで使える C# 6.0~と .NET 4.6
 
[GTMF2019] Python / BlueprintによるUnreal Engineの自動化
[GTMF2019] Python / BlueprintによるUnreal Engineの自動化[GTMF2019] Python / BlueprintによるUnreal Engineの自動化
[GTMF2019] Python / BlueprintによるUnreal Engineの自動化
 
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
[2013 CodeEngn Conference 09] Park.Sam - 게임 해킹툴의 변칙적 공격 기법 분석
 
Sellect Cabral
Sellect CabralSellect Cabral
Sellect Cabral
 

Semelhante a IA Jogo da Velha Processing

Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - PortuguesAlline Oliveira
 
Monografia - Dantrom, O Viajante do Tempo
Monografia - Dantrom, O Viajante do TempoMonografia - Dantrom, O Viajante do Tempo
Monografia - Dantrom, O Viajante do TempoCaio Alonso
 
Algoritmos de jogos
Algoritmos de jogosAlgoritmos de jogos
Algoritmos de jogosiaudesc
 
Workshop Fischer
Workshop FischerWorkshop Fischer
Workshop Fischervincevader
 
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2Fabiana Esteves
 
Slides 4º encontro PNAIC 26 jul Claudia e Fabiana
Slides 4º encontro PNAIC 26 jul Claudia e FabianaSlides 4º encontro PNAIC 26 jul Claudia e Fabiana
Slides 4º encontro PNAIC 26 jul Claudia e FabianaFabiana Esteves
 
Roteiro jogosdigitaisav2
Roteiro jogosdigitaisav2Roteiro jogosdigitaisav2
Roteiro jogosdigitaisav2Diego Moreau
 
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In SantosDesenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In Santosjonathanblacknight
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santosjonathanblacknight
 
Iron Wars - Game Bible
Iron Wars - Game BibleIron Wars - Game Bible
Iron Wars - Game BibleMichel Alves
 
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec SantosDesenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santosjonathanblacknight
 
Palestra Game Design
Palestra Game DesignPalestra Game Design
Palestra Game Designvincevader
 
Artigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosArtigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosFernando Vargas
 
Criação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e CCriação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e CLeinylson Fontinele
 

Semelhante a IA Jogo da Velha Processing (20)

Hexxagon Game
Hexxagon GameHexxagon Game
Hexxagon Game
 
Projeto jogo da-velha
Projeto jogo da-velhaProjeto jogo da-velha
Projeto jogo da-velha
 
Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - Portugues
 
Monografia - Dantrom, O Viajante do Tempo
Monografia - Dantrom, O Viajante do TempoMonografia - Dantrom, O Viajante do Tempo
Monografia - Dantrom, O Viajante do Tempo
 
Algoritmos de jogos
Algoritmos de jogosAlgoritmos de jogos
Algoritmos de jogos
 
Workshop Fischer
Workshop FischerWorkshop Fischer
Workshop Fischer
 
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2
Slides 4º encontro PNAIC 26 jul Fabiana e Claudia Parte 2
 
Slides 4º encontro PNAIC 26 jul Claudia e Fabiana
Slides 4º encontro PNAIC 26 jul Claudia e FabianaSlides 4º encontro PNAIC 26 jul Claudia e Fabiana
Slides 4º encontro PNAIC 26 jul Claudia e Fabiana
 
Roteiro jogosdigitaisav2
Roteiro jogosdigitaisav2Roteiro jogosdigitaisav2
Roteiro jogosdigitaisav2
 
JOGO DO NIM
JOGO DO NIMJOGO DO NIM
JOGO DO NIM
 
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In SantosDesenvolvimento de jogos e Ogre 3D - Dev In Santos
Desenvolvimento de jogos e Ogre 3D - Dev In Santos
 
Cp game design
Cp game designCp game design
Cp game design
 
Desenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip SantosDesenvolvimento de jogos e ogre 3D - Unip Santos
Desenvolvimento de jogos e ogre 3D - Unip Santos
 
Iron Wars - Game Bible
Iron Wars - Game BibleIron Wars - Game Bible
Iron Wars - Game Bible
 
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec SantosDesenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
Desenvolvimento de jogos e ogre 3D - Palestra Fatec Santos
 
Palestra Game Design
Palestra Game DesignPalestra Game Design
Palestra Game Design
 
Historia do videogame
Historia do videogameHistoria do videogame
Historia do videogame
 
Histori do videogame
Histori do videogameHistori do videogame
Histori do videogame
 
Artigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogosArtigo inteligencia artifical-jogos
Artigo inteligencia artifical-jogos
 
Criação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e CCriação de Jogos 2D com Técnicas 3D Utilizando Python e C
Criação de Jogos 2D com Técnicas 3D Utilizando Python e C
 

IA Jogo da Velha Processing

  • 1. Instituto Superior Politécnico de Tecnologias e Ciências ISPTEC Desenvolvimento do jogo da velha em Inteligência Artificial usando processing. Por: Nunes Fernando. Luanda, 2017
  • 2. 2 Instituto Superior Politécnico de Tecnologias e Ciências ISPTEC Desenvolvimento do jogo da velha em Inteligência Artificial usando processing. Apresentação do projecto de desenvolvimento do jogo da velha em inteligência artificial usando processing como condição para aprovar na cadeira de inteligência artificial do quarto ano do curso de Engenharia Informática. Por: Nunes Fernando. Luanda,2017
  • 3. 3 Sumário Índice Objectivos .................................................................................................. 4 Específicos............................................................................................... 5 Introdução.................................................................................................. 6 Desenvolvimento ....................................................................................... 7 Aspectos Científicos e técnicos do jogo da velha..................................... 7 Aspectos técnicos do jogo da velha....................................................... 13 Resultados................................................................................................ 15 Conclusão................................................................................................. 18 Bibliografia............................................................................................... 19
  • 4. 4 Objectivos Gerais  Desenvolver um jogo em inteligência artificial usando uma linguagem de programação e que seja capaz de simular um “comportamento” que seja considerado inteligente usando uma linguagem de programação de qualquer paradigma que seja.
  • 5. 5 Específicos  Desenvolver o jogo da velha usando processing.  Desenvolver o jogo da velha que seja capaz de simular inteligência artificial.  Aplicar inteligência artificial no desenvolvimento do jogo da velha, simulando um agente capaz de reconhecer perceções com base em inputs do jogo e seja capaz de agir em função destes.
  • 6. 6 Introdução O presente trabalho de Inteligência Artificial tem como tema Desenvolvimento do jogo da velha usando processing. Ao longo deste projecto vai se desenvolver o conceito geral e histórico da essência do próprio jogo e partindo da origem do jogo, passando até as regras de atuação do jogo. Também apresentar-se-á as estratégias do próprio jogo da velha. Depois deste trajecto se passará para a implementação destas regras para a codificação de modo a desenvolver o jogo velha em processing carregando toda moldagem do processo real para a virtualização do mesmo. E por fim culminará o desenvolvimento do projecto com a conclusão sintetizando tudo o quanto foi feito ao longo do desenvolvimento do projecto.
  • 7. 7 Desenvolvimento O jogo da velha (português brasileiro) ou jogo do galo (português de Portugal) ou Tic Tac Toe como é chamado em países de língua oficial inglesa é um jogo de raciocínio lógico de regras extremamente simples, que não possui grandes dificuldades para os seus executantes ou jogadores e de fácil aprendizagem. Ao longo deste trabalho vai se mostrar a veracidade do referido acima. Fig.01: exemplo de facilidade do jogo da velha. Origem A origem do jogo da velha é até certo ponto ainda questionável, contudo muitos estudiosos acreditam fortemente que o jogo teve origem no Egipto, afirmação esta que é sustentada pelo facto de se encontrar tábuas ou tabuleiros esculpidos na rocha, que teriam mais de 3.500 anos. Já outros estudiosos acreditam que o jogo teve origem na europa pelo facto de se encontrar o desenho do tabuleiro em Warscheueck na Áustria e em uma caverna Fontainebleu na França. Contudo apoiam a ideia de que o jogo teve origem no Egipto. Aspectos Científicos e técnicos do jogo da velha O jogo da velha embora seja bastante simples de se aprender, apresenta muitas possibilidades em termos matemáticos, vendo a coisa do ponto de vista de possibilidades. Por exemplo o jogo da velha é um jogo de 3x3, o que significa que apresenta 362.880 possibilidades, isto deve-se pelo de ter 3x3 o que dá 9 e fazendo 9! Dá exactamente o número acima referido. O que sistematicamente quer dizer que existem 255.168 combinações
  • 8. 8 vencedoras no jogo se assumirmos que “X” é o vencedor. Tecnicamente tem as seguintes relações:  131.184 Jogos finalizados são ganhos por 'X'  1.440 São ganhos por 'X' após 5 movimentos  47.952 São ganhos por 'X' após 7 movimentos  81.792 São ganhos por 'X' após 9 movimentos  77.904 Jogos finalizados são ganhos por 'O'  5.328 São ganhos por 'O' após 6 movimentos  72.576 São ganhos por 'O' após 8 movimentos  46.080 Jogos finalizados resultam em empate Se ignorarmos as jogadas assimétricas teremos:  91 Resultados únicos são ganhos por 'X'  21 São ganhos por 'X' após 5 movimentos  58 São ganhos por 'X' após 7 movimentos  12 São ganhos por 'X' após 9 movimentos  44 Resultados únicos são ganhos por 'O'  21 São ganhos por 'O' após 6 movimentos  23 São ganhos por 'O' após 8 movimentos Regras de jogabilidades O jogo da velha é jogado em turnos alternados entre dois jogadores, o jogador humano e o jogador artificial (o computador). O jogo passa-se num tabuleiro de 3x3 posições nas quais os jogadores fazem suas marcas em uma das posições durante as rodadas, O jogador que inicia a partida utiliza o símbolo “X”, enquanto o segundo jogador utiliza o símbolo “O Cada jogador é livre para colocar uma marca em qualquer posição no seu turno, desde que a posição esteja vazia (sem marcas). Ao colocar uma marca no tabuleiro, a jogada passa para o próximo jogador, aonde o processo é repetido até que um dos jogadores vença, ou até o tabuleiro ser completamente preenchido, situação na qual ocorre empate. A vitória ocorre quando um jogador consegue colocar três símbolos em sequência, seja em linha, coluna ou na diagonal principal do tabuleiro. O
  • 9. 9 objetivo dos jogadores, então, é colocar três marcas numa das configurações válidas, enquanto evitam que o seu oponente consiga fazer as três marcas antes dele. Fig02: Exemplo de Victória no jogo da velha Assim, os critérios de avaliação final de uma partida para o jogador humano são as seguintes: • Vitória: o jogador humano consegue colocar as três marcas numa das configurações válidas do jogo. • Empate: o tabuleiro é completamente preenchido e nem o jogador humano, nem o oponente artificial, conseguem colocar as três marcas numa das configurações válidas. • Derrota: o oponente artificial consegue colocar as três marcas numa das configurações válidas. Estratégias O jogo da velha é de raciocínio lógico, matemático e estratégico. Serve para trabalhar a coordenação motora, Senso de lógica, Senso direcional, Planejamento, etc. A partida será disputada entre o jogador humano contra programas ou agente inteligentes desenvolvidos por outro jogador ou fornecidos pela
  • 10. 10 própria empresa desenvolvedora do game. Mas o que seria agentes inteligentes. O jogo da velha pode ser dividido e tratado em agente e ambiente. O agente seria o jogador, que percebe o seu ambiente por meio de sensores (os parâmetros) e age sobre o ambiente por intermédio de atuadores, isto é, o valor retornado com as coordenadas da jogada. Ambiente do jogo da velha Completamente observável Os agentes têm acesso ao estado completo do ambiente. Os sensores detectam todos os Aspectos que são relevantes para a escolha da ação. A cada jogada o jogador recebe a matriz do tabuleiro atualizada. Estratégico O próximo estado do ambiente é completamente determinado pelo estado atual e pela ação executada pelos agentes. Sequencial A decisão afeta todas as ações futuras. Ações em curto prazo podem ter consequências em longo prazo. O jogador faz uma jogada, o próximo jogador pode dar continuidade a sua jogada anterior como também se defender ou iniciar uma nova jogada. Estático O ambiente não se altera enquanto o agente está decidindo sobre a realização de uma ação, nem precisa se preocupar com a passagem do tempo.
  • 11. 11 Discreto O ambiente tem um número finito de estados distintos, também tem um número discreto de perceções e ações. Multiagente O agente está em um ambiente de dois agentes, o jogo precisa de dois jogadores pra disputar a partida. Existem 2 tipos de agentes inteligentes para o jogo da velha: o agente que faz a melhor jogada analisando a situação atual, o que significa que para sua próxima jogada o seu movimento atual vai ser realmente útil; e o agente que planeja as suas jogadas, este que age com estratégia. O agente que faz a melhor jogada olha para o tabuleiro e se pergunta: "O que pode me fazer ganhar ou perder?”. Já o agente estratégico pode fazer jogadas que aparentemente não tem sentido, mas que futuramente vão decidir a partida. Implementação A implementação do jogo da velha mostra claramente, como as técnicas de inteligência artificial são úteis. Essa implementação pode ser feita diversas formas com níveis de abstração diferentes. Cada melhora no desempenho do jogo, implica primeiramente na escolha das estruturas mais adequadas para representar o problema e na consequente utilização de técnicas de IA. A cada melhora no algoritmo, percebe-se que este cresce em complexidade, uso de generalizações, clareza de conhecimento e extensibilidade da abordagem. A utilização de outras técnicas de IA, mais potentes, resulta em jogos com melhor desempenho tais como jogos de estratégia, onde a máquina
  • 12. 12 praticamente melhora suas estratégias conforme vai "aprendendo" com o desafiante. Minimax lida com jogos como jogo da velha, no qual cada jogador pode ganhar, perder ou empatar. No nosso exemplo específico que é o jogo da Velha, você pode considerar que após a sua jogada, o adversário vai escolher a melhor jogada possível e então você a partir dessa melhor jogada já pensa na melhor que você pode fazer e assim sucessivamente. Por exemplo, vamos chamar um jogador de MIN e outro de MAX (daí veio nome: MINIMAX). O jogador MAX sempre considera que MIN vai escolher a jogada que o deixa na pior situação (pior caso para MAX) e que ele (o MAX) vai escolher a melhor jogada para si. O algoritmo minimax ajuda a encontrar a melhor jogada ao caminhar pelas opções válidas a partir do fim do jogo. A cada passo assume-se que o jogador MAX está tentando maximizar as chances de MAX ganhar, enquanto na próxima rodada o jogador MIN está tentando minimizar as chances de isso acontecer (ao maximizar as chances de que ele próprio ganhe). Resumindo, o jogador usando o algoritmo miniMax constrói uma árvore de jogadas achando que ambos (ele mesmo e o adversário) sempre escolherão soluções ótimas para si mesmos. Veja um exemplo de uma possível parte de uma árvore de jogo da velha. Atente apenas para o detalhe que nessa árvore temos a impressão que começou no MIN, quando na verdade começa no MAX. Eu escolhi essa parte do meio da árvore.
  • 13. 13 Árvore de busca de uma partida de Jogo da velha Os números que você vê ao fundo representam o VALOR MINIMAX(n). Esse valor é apenas um “indicativo” de utilidade para o jogador MAX, ou seja, quanto MAIOR O VALOR da jogada do jogador MIN, melhor para o MAX e quanto MENOR O VALOR da jogada do jogador MAX, melhor para o MIN. No caso acima os números indicam as chances de se ganhar com a jogada correspondente. Caso você faça a jogada no centro do tabuleiro, o computador irá, com certeza, fazer a jogada no canto superior esquerdo. Repare que o MIN escolhe o mínimo valor e o MAX escolhe o máximo valor. É a sua vez de jogar, o que você escolheria? Fazer um movimento de defesa impedindo que oponente vença na próxima jogada, iniciar um nova estratégia, continuar com a sua estratégia de jogadas anteriores ou fazer o movimento para a vitória? Separe os tipos de jogadas e estabeleça prioridades. É preferível vencer que impedir que o adversário vença na próxima jogada. Aspectos técnicos do jogo da velha Como já foi dito deste o princípio da apresentação do projecto, o presente projecto foi desenvolvido usando a língua processing, contudo existem Aspectos técnicos que foram levados em conta. O ogo foi desenvolvido usando processing versão 3.3.4, sendo uma linguagem orientada a objectos apresenta a seguir alguns estratos do código.
  • 14. 14 Fig03:Exemplo do código do projecto. Fig04: Exemplo do código zona de matrix.
  • 15. 15 Resultados  Aspecto visual O jogo da velha foi desenvolvido na versão desktop, e tem a seguinte aparência: Fig03: tela inicial do jogo. Fig04: exemplo de execução do jogo.
  • 17. 17 Fig06: exemplo de victoria do jogo
  • 18. 18 Conclusão O projecto apresentado, mostra as etapas seguidas para o desenvolvimento do jogo da velha ou pelo menos mostra a lógica usada para o desenvolvimento do mesmo. O desenvolvimento deste jogo atingiu quase todos os resultados esperados, embora não se consiga cobrir todos os detalhes exigidos no desenvolvimento do jogo de modo que falta por implementar a componente interatividade, homem-máquina. Contudo a implementação do projecto seguiu a rigor os demais componentes requeridos para o caso. Espera-se que evolui nas próximas versões e se complemente os Aspectos que não foram implementadas nesta versão.
  • 19. 19 Bibliografia 1. Zaslavsky, Cláudia (1982). Tic Tac Toe: And Other Three-In-A Row Games from Ancient Egypt to the Modern Computer. 2. Kevin Crowley, Robert S. Siegler (1993). «Flexible Strategy Use in Young Children's Tic-Tat-Toe». Cognitive Science. 3. Portal do professor: http://portaldoprofessor.mec.gov.br 4. KNAUT, Michelle Souza Julio. Ludicidade e prática pedagógica. Curitiba: Editora Opet, 2012. 5. PIAGET, J. A formação do símbolo na criança: imitação, jogo e sonho, imagem e representação. 4. Ed. Rio de Janeiro: LTC, 2010. 6. Cortella, Mario Sergio. A escola e o conhecimento: fundamentos epistemológicos e políticos. 4. Ed. São Paulo: Cortez: Instituto Paulo Freire, 2001. 7. Falkembach, Gilse. A.Morgental. O Lúdico e os Jogos Educacionais. In: CINTED - Centro Interdisciplinar de Novas Tecnologias na Educação, UFRGS. Disponível em: Acesso 14 de junho, 2015. 8. Oliveira, Núcia Alexandra Silva. “Novas” e “Diferentes” Linguagens e o Ensino de História: construindo significados para a formação de professores. In: Revista EntreVer, Florianópolis, Jan./Jun. 2012. 9. Secretaria de Educação Fundamental. Parâmetros curriculares nacionais: história. Brasília: MEC/SEF, 1998. 10. Processing em Https://processing.org/download