View
214
Download
1
Category
Preview:
Citation preview
UNIVERSIDADE POSITIVO
NÚCLEO DE CIÊNCIAS EXATAS E TECNOLÓGICAS
CURSO DE ENGENHARIA DA COMPUTAÇÃO
RAFAEL GUSTAVO FABRIS VIENSCI
Campo Minado Inteligente
Trabalho de Conclusão de Curso.
Prof. Marcelo Mikosz Gonçalves
Orientador
Curitiba, Dezembro de 2009.
UNIVERSIDADE POSITIVO
Reitor: Prof. Oriovisto Guimarães
Vice-Reitor: Prof. José Pio Martins
Pró-Reitor de Graduação: Prof. Renato Casagrande
Diretor do Núcleo de Ciências Exatas e Tecnológicas: Prof. Marcos José Tozzi
Coordenador do Curso de Engenharia da Computação: Prof. Edson Pedro Ferlin
TERMO DE APROVAÇÃO
Rafael Gustavo Fabris Viensci
Campo Minado Inteligente
Monografia aprovada como requisito parcial à conclusão do curso Engenharia da
Computação da Universidade Positivo, pela seguinte banca examinadora:
Profº. Marcelo Mikosz Gonçalves (Orientador)
Profª. Maristela Regina Weinfurter (Membro)
Profº. Éderson Cichaczewski (Membro)
CURITIBA, 14 DE DEZEMBRO DE 2009
Agradecimentos
Primeiramente gostaria de agradecer aos meus pais Admir Viensci e Norma Fabris
Viensci por terem me dado a oportunidade de frequentar um curso superior em uma
instituição particular, pois sem eles este sonho de seria difícil de se realizar, pois
quando fui prestar o vestibular não haviam instituições publicas na região de Curitiba
que oferecessem este curso.
Gostaria de agradecer ao professor Valfredo Pilla Jr. por ter me vendido o seu kit
para que eu pudesse desenvolver este projeto.
Agradeço ao meu orientador o professor Marcelo Mikosz Gonçalves e à professora
Maristela Weinfurter que me auxiliaram neste projeto tanto com o tempo
disponibilizado como também pelo conhecimento compartilhado para o
desenvolvimento do mesmo.
Agradeço, enfim, a todos os professores pelos conhecimentos por mim adquiridos
durante o curso.
SUMÁRIO
LISTA DE ABREVIATURAS E SIGLAS ....................................................... 7
LISTA DE FIGURAS ..................................................................................... 8
LISTA DE TABELAS .................................................................................... 9
RESUMO .................................................................................................... 10
ABSTRACT ................................................................................................ 11
1 INTRODUÇÃO ...................................................................................... 12
2 FUNDAMENTAÇÃO TEÓRICA ............................................................ 13
2.1 Jogos eletrônicos .................................................................................................................... 13 2.1.1 O impacto dos jogos eletrônicos na sociedade ............................................................... 13
2.2 Autômatos celulares .............................................................................................................. 14 2.2.1 Geometria ...................................................................................................................... 14 2.2.2 Conjunto de estados ....................................................................................................... 14 2.2.3 Regras de transição ........................................................................................................ 15
2.3 A Origem do Campo Minado e sua evolução através dos anos ......................................... 15 2.3.1 Como funciona o Campo Minado .................................................................................. 19
3 ESPECIFICAÇÃO DO PROJETO ......................................................... 22
3.1 Análise de Contexto ............................................................................................................... 22
3.2 Análise funcional ................................................................................................................... 22 3.2.1 Funções de aquisição de dados ...................................................................................... 22 3.2.2 Funções homem/maquina e processamento de informações .......................................... 23
3.3 Especificações de hardware ................................................................................................... 25 3.3.1 KIT PIC24FJ128GA010 ................................................................................................ 26 3.3.2 Microprocessadores ....................................................................................................... 27 3.3.3 Microprocessador PIC ................................................................................................... 27 3.3.4 Microcontrolador PIC24FJ128GA010 ........................................................................... 28
3.3.5 Display LCD Touch Screen ........................................................................................... 28
4 DESENVOLVIMENTO E IMPLEMENTAÇÃO ....................................... 30
4.1 Testes sobre o kit ................................................................................................................... 30
4.2 Gravação do programa no kit .............................................................................................. 30
4.3 Microchip Graphics Library ................................................................................................ 31
4.4 Implementação do software .................................................................................................. 32 4.4.1 Criando botões ............................................................................................................... 32 4.4.2 Definindo a estrutura da matriz de botões...................................................................... 33 4.4.3 Gravando as informações ............................................................................................... 33 4.4.4 Verificando se o botão foi pressionado .......................................................................... 34
5 VALIDAÇÃO E RESULTADOS ............................................................ 36
5.1 Projeto finalizado .................................................................................................................. 36
5.2 Jogo campo minado finalizado ............................................................................................. 37
5.3 Validação ................................................................................................................................ 38
5.4 Custos do projeto ................................................................................................................... 38
6 CONCLUSÃO ....................................................................................... 40
REFERÊNCIAS BIBLIOGRÁFICAS ........................................................... 41
LISTA DE ABREVIATURAS E SIGLAS
AC Autômato Celular
262K 262 mil
3,2’’ 3,2 polegadas
LCD Liquid Crystal Display
ICD2 In Circuit Debugger 2
PICkit2 Programmable Interrupt Controller kit 2
CPU Unidade Central de Processamento
SD Secure Digital
UART Universal Asynchronous Receiver/Transmiter
TFT Thin-Film Transistor
VLSI Very Large Scale Integration
USART Universal Synchronous Asynchronous Receiver
I2C Inter-Integrated Circuit
USB Universal Serial Port
SPI Serial Peripheral Interface
PWM Pulse-Width Modulation
LIN Local Interconnect Netword
CAN Controller Area Network
RAM Random Access Memory
IRDA Infrared Data Association
PMP Portable Multimedia Player
QVGA Quarter Video Graphics Array
LISTA DE FIGURAS
Figura 2.1 - Vizinhança do tipo Von Newman e Moore ............................................................................ 14 Figura 2.2 - Campo Minado rodando no Windows 3.1 ............................................................................. 15 Figura 2.3 – Captura de tela do Campo Minado do Windows XP ............................................................ 16 Figura 2.4 – Captura de tela do Campo Minado do Windows Vista ou Windows 7 ................................. 16 Figura 2.5 - Campo Minado de competição no MSN Messenger .............................................................. 16 Figura 2.6 - Campo Minado onde o numero de bombas ao redor é indicado pelo numero de pontos na
casa e o tabuleiro é um smile ..................................................................................................................... 17 Figura 2.7 - Campo Minado 3D ............................................................................................................... 17 Figura 2.8 - Campo Minado hexagonal rodando em Windows XP ........................................................... 18 Figura 2.9 - Campo Minado triangular rodando em Linux ...................................................................... 18 Figura 2.10 - Campo Minado em modo texto rodando em Linux.............................................................. 18 Figura 2.11 - situação após alguma jogada .............................................................................................. 19 Figura 2.12 - exemplo 1 ............................................................................................................................ 20 Figura 2.13 - exemplo 2 ............................................................................................................................ 20 Figura 3.1 - Fluxograma do jogo .............................................................................................................. 24 Figura 3.2 - Diagrama de fluxo de dados ................................................................................................. 25 Figura 3.3 - Diagrama em Blocos ............................................................................................................. 25 Figura 3.4 - KIT PIC24FJ128GA010 ........................................................................................................ 26 Figura 3.5 - Gravador PICkit2 ................................................................................................................. 26 Figura 3.6 - Display LCD Touch Screen ................................................................................................... 29 Figura 3.7 - Display LCD Touch Screen vista inferior ............................................................................. 29 Figura 4.1 - Tela do PICkit2 Programmer ................................................................................................ 30 Figura 4.2 - Gravador PICkit2 conectado ao kit para gravação .............................................................. 31 Figura 4.3 - campo minado desenvolvido para console ............................................................................ 32 Figura 5.1 - KIT inserido na caixa acrílica .............................................................................................. 36 Figura 5.2 - Tela inicial do jogo ............................................................................................................... 37 Figura 5.3 - Exemplo de jogada ................................................................................................................ 37 Figura 5.4 - Exemplo da tela de fim de jogo ............................................................................................. 38
LISTA DE TABELAS
Tabela 3.1 - Características do PIC24FJ128GA010 ................................................................................. 28 Tabela 5.1 - Estatística de resultados do jogo ........................................................................................... 38 Tabela 5.2 - Tabela de custos ..................................................................................................................... 39
RESUMO
Este documento descreve o jogo campo minado embarcado, implementado no
trabalho de conclusão de curso. O jogo foi projetado no modo competição onde uma
pessoa joga contra o computador. O sistema foi desenvolvido em um kit
microprocessado que possui um processador PIC da Microchip e um display touch
screen. O jogo foi programado em linguagem C e possui inteligência artificial
possibilitando uma pessoa desafiar o jogo. Este jogo visa o desenvolvimento de
raciocínio lógico, alem de propiciar diversão.
Palavras-Chave: Jogo, Campo Minado, Inteligência Artificial, Embarcado, Touch
screen.
Intelligent Minesweeper
ABSTRACT
This document describes the game Minesweeper embedded, developed in work of
completion. The game was projected in competition mode where the person plays
against computer. The system was developed in a microprocessed kit with a Microchip
PIC microprocessor and a touch screen display. The game was programmed in C
language and has an artificial intelligence for can play against person. This game aims
to develop logical reasoning, besides providing entertainment.
Keywords: Game, Minesweeper, Artificial Intelligence, Embedded, Touch screen.
12
1 INTRODUÇÃO
Os jogos eletrônicos começaram a se popularizar nas décadas de 70 e 80, com o
avanço da eletrônica e consequentemente dos computadores, onde surgiram também os
vídeo games. Segundo Rodrigo Flausino (2008), os jogos estão cada vez mais populares
e este mercado lucra mais que a indústria de cinema, que já é um dos mercados que
mais fatura.
O jogo campo minado original é somente para uma pessoa, onde esta tem o objetivo
de não acertar as bombas e abrir todas as outras casas evitando as que contenham
bomba.
Este projeto consiste em um jogo campo minado, onde uma pessoa compete com a
CPU para ver quem encontra a maioria das bombas antes.
O que motivou para o desenvolvimento deste projeto foi pelo fato de não haver um
jogo campo minado que uma inteligência competisse com uma pessoa, e nem estando
embarcado utilizando uma tela touch screen.
O jogo foi gravado no kit desenvolvido pela Tech Toys Co. e possui um PIC
fabricado pela Microchip.
O jogo é controlado somente pela tela, as bombas são sorteadas aleatoriamente e o
jogador possui algumas informações que o auxilia em sua jogada como bombas
restantes, placar e o jogador da atual jogada e a inteligência do jogo baseada em
autômatos celulares.
Neste documento é explicado como os jogos influenciam na vida das pessoas, de
que maneira os autômatos celulares funcionam, a origem a evolução e funcionamento
do jogo Campo Minado. Também são feitas citações do contexto do projeto, assim
como detalhes do funcionamento do jogo e cada função para o mesmo, com diagramas e
demonstração do hardware e utilizado no desenvolvimento.
13
2 FUNDAMENTAÇÃO TEÓRICA
Neste capitulo constam as informações utilizadas para o desenvolvimento deste
projeto, desde documentação do kit até teoria sobre como funciona o jogo campo
minado.
2.1 Jogos eletrônicos
O primeiro jogo desenvolvido para computador foi o Spacewar em 1962, com o
objetivo de destruir asteroides e espaçonaves inimigas. Segundo o site watchtower
(2002), os jogos de computador se popularizaram nos anos 70 e 80, quando houve uma
evolução nos computadores pessoais, surgindo novos gêneros de jogos como aventura,
esportes, puzzle (quebra-cabeça), estratégia, simulação, ação entre outros.
2.1.1 O impacto dos jogos eletrônicos na sociedade
Segundo Rodrigo Flausino (2008), a indústria de jogos eletrônicos propicia diversão
para as pessoas e é uma das maiores indústrias do mundo ainda em ascensão e
superando a de cinema. Estes jogos cumprem papéis na sociedade influenciando as
pessoas desde pequenas, desenvolvendo o raciocínio lógico e conceitos teóricos e
incentivando o alistamento militar com os jogos de guerra. A evolução dos videogames
força a indústria a desenvolver tecnologias novas alem de que a qualidade das imagens
está cada vez impressionando mais e sendo considerado o estado da arte da industria
gráfica.
O jogo Second Life é um bom exemplo de como a sociedade está mudando e
incorporando o dia-a-dia nos jogos, neste jogo não existem missões, os jogadores
apenas “vivem”, isto é, podem fazer muito do que fazem no mundo real, como
conversar com outras pessoas, trabalhar e até ter aulas na faculdade. “Pelo menos 20
universidades americanas usam o jogo como ferramenta educacional. A Universidade
Harvard criou este ano uma filial do jogo, abrigando um curso de extensão em direito
em ambiente virtual.” (ROSSI, 2006, p. 100).
Os jogos também possuem seu lado ruim, alguns por terem um teor de violência
muito alto preocupam os pais, alem de que as crianças e jovens deixam de fazer as
tarefas escolares para jogarem e ainda tem a possibilidade de viciar, pois propiciam
prazer ao jogador.
O site v3.co.uk (2009) classificou as dez maiores aplicações que mudaram a
indústria, mas não classificaram o campo minado nestes dez mas sim em uma categoria
honrosa, segundo o site, o jogo ajudou nos escritórios pois todos precisam de um tempo
de pausa para descasar, e as pessoas aproveitavam e jogavam campo minado que já
14
vinha com o Microsoft Windows, este jogo engana por parecer simples mas na
realidade ele pode ser bem difícil de ser jogado.
2.2 Autômatos celulares
Os autômatos celulares ou AC, como também são chamados, são sistemas
dinâmicos de dimensão espacial e temporal discreta (THIELO, 1999). Segundo Dante
Barone e colaboradores (2003), estes são compostos por uma grade ou reticulado n-
dimensional onde estão dispostas células que possuem comportamento idêntico
controlado por um conjunto de regras. Para definir um AC são necessários alguns
parâmetros a serem definidos, como:
Geometria
Conjuntos de estados
Regras de transição
2.2.1 Geometria
Esta geometria deve ser regular e pode ser classificada pela dimensão do reticulado
e o formato da célula (WEIMAR, 2000). Com relação à geometria podem ser
unidimensionais, bidimensionais ou tridimensionais. Os tipos de vizinhança mais
comumente usados são o de Von Newman e de Moore. Na figura 2.1 tem um exemplo
destes dois tipos de vizinhança.
Figura 2.1 - Vizinhança do tipo Von Newman e Moore
(SPATIALANALYSISONLINE, 2009)
A inteligência analisa se ainda existe bomba a ser descoberta nesta vizinhança, caso
não haja, busca uma casa que tenha o maior numero de bombas ao redor, caso esta
também não tenha bombas a serem descobertas mais, busca a casa com o segundo maior
numero, e caso esta também não possua, abre uma casa fechada aleatoriamente.
2.2.2 Conjunto de estados
São os estados que cada célula que pertence ao AC pode assumir.
15
2.2.3 Regras de transição
Estas são um conjunto de funções que coordenam o comportamento do AC,
podendo ser aplicadas sobre cada célula definindo o próximo estado a partir de seu
estado atual e de sua vizinhança.
2.3 A Origem do Campo Minado e sua evolução através dos anos
O jogo surgiu em 1989 com o lançamento do Windows 3.1 e foi desenvolvido por
Robert Donner, depois disso sempre esteve incorporado ao Sistema Operacional
Windows, tendo versões para outros sistemas operacionais e até para celulares. Não
houve evolução na sua interface da versão para Windows 3.1 até a versão incorporada
no Windows XP, no Windows Vista e Windows 7 já é possível trocar o layout e tem a
possibilidade de salvar para posteriormente continuar do ponto em que parou. Esta
versão que vem nos sistemas operacionais, que é a original, somente uma pessoa joga e
nela deve abrir todas as casas que não possuem bombas, não podendo acertar casas que
as possuam. Com o surgimento do MSN Messenger da Microsoft, surgiu uma versão
em que duas pessoas podem competir uma contra a outra para ver quem encontra a
maior parte das bombas antes, o chamado Campo Minado de Competição, nesta versão
alternativa o objetivo é achar as bombas e não evitá-las.
Na Figura 2.2 é mostrado o jogo Campo Minado no Windows 3.1, no Windows XP
é ilustrado na Figura 2.3, o jogo em Windows 7 ou Windows Vista é demonstrado na
Figura 2.4 e o Campo Minado em modo competição do Windows Live Messenger é
exemplificado na Figura 2.5.
Figura 2.2 - Campo Minado rodando no Windows 3.1 (BLOGDOLENON, 2009)
16
Figura 2.3 – Captura de tela do Campo Minado do Windows XP
Figura 2.4 – Captura de tela do Campo Minado do Windows Vista ou Windows 7
Figura 2.5 - Campo Minado de competição no MSN Messenger
(MESSENGER.ZONE, 2009)
17
Existem algumas variantes do jogo em que o tabuleiro não é retangular, sendo o
tabuleiro um smile, como na Figura 2.6, pode ser 3D, como na Figura 2.7, podendo
alterar também a forma das casas, como mostrado nas Figuras 2.8 e 2.9, ou o jogo pode
ser em modo console, como mostrado na Figura 2.10.
Figura 2.6 - Campo Minado onde o numero de bombas ao redor é indicado pelo
numero de pontos na casa e o tabuleiro é um smile. (WIKIPEDIA, 2009)
Figura 2.7 - Campo Minado 3D (WIKIPEDIA,2009)
18
Figura 2.8 - Campo Minado hexagonal rodando em Windows XP (WIKIPEDIA,
2009)
Figura 2.9 - Campo Minado triangular rodando em Linux (WIKIPEDIA, 2009)
Figura 2.10 - Campo Minado em modo texto rodando em Linux (WIKIPEDIA,
2009)
19
2.3.1 Como funciona o Campo Minado
O jogo consiste em um tabuleiro de tamanho variável, onde aleatoriamente as
bombas são sorteadas que também possuem numero variável. À medida que se abrem as
casas aparecem números nelas, estes números vão desde 1 até 8 e indicam quantas
bombas existem ao redor desta casa, caso não tenha nenhum numero significa que não
há bombas ao redor, quando uma casa desta é aberta o jogo automaticamente abre todas
ao redor da mesma ate encontrar alguma casa que possua alguma bomba ao redor, ou
seja, uma casa que indique um numero qualquer. Caso o jogador acerte uma casa com
bomba o jogo termina e é mostrado onde estavam todas as outras bombas. O jogador
ganha quando abrir a ultima casa que não possua bomba sem ter acertado nenhuma que
a possua(MICROSOFT, 2009).
A seguir é demonstrado como fazer a análise das casas para efetuar uma jogada
correta levado em conta as informações que o jogo fornece ao jogador, tendo por base a
situação da Figura 2.11:
Figura 2.11 - situação após alguma jogada
Primeiramente se observa se há algum padrão fácil de achar, neste caso o mais fácil
são as casas demarcadas na Figura 2.12, pois elas indicam com clareza que nelas há
bomba por causa da casa adjacente a elas indicar 1 e somente haver ela fechada ou
indicar 2 e somente haver duas casas fechadas
20
Figura 2.12 - exemplo 1
Nem sempre será possível jogar apenas com base nos números indicados nas
casas, existem situações em que se deve “chutar” e contar com a sorte, com base neste
estado do jogo na Figura 2.13 é possível ver quais seriam algumas dessas casas que se
enquadram neste exemplo, onde os círculos representam as casas que possuem bombas,
as casas que possuem um X são casas livres e podem ser abertas sem problemas, mas as
casas com um quadrado não são possíveis de determinar, neste caso o ideal é jogar
nestas casas que já existe a certeza de estarem livres para ter dicas extras para eliminar
estas incertezas.
Figura 2.13 - exemplo 2
Para jogar basta seguir a lógica que foi demonstrada, onde os números indicam
quantas bombas existem ao redor desta casa e analisar a vizinhança desta para poder
fazer a eliminação, quando todas as casas livres forem abertas sem abrir casas com
21
bombas o jogo estará terminado, caso abra uma com bomba o jogo termina e é mostrada
a posição das demais bombas(MICROSOFT, 2009).
Neste capítulo foram abordadas as informações teóricas necessárias pesquisadas
para que o projeto pudesse ser concluído de forma satisfatória.
22
3 ESPECIFICAÇÃO DO PROJETO
Este capítulo abordam as etapas do projeto e o conjunto de hardware utilizado no
projeto e como ele funciona.
3.1 Análise de Contexto
O projeto consiste em um jogo Campo Minado embarcado, que possui inteligência
artificial para jogar contra uma pessoa. O jogo é um clássico dos jogos de computador,
que vem incorporado ao Microsoft Windows desde a versão 3.1, este tem o objetivo de
achar as casas sem bombas e sem abrir qualquer uma que possui bomba o detalhe que
este é jogado sozinho. No MSN Messenger possui uma versão um pouco diferente em
que o objetivo é encontrar as bombas e jogado entre duas pessoas e quem encontrar a
maior parte delas vence. O projeto funcionará com o sistema do MSN Messenger para
ser jogado entre uma pessoa contra a CPU, utilizando uma tela touch screen, sendo que
tocando na tela que ocorrerá a seleção da casa desejada. O objetivo do jogo é encontrar
a maior parte das bombas antes do adversário.
A parte de hardware está vinculada ao KIT PIC24FJ128GA010, este possui uma tela
touch screen com 262K cores e 3.2’’. A programação é na linguagem C e foi utilizado o
MPLAB IDE e o compilador MPLAB C30.
Levando em conta que este jogo somente possui as versões para ser jogado sozinho
com o objetivo de evitar as bombas, e no MSN Messenger para ser jogado entre duas
pessoas com o objetivo de achar as bombas, é interessante existir outro contexto para
este clássico dos jogos de computador que é ter uma inteligência artificial com o mesmo
objetivo do jogo do MSN Messenger.
3.2 Análise funcional
Neste capitulo são citadas as funções implementadas no jogo e explicado como elas
funcionam.
3.2.1 Funções de aquisição de dados
A aquisição de dados é feita através tela touch screen, e pela biblioteca gráfica Gol
da Microchip. Esta possui funções que detectam que a tela foi tocada e executam a
função programada para cada situação dependendo de onde a tela for tocada. O
tabuleiro consiste em vários botões plotados na tela e há várias funções para a análise do
tabuleiro.
23
3.2.2 Funções homem/maquina e processamento de informações
SorteiaBombas Sorteia as bombas aleatoriamente no tabuleiro.
ContaBombas Contará as bombas que existem ao redor de cada casa a gravará
este valor em cada casa respectivamente. Funcionará localizando uma casa com bomba,
feito isso será adicionado em 1 (um) o valor que possui em cada casa ao redor desta
bomba, caso seja outra bomba esta casa não terá adição nenhuma, e será feito isso para
todas as bombas do tabuleiro.
AbreZero Abrirá todas as casas que possuem zero caso uma delas seja
selecionada, com algumas restrições, encontrando uma casa que possui pelo menos uma
bomba ao redor, naquela direção a abertura acaba, esta abertura recursiva termina
quando não encontrar mais casas sem bombas ao redor pelas proximidades, pois a cada
casa que encontrar e indicar que possui bomba ao redor, a função parará a recursividade
naquele ponto e irá verificar outra posição que ainda não tenha sido verificada.
Jogada Faz a jogada em si, verifica o valor que possui naquela casa, caso esteja
entre 0 e 8 esta casa não possui bomba e não foi aberta ainda assim será somado 10 ao
seu valor e indica quantas bombas possui ao seu redor, se for zero o valor será alterado
para 20 e chamará a função AbreZero, se possui 10 é uma bomba mas não foi aberta, se
for -1 ou -2 é uma bomba mas já aberta (-1 pelo jogador 1 e -2 pelo jogador 2), se
houver uma valor entre 11 e 18 é uma casa que não possui bomba mas já foi aberta e se
possuir o valor 20 é uma casa que não possui nenhuma bomba ao redor e que já foi
aberta. Se a jogada atual cair em uma casa que já foi aberta, o jogo ficará aguardando
até ser feita uma jogada válida (apenas em casas fechadas) para prosseguir no jogo.
Placar Varre a matriz tabuleiro procurando as bombas abertas e contando quantas
foram abertas por cada jogador e verificando quantas ainda estão fechadas, ganhará
quem possuir metade das bombas totais mais uma. Esta função faz a verificação de fim
de jogo caso algum dos jogadores encontre a maior parte das bombas é indicado na tela.
DesenhaPlacar desenha na tela o placar do jogo atualizando a cada jogada.
DesenhaTabuleiro desenha o tabuleiro do jogo.
ProcessaJogada altera as cores das casas afetadas pela jogada do jogador1 e faz a
troca de jogador caso seja necessário
ProcessaJogada2 funciona da mesma forma que a função anterior mas para o
jogador 2.
BuscaMaior1 busca no tabuleiro uma casa com o maior numero de bombas ao
redor.
BuscaMaior2 busca no tabuleiro uma casa com o segundo maior numero de
bombas ao redor.
Computador processa a jogada do computador.
BuscaBombas verifica se todas as bombas ao redor da casa analisada já foram
encontradas, caso já tenham sido encontradas irá atualizar o Buscamaior1 ou
BuscaMaior2.
24
O funcionamento do jogo é descrito no fluxograma da Figura 3.1, a troca de dados é
demonstrada na Figura 3.2 e a forma em que a inteligência trabalha é mostrada na
Figura 3.3.
Figura 3.1 - Fluxograma do jogo
25
Figura 3.2 - Diagrama de fluxo de dados
3.3 Especificações de hardware
O hardware é o responsável por todo o funcionamento do projeto, ou seja, a parte de
envio de informações entre a tela e o programa que interpretará a ação a ser tomada, e a
ação da inteligência. O hardware utilizado foi:
KIT PIC24FJ128GA010
Tela LCD Touch Screen 3.2”
Gravador PICkit2
Na figura abaixo é demonstrado o diagrama em blocos do projeto, sendo possível
verificar o processo de funcionamento do mesmo.
Figura 3.3 - Diagrama em Blocos
26
3.3.1 KIT PIC24FJ128GA010
Este kit foi desenvolvido pela Tech Toys Co. , sendo na Figura 3.5 a foto do kit e na
Figura 3.6 o gravador PICkit2 sendo que a placa possui algumas características
importantes a serem citadas:
Possui o PIC24FJ128GA010
Possui regulador de tensão para 3,3V aceitando fonte de alimentação de 5V
até 7,5V
Possui fileiras duplas para prototipagem mais fácil
Compatível com ICD2 da Microchip
Compatível com o programador PICkit2
Integrado cabeçalho compatível com modulo TFT 2,4’’ e modulo TFT 2,8’’
Slot para cartão SD
Interface UART via SIPEX SP3232
Joystick com 5 posições
Buzzer
Figura 3.4 - KIT PIC24FJ128GA010
Figura 3.5 - Gravador PICkit2
27
3.3.2 Microprocessadores
O microprocessador é um circuito integrado que tem a capacidade de executar
vários tipos de instruções, a principal parte que o compõe é a Unidade Central de
Processamento, mais conhecida como CPU. Ele trabalha sobre algum programa gravado
na memória e executa operações diversas, como aritmética, booleanas, entrada e saída
de informação para a comunicação com outros dispositivos e tomadas de decisões.
Devido ao grande avanço tecnológico, os microprocessadores ficaram cada vez mais
complexos e com mais unidades que auxiliam a executar tarefas cada vez mais
complexas, como unidades de gerenciamento de memória, memória cachê, entre outras.
Segundo B. Piporo (2009) sua origem foi em 1971 com o modelo 4004,
desenvolvido pela Intel Corporation, para ser utilizado em calculadoras, com base neste,
foram aparecendo novas aplicações como calculadoras mais modernas e os
computadores pessoais.
Este componente é um dispositivo lógico programável em um único chip de
silício, desenvolvido com a tecnologia VLSI (Circuito integrado de Alta Escala).
Praticamente todos os equipamentos eletrônicos hoje, possuem um
microprocessador, mas cada um com suas particularidades para atender às
funcionalidades que devem executar.
3.3.3 Microprocessador PIC
Os microcontroladores PIC são uma família de microcontroladores da Microchip,
tendo uma ampla variedade de modelos e aplicações, podem ser de 8, 16 ou 32 bits.
Utilizam instruções RISC e podem ser programados por memórias flash, EEPROM e
OTP. Os microcontroladores PIC possuem diversos recursos dependendo do modelo,
podendo ter:
Conversores Analógico-Digitais de 8 a 12 bits
Contadores e timers de 8 e 16 bits
Comparadores Analógicos
USARTs
Controladores de comunicação I2C, SPI, USB
Controladores PWM
Controladores de LCD
Controladores de motores
Gerador de energia de alta potência
Periféricos para LIN, CAN
Controladores Ethernet
Periféricos IRDA
Codificadores para criptografia Keeloq
Watchdog timer
Detectores de falha na alimentação
Portas digitais com capacidade de 25mA (fornecer ou drenar) para acionar
circuitos externos
Osciladores internos
28
3.3.4 Microcontrolador PIC24FJ128GA010
Este microcontrolador faz parte da quarta geração dos microcontroladores de 16 bits
desenvolvidos pela Microchip, esta família 24F, perde um pouco em performance em
relação à família 24H que é a terceira geração mas em compensação tem um custo bem
inferior. Este dispositivo possui um conjunto de recursos que são listados na Tabela 3.1.
Tabela 3.1 - Características do PIC24FJ128GA010
Pinos 100
Memória de Programa 128K
RAM 8K
Timers 5
Capture Input 5
Compare/PWM Output 5
UART 2
SPI 2
I2C 2
10-bit A/D (canais) 16
Comparadores 2
PMP/PSP Possui
Jtag Possui
Fonte: Microchip
3.3.5 Display LCD Touch Screen
Segundo Barbacena (2006), o display LCD são muito uteis em sistemas
microprocessados e são especificados pelo numero de pixels na horizontal e vertical,
podem ou não vir com backlight (iluminação de fundo), essa iluminação facilita a
visualização no escuro sendo feita por leds.
Segundo informações contidas no site do fabricante do kit a Tech Toys Co. , o
display utilizado no projeto possui 240x320 pixels com 3,2’’, podendo utilizar 262K ou
65K cores, isso é configurado via software. O LCD é do tipo QVGA TFT-LCD e a
iluminação é feita por cinco leds em paralelo.
29
Figura 3.6 - Display LCD Touch Screen (techtoys,2009)
Figura 3.7 - Display LCD Touch Screen vista inferior (techtoys, 2009)
Neste capítulo as etapas do projeto e os componentes eletrônicos utilizados foram
citados e explicados como funcionam e de que forma trabalhados para estarem no
projeto.
30
4 DESENVOLVIMENTO E IMPLEMENTAÇÃO
4.1 Testes sobre o kit
Primeiramente foi gravado no kit um programa exemplo disponível no site do
fabricante que é a Tech Toys, neste exemplo possui uma demonstração de como é
programado alguns tipos de componentes gráficos. Este exemplo tem o nome de “Demo
program for 3.2’’ TFT LCD module”.
4.2 Gravação do programa no kit
O microcontrolador aceita programas na extensão .hex, este arquivo é o resultado da
compilação do código em C pelo mplabC30. Este arquivo é gravado por meio do
software PICkit2 Programmer da Microchip e do gravador PICkit2 também da
Microchip.
Figura 4.1 - Tela do PICkit2 Programmer
31
Figura 4.2 - Gravador PICkit2 conectado ao kit para gravação
4.3 Microchip Graphics Library
Esta biblioteca gráfica foi desenvolvida pela Microchip e é livre, não necessita
licença, possui vários componentes gráficos que auxiliam no desenvolvimento de
aplicações gráficas embarcadas em microcontroladores da Microchip. Com o auxilio da
ajuda que vem junto com a biblioteca gráfica, é possível estudar como os componentes
gráficos que a compõem funcionam com exemplos. A biblioteca possui os seguintes
componentes gráficos:
Button
Chart
Checkbox
Dial
Edit Box
Group Box
List Box
Meter
Picture
Progress Bar
Radio Button
Slider
Static text
Text Entry
Window
32
4.4 Implementação do software
Inicialmente o jogo foi desenvolvido em linguagem C++ para aplicação em modo
texto na linha de comando do Microsoft Windows, para duas pessoas. Para a primeira
validação do projeto foi programado este jogo para duas pessoas no kit e para a segunda
validação, onde o projeto deveria estar completamente funcional, foi colocada a
inteligência.
O projeto foi baseado no exemplo “Demo program for 3.2’’ TFT LCD module”,
onde foram feitas as alterações necessárias para que o jogo fosse desenvolvido. Na
Figura 4.3 o jogo em modo texto é ilustrado.
Figura 4.3 - campo minado desenvolvido para console
4.4.1 Criando botões
A estrutura de criação dos componentes gráficos é toda feita em linha de código,
especificando o tamanho, esquema de cor, em que pixel o objeto começa e termina e os
ponteiros identificadores.
No exemplo logo abaixo tem a estrutura de criação de um botão pela biblioteca
gráfica da Microchip.
33
Ex:
BtnCreate( ID_BTN1, //identificador deste botão
0, 0, 40, 30, //dimensões do botão e posição.
0, //raio do botão caso fosse redondo
NULL, //imagem a ser usada no botão, neste caso
nenhuma.
“?”, //texto do botão
altScheme); //estilo do botão, como por exemplo as cores.
O parâmetro da imagem a ser usada no botão foi passado como NULL, devido a
limitações de memória, pois imagens consomem bastante e o microcontrolador possui
uma quantidade pequena.
4.4.2 Definindo a estrutura da matriz de botões
O tabuleiro é uma matriz de struct, sendo que cada posição desta referencia um
botão do tabuleiro,
valor: é o numero que tem na posição do tabuleiro que indica quantas bombas
tem ao redor desta casa ou se é bomba ou o identificador do jogador que acertou
se for bomba aberta
b: ponteiro deste botão
ID: identificador deste botão
Ex:
struct botao
{
int valor;
BUTTON* b;
WORD ID;
}mat[7][5];
4.4.3 Gravando as informações
4.4.3.1 A matriz recebendo um valor
No exemplo logo abaixo é mostrado como atribuir um valor para a matriz. Este
valor é o numero que indica quantas bombas existem ao redor desta casa ou indica que
tem uma bomba ou ainda se tiver uma bomba aberta indica qual jogador a abriu.
Ex:
mat[l][c].valor = j;
34
4.4.3.2 A matriz recebendo um ponteiro para botão
Está recebendo na posição 00 na variável b um ponteiro para botão, por exemplo, o
conteúdo de botao1 é o endereço do identificador que é o endereço do botão que tem
este identificador, assim o botao1 está vinculado à posição 00 da matriz.
Ex:
mat[0][0].b=botao1;
4.4.3.3 A matriz recebendo o identificador para o botão
Na posição 00 da matriz, na variável ID, está sendo gravado o identificador de um
botão, por exemplo, o valor de ID_BTN1 vai vincular a posição 00 da matriz ao botão
correspondente a este identificador, semelhante ao exemplo anterior.
Ex:
mat[0][0].ID=ID_BTN1;
4.4.3.4 Definindo um identificador para um objeto botão
Ex:
#define ID_BTN1 10
4.4.3.5 Criando um ponteiro para um botão
Ex:
BUTTON *botao1;
4.4.3.6 Ponteiro recebendo o endereço do botão correspondente ao
identificador
Ex:
botao1 = (BUTTON*)GOLFindObject(ID_BTN1);
4.4.4 Verificando se o botão foi pressionado
Para ser possível fazer esta verificação é necessária uma função de controle da
biblioteca gráfica chamada GOLMsgCallback. Esta função irá retornar para a biblioteca
o identificador do objeto que foi tocado na tela. Para verificar se um botão foi
pressionado, basta seguir o exemplo a seguir.
35
Na primeira linha, a variável objectID recebe o identificador do objeto que gerou um
evento pela função GetObjID, pObj é um cabeçalho de objeto e serve para identificar o
objeto. Na segunda linha está comparando cada identificador da matriz com o
identificador do botão que gerou o evento e na terceira linha já sabendo qual botão do
tabuleiro gerou este evento é verificado se o evento gerado é de o botão ter sido
pressionado.
Ex:
objectID = GetObjID(pObj);
if (objectID == mat[i][j].ID)
{
if (objMsg == BTN_MSG_PRESSED)
Este capítulo abordou como foram feitos os testes do hardware usado, a pré-
implementação do jogo em modo texto e como programar com a biblioteca gráfica.
36
5 VALIDAÇÃO E RESULTADOS
Neste capítulo são abordados os resultados obtidos com o termino do projeto.
5.1 Projeto finalizado
Para melhor apresentação e proteção, o kit foi colocado dentro de uma caixa
acrílica, assim possibilitando a visualização do circuito. A placa possui um botão de
reset que faz o microcontrolador reiniciar, assim para poder usá-lo foi adaptado um
botão, pois com a altura do acrílico impossibilitava o acesso a ele para poder reiniciar o
jogo. A implementação do jogo é feita com o auxilio do computador no MPLAB, onde
neste é gerado o arquivo .hex que posteriormente será gravado no PIC, a gravação é
feita com o gravador PICkit2 e com o seu software de gravação PICkit2 Programmer,
após isso basta ligar a placa com a fonte de alimentação e o jogo aparecerá na tela
aguardando o primeiro jogador começar, tocando na tela no local correspondente à casa
desejada. Na Figura 5.1 é demonstrado o kit inserido na caixa acrílica.
Figura 5.1 - KIT inserido na caixa acrílica
37
5.2 Jogo campo minado finalizado
O jogo finalizado ficou com um tabuleiro de 7 linhas e 5 colunas contendo 9 bombas
espalhadas aleatoriamente onde estas cada vez que o jogo é reinicializado mudam de
posição.
Na tela contem o tabuleiro, um placar indicando quantas bombas cada jogador
encontrou até o momento, um contador indicando quantas bombas restam no tabuleiro a
serem descobertas e um indicador de qual é o jogador da vez. Cada jogador possui sua
cor e é indicada pela cor do seu placar (verde é o jogador 2 que é a inteligência e
vermelho o jogador 1 que é a pessoa), quando um jogador acerta uma bomba a casa
assume a cor deste para sua identificação e este jogador continua jogando até acertar
uma casa que não possua bomba, passando a vez ao oponente.
Figura 5.2 - Tela inicial do jogo
Figura 5.3 - Exemplo de jogada
38
Figura 5.4 - Exemplo da tela de fim de jogo
5.3 Validação
O jogo foi testado e feito uma estimativa de quantas vezes a inteligência ganhou,
perdeu ou não conseguiu continuar jogando e travou, A análise foi feita em 40 vezes em
que foi jogado e varias pessoas jogaram. O resultado destes testes está na Tabela 5.1.
Tabela 5.1 - Estatística de resultados do jogo
Número Porcentagem
Derrotas 19 47,5%
Vitorias 14 35%
Travamentos 7 17,5%
Os travamentos citados na Tabela 5.1 ocorrem por um problema que não foi
corrigido devido ao não descobrimento da causa exata do mesmo, a mais provável
segundo pesquisas é de estouro da pilha de processos do microcontrolador.
5.4 Custos do projeto
Na tabela abaixo pode-se observar os gastos para o desenvolvimento deste projeto.
39
Tabela 5.2 - Tabela de custos
Neste capítulo foram demonstrados os resultados obtidos com a finalização do
projeto e a tabela de custos do mesmo.
40
6 CONCLUSÃO
Neste projeto foi introduzida uma novidade neste jogo, que é a interatividade com
touch screen, que também é novidade no mundo dos jogos, pois este tipo de aplicação
está ficando mais comum e popular com o advento do Iphone e do Ipod Touch da
Apple.
Inicialmente a ideia não era utilizar esta interface para o desenvolvimento deste jogo
nem deixando inteligente, mas vendo esta tecnologia, incentivou-me a pesquisar como
ela funciona e como transportar o jogo antes desenvolvido para modo console para um
sistema embarcado. A inteligência também não estava nos planos iniciais para o
desenvolvimento, pois a disciplina de Inteligência Artificial é lecionada no ultimo ano
do curso, assim não teria uma base para o desenvolvimento da mesma no jogo.
Foi desenvolvido com esta interface para popularizar este tipo de aplicação com as
crianças e deixar este jogo que até então somente tinha em computadores e celulares
sem touch screen.
Alguns problemas que surgiram ao logo do desenvolvimento além do
desenvolvimento do projeto em si, propiciou um ganho de conhecimento no
desenvolvimento de aplicações embarcadas com telas touch screen e de inteligência
artificial com a aplicação de alguns conceitos de autômatos celulares.
O projeto pode ser melhorado colocando uma segunda inteligência para auxiliar a
que já existe, utilizando outros conceitos, como lógica fuzzy ou ainda um sistema
hibrido como neurofuzzy, podendo ainda melhorar a que já está implementada, pois um
grande desafio foi desenvolver a inteligência em um espaço de tempo curto pelo fato de
estar tendo a disciplina no corrente ano, assim a inteligência ficou um tanto limitada.
Apesar das limitações da inteligência, os resultados obtidos são satisfatórios, pois a
porcentagem de travamentos não foi muito elevada e a porcentagem de vitórias da
inteligência não é muito diferente da de derrotas.
41
REFERÊNCIAS BIBLIOGRÁFICAS
Livros
BARONE,Dante Augusto Couto, Sociedades Artificiais, Porto Alegre: Bookman,
2003.
DEITEL, H.M,; DEITEL, P.J., Como Programar em C, 2ª Ed. Rio de Janeiro:
LTC, 1999.
DEITEL, H.M.; DEITEL, P.J., C++ Como Programar, 3ª Ed. Porto Alegre:
Bookman, 2001.
SOUSA, Daniel Rodrigues de; SOUZA, David José de, Desbravando o PIC24:
Conheça os Microcontroladores de 16 Bits, 1ª Ed. São Paulo: Érica, 2008.
Em meio eletrônico
BARBACENA, Ilton L.. Display LCD. Disponível em
<http://www2.eletronica.org/apostilas-e-ebooks/componentes/LCD_30324b.pdf>.
Acesso em out. 2009.
BLANCO, Mariana Z. Microprocessador. Disponível em
<http://pinga.eep.br/~mblanco/microprocessador.pdf>. Acesso em out. 2009.
FLAUSINO, Rodrigo, Os Jogos Eletrônicos e seus Impactos na Sociedade.
Disponível em <http://www.rodrigoflausino.com/blog/artigos-e-tutoriais/os-jogos-
eletronicos-e-seus-impactos-na-sociedade>. Acesso em set. 2009.
MESSENGER.ZONE. Imagem campo minado do MSN Messenger. Disponível em
<http://messenger.zone.msn.com>. Acesso em out. 2009.
MICROCHIP. PIC24FJ128GA010 Data Sheet. Disponível em
<http://ww1.microchip.com/downloads/en/DeviceDoc/39747d.pdf>. acesso em mar.
2009.
MICROSOFT. Campo Minado: como jogar. Disponível em
<http://windows.microsoft.com/pt-BR/windows-vista/Minesweeper-how-to-play>.
Acesso em out. 2009.
PICTUTORIALS. Introducing PIC. Disponível em
<http://www.pictutorials.com>.Acesso em out. 2009.
PIPORO, B. Nova Estrutura da Marca Intel II: Um pouco de história. Disponível em
<http://www.bpiropo.com.br/fpc20090713.htm>. Acesso em nov. 2009.
42
SPATIALANALYSISONLINE. Cellular automata (CA). Disponível em
<http://www.spatialanalysisonline.com/output/html/CellularautomataCA.html>. Acesso
em out. 2009.
TECH TOYS. 3,2’’ QVGA 262K TFT LCD module with Microchip Graphics
Library. Disponível em
<http://www.techtoys.com.hk/Displays/TY320T240320/TY320T_240320_Rev2B_Guid
e.pdf>. Acesso em mar. 2009.
THOMSOM, Iain.Top 10 industry-changing applications. Disponível em
<http://www.vnunet.com/vnunet/news/2243224/top-industry-changing?page=1>.
Acesso em jun. 2009.
WATCHTOWER. Jogos Eletrônicos: Inofensivos ou Perigosos?. Disponível em
<http://www.watchtower.org/t/20021222/article_01.htm>. Acesso em set. 2009.
WIKIPEDIA. Campo Minado. Disponível em
<http://pt.wikipedia.org/wiki/Campo_minado>. Acesso em out. 2009.
Recommended