25
UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE INFORMÁTICA INF 492 – Computação Móvel MEJAVA 21 Leandro Castanheira de C. Ferreira M50278 Fernando da Silva Stein M50289 Thiago Emanuel C. de Oliveira M50294 Especificação do projeto realizado na disciplina INF 492 – Computação Móvel VIÇOSA MINAS GERAIS – BRASIL FEVEREIRO/2007

MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

UNIVERSIDADE FEDERAL DE VIÇOSA

CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS DEPARTAMENTO DE INFORMÁTICA

INF 492 – Computação Móvel

MEJAVA 21

Leandro Castanheira de C. Ferreira M50278 Fernando da Silva Stein M50289

Thiago Emanuel C. de Oliveira M50294

Especificação do projeto realizado na disciplina INF 492 – Computação Móvel

VIÇOSA MINAS GERAIS – BRASIL

FEVEREIRO/2007

Page 2: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

2

Índice

1. Introdução:.................................................................................................................... 3

2. Motivações..................................................................................................................... 4

3. Motivações: ................................................................................................................... 5

4. Tecnologias Usadas:...................................................................................................... 6

4.1 J2ME..................................................................................................................................... 6

4.2 Bluetooth ............................................................................................................................... 7

4.3 Eclipse e EclipseME............................................................................................................. 8

5. O Jogo 21 .................................................................................................................... 10

6. A Aplicação ................................................................................................................. 11

7. Módulos....................................................................................................................... 13

8. Telas do Jogo............................................................................................................... 16

9. Dificuldades Encontradas ........................................................................................... 23

10. Discussão e Conclusões........................................................................................... 24

11. Referências Bibliográficas....................................................................................... 25

Page 3: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

3

1. Introdução:

Esse documento tem por finalidade descrever o projeto final da disciplina INF 492

(Computação Móvel) lecionada no semestre 2 do ano letivo de 2006, contendo as motivações,

tecnologias, dificuldades e soluções para a implementação do mesmo.

O projeto deveria basear-se em uma aplicação para dispositivos móveis, com alguma

interface de comunicação e uma boa interface gráfica. Tendo isso como objetivo, o grupo

decidiu criar um game de cartas que use a tecnologia de comunicação bluetooth, levando-se

em conta o desafio que a aplicação nos fornece na questão da comunicação e da interface com

o usuário.

O game escolhido foi um clássico do baralho mundial, o Blackjack, conhecido

popularmente no Brasil por 21 (Vinte e Um). O jogo tem como objetivo que os jogadores

alcancem os 21 pontos, ou o mais próximo possível, sem ultrapassá-los.

Page 4: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

4

2. Motivações

Com o advento das redes digitais de telefonia móvel, os aparelhos celulares surgem

como consoles de mão, com jogos bem definidos e de boa jogabilidade. Em vários

continentes, os jogos por celular já fazem sucesso: usuários do Japão, dos EUA e alguns

países da Europa, podem realizar downloads de diversos jogos de esportes, de aventura, de

ação, entre outras categorias. No Brasil, existe também, um grande potencial para jogos em

celulares, já que os preços desses aplicativos são acessíveis à população brasileira e pela

grande população de jovens, a qual mais consome esse tipo de produto.

Levando-se em conta este mercado crescente o grupo escolheu para implementação

um jogo para celular.

A escolha do jogo 21 (Vinte e Um) foi tomada por ser um jogo que não se joga

sozinho, atendendo ao objetivo do grupo de usar a comunicação entre os celulares oponentes

da partida.

A comunicação entre os oponentes será feita através do bluetooth, já que ela permite

uma distância necessária entre os aparelhos para que se oculte a visão do oponente, e também

pelo seu baixo custo para o usuário. Além disso, talvez tenha sido a maior motivação do

grupo o desafio de realizar essa forma de comunicação.

Page 5: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

5

3. Motivações:

Este projeto tem como finalidade desenvolver o Jogo 21 para dispositivos móveis,

mais especificamente celulares, para dois jogadores, cada um com utilizando um celular.

Implementar a comunicação bluetooth entre os aparelhos, para realizar-se a interação

entre os dois jogadores e implementar uma interface gráfica com o usuário através da

linguagem JAVA.

E promover o contado do grupo com a implementação de uma aplicação para

embarcados, em prol da ampliação dos conhecimentos dos mesmos.

Page 6: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

6

4. Tecnologias Usadas:

4.1 J2ME O Java Plataform, Micro Edition (Java ME) ou J2ME É uma tecnologia que

possibilita o desenvolvimento de software para sistemas e aplicações embarcadas, ou seja,

toda aquela que roda em um dispositivo de propósito específico, desempenhando alguma

tarefa que seja útil para o dispositivo.

É a plataforma Java para dispositivos compactos, como celulares, PDAs, controles

remotos e uma outra gama de dispositivos. Java ME é uma coleção de APIs do Java definidas

através da JCP (Java Community Proccess).

A comunidade JCP adotou duas abordagens para especificar as necessidades dos

pequenos dispositivos - a sua arquitetura computacional.

Primeiro eles definiram o ambiente de execução Java (do inglês Java run-time

environment) e um conjunto de classes básicas, chamadas de core, que operam sobre cada

dispositivo. Isso foi denominado Configurações (do inglês Configurations). Uma

configuração define a JVM (Java Virtual Machine) para um pequeno e específico dispositivo

computacional. Há duas configurações para um dispositivo embarcado, uma para dispositivos

com maior capacidade computacional (do inglês High-end consumer devices), denominado

CDC (Connected Device Configuration). A outra com menor capacidade computacional (do

inglês Low-end consumer devices), denominado CLDC (Connected Limited Device

Configuration).

A segunda abordagem foi definida como um perfil (do inglês profile). Um perfil

consiste em um conjunto de classes que possibilita os desenvolvedores de software

implementar as aplicações de acordo com as características das aplicações dos pequenos

dispositivos computacionais. Foi denominado o MIDP (Mobile Information Device Profile),

oferecendo recursos como rede, componentes de interface, armazenamento local, etc.

Neste projeto utilizou-se o Wireless Toolkit 2.5 para CLDC.

Page 7: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

7

4.2 Bluetooth

Bluetooth é uma tecnologia de baixo custo para a comunicação sem fio entre

dispositivos eletrônicos a curtas distâncias.

Começou a ser desenvolvida em 1994, pela Ericsson, e a partir de 1998 pelo Bluetooth

Special Interest Group (SIG), consórcio inicialmente estabelecido pela Sony, Ericsson, IBM,

Intel, Toshiba e Nokia, hoje este consórcio inclui mais de 2000 empresas.

O nome Bluetooth é uma homenagem ao rei da Dinamarca e Noruega Harald Blåtand -

em inglês Harold Bluetooth (traduzido como dente azul, embora em dinamarquês signifique

de tez escura). Blåtand é conhecido por unificar as tribos norueguesas, suecas e

dinamarquesas. Da mesma forma, o protocolo procura unir diferentes tecnologias, como

telefones móveis e computadores. O logotipo do Bluetooth é a união de duas runas nórdicas

para as letras H e B, suas iniciais.

É usado para comunicação entre pequenos dispositivos de uso pessoal, como PDAs,

telefones celulares de nova geração, computadores portáteis, mas também é utilizado para a

comunicação de periféricos, como impressoras, scanners, e qualquer dispositivo dotado de um

chip Bluetooth.

Dispositivos Bluetooth operam na faixa ISM (Industrial, Scientific, Medical) centrada

em 2,45 GHz que era formalmente reservada para alguns grupos de usuários profissionais.

Nos Estados Unidos, a faixa ISM varia de 2400 a 2483,5 MHz. Na maioria da Europa a

mesma banda também está disponível. No Japão a faixa varia de 2400 a 2500 MHz. Os

dispositivos são classificados de acordo com a potência e alcance, em três níveis: classe 1

(100 mW, com alcance de até 100 m), classe 2 (2,5 mW e alcance até 10 m) e classe 3, (1 mW

e alcance de 1 m, uma variante muito rara). Cada dispositivo é dotado de um número único de

48 bits que serve de identificação.

Os dispositivos Bluetooth se comunicam entre si e formam uma rede denominada

piconet, na qual podem existir até oito dispositivos interligados, sendo um deles o mestre

(master) e os outros dispositivos escravos (slave); uma rede formada por diversos "masters"

(com um número máximo de 10) pode ser obtida para maximizar o número de conexões. A

banda é dividida em 79 portadoras espaçadas de 1 Megahertz, portanto cada dispositivo pode

transmitir em 79 diferentes freqüências; para minimizar as interferências, o dispositivo

"master", depois de sincronizado, pode mudar as freqüências de transmissão dos seus “slaves"

por até 1600 vezes por segundo.

Em relação à sua velocidade pode chegar a 721 Kbps e possui três canais de voz.

Page 8: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

8

As desvantagens desta tecnologia são o seu raio de alcance, 10 metros e o número

máximo de dispositivos que podem se conectar ao mesmo tempo.

O Bluetooth ganhou popularidade quase sempre associada aos charmosos headsets –

aqueles auriculares/microfones sem fio – para celulares que deixam seus usuários com ar de

filme de ficção científica.

Bluetooth é um padrão de comunicação por rádio de baixo consumo elétrico e curto ou

curtíssimo alcance. O mesmo vale para a troca de dados entre equipamentos e um computador

igualmente equipado. Pode ser um desses notebooks com o padrão integrado, cada vez mais

comum, ou um desktop munido de um adaptador USB-Bluetooth (popularmente chamado de

dongle), acessório parecido com um memory key que pode ser encontrado em lojas de

informática.

4.3 Eclipse e EclipseME

Eclipse é uma plataforma (IDE) focada no desenvolvimento de ferramentas e

aplicações de software. Hoje o Eclipse é a IDE Java mais utilizada no mundo. Possui como

características marcantes o uso da SWT e não do Swing como biblioteca gráfica, a forte

orientação ao desenvolvimento baseado em plug-ins e o amplo suporte ao desenvolvedor com

centenas de plug-ins que procuram atender as diferentes necessidades de diferentes

programadores.

EclipseME é um plugin para o Eclipse que auxilia no desenvolvimento de MIDlets

J2ME. Ele faz o trabalho pesado de conectar a plataforma de desenvolvimento Eclipse com o

Toolkit Wireless dos MIDlets J2ME, permitindo ao desenvolvedor focar-se no

desenvolvimento de sua aplicação, no lugar de se preocupar com as necessidades especiais do

desenvolvimento com o J2ME.

O EclipseME oferece ao desenvolvedor:

• Suporte múltiplo ao toolkit wireless;

• Suporte às definições e componentes da plataforma;

• Criação de suítes de desenvolvimento de projetos em MIDlet J2ME;

• Criação de novas MIDlets;

• Editor de descritor de aplicações Java (JAD);

• Pré-verificação incremental automática;

• Suporte do Eclipse para o envio ao emulador;

Page 9: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

9

• Suporte de debug de MIDlet;

• Compactação e ofuscação de pacotes JAR;

• Servidor de testes de aplicações “No Ar” (OTA);

• Assinatura automática de MIDlets,dentre outras funcionalidades.

Neste projeto foi usado o Eclipse versão 3.2.2 e o EclipseME versão 1.6.2.

Page 10: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

10

5. O Jogo 21

O jogo 21 ou Blackjack criado pelo grupo é disputado por dois jogadores

obrigatoriamente. Ao iniciar o jogo, são distribuídas duas cartas a cada jogador. No turno de

cada jogador, ele tem o direito de escolher entre pedir uma carta nova ou parar de pedir cartas.

Uma vez decidido parar de pedir cartas, ele não poderá pedir mais nenhuma carta ate o fim do

jogo.

A vez de um jogador inicia assim que o outro jogador compra uma carta ou pára de

jogar (o mesmo que parar de pedir novas cartas). Para um turno de um jogador terminar,

existem duas condições: a primeira é quando o oponente ainda não parou, assim, o turno

acaba após a compra de uma carta. A segunda condição acontece quando o oponente já não

quer mais cartas, fazendo com que o jogador tenha o direito de comprar o quantas cartas ele

desejar seguidamente e assim quando decidir parar, conseqüentemente o jogo também

termina.

Após o termino do jogo, é avaliada a pontuação das mãos dos jogadores. A vitória do

jogo é dada ao jogador que realizar 21 pontos. O jogador que fizer mais de 21 pontos perde

independente da pontuação do adversário, salvo o adversário também tenha ultrapassado os

21 pontos, nesse caso é considerado empate. Caso os dois jogadores tenham pontuação menor

que 21, o vencedor será aquele q tiver mais pontos. E se os dois obtiverem a mesma

pontuação também é declarado o empate.

A pontuação das cartas é avaliada da seguinte maneira:

• As cartas de 2 a 10, têm o valor do seu respectivo número.

• As cartas valente(J), dama(Q) e rei(K) valem 10 pontos cada.

• A carta ÁS, tem o valor de 11 pontos caso a soma da mão não ultrapasse 21. Caso

isso acontecer, ela passará a valer 1 ponto.

Page 11: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

11

6. A Aplicação

A aplicação criada é única, tanto para quem está oferecendo o serviço (servidor),

quanto para quem o está recebendo (cliente), diferentemente dos exemplos encontrados pelo

grupo na Internet. Ao se iniciar a aplicação o usuário tem que decidir se ele será cliente ou

servidor, para o jogo começar de fato, as duas opções de usuários já tem que ter sido

escolhida.

A grande diferença entre os dois tipos de usuários são as seguintes:

• Servidor: Apesar do nome, ele funciona somente para iniciar a conexão e gerenciar

a interface de um dos jogadores, oferecendo a ele a opção de pedir uma nova carta ou escolher

parar de pedir cartas.

• Cliente: Além das opções de pedir carta e parar de pedir cartas como o servidor, é

ele quem gerencia a lógica do jogo. É ele quem sorteia as cartas, e as distribui para os dois

jogadores, além de distribuir as cartas solicitadas durante o jogo. Ele faz a avaliação do

vitorioso do jogo.

Ao começar o jogo a vez é dada ao cliente, e esse turno será trocado como explicado

na seção 5 deste documento, bem como o fim do jogo.

Na estrutura interna do programa, há duas matrizes que armazenam as cartas das mãos

dos jogadores. No usuário cliente, essas matrizes são manipuladas, adicionando a elas cartas

quando solicitadas, servindo também para desenhar as cartas na tela. Já no usuário servidor,

elas são usadas únicas e exclusivamente para desenhar as respectivas cartas na tela.

Para manter a sincronia do jogo entre os celulares, as decisões são processadas da

seguinte forma:

• As decisões de comandos do servidor são passadas para o cliente que tomará as

decisões cabíveis.

• As decisões de comando do cliente são tratadas pelo próprio cliente.

• A sincronia da tela se dá pelas mensagens de atualização do cliente para o

servidor, que são dois tipos de mensagens: uma de autorização de turno do servidor, e a outra

de atualização dos vetores de cartas do servidor. As mensagens de atualização de vetor são

criadas no cliente a partir dos vetores locais, transmitidas pela conexão bluetooth para o

servidor como string, onde são interpretadas e assim atualizando o vetor no servidor.

• Decisão de vitória no jogo é realizada pelo cliente e passada ao servidor

somente a resposta final dessa decisão.

Page 12: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

12

Existem duas figuras: uma com os naipes do baralho, e uma com os números das

cartas (de 2 a 10, AS, J, Q e K). Para criar a imagem de uma carta, após decidido qual carta

será mostrada, o programa recorta o respectivo naipe na figura de naipes e o respectivo

número na figura de números.

Page 13: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

13

7. Módulos

São descrito a seguir os módulos criados para esta aplicação:

Baralho.java

Gerencia as cartas já distribuídas, garantindo que não se sorteie duas

vezes a mesma carta.

Principais Métodos:

• public Carta sorteiaCarta() - Sorteia uma carta do baralho.

• private int sorteiaDeZeroA(int limiteSuperior) - Sorteia

números entre 0 e um valor especificado, inclusive.

BTCliente.java

Inicializa a conexão com o bluetooth para o cliente.

Principais Métodos:

• public BTCliente(TelaCliente parent) - Construtor do

BTcliente.

• private void searchForServices(Vector deviceList, String

UUIDStr) - Procura por serviços.

• public void inquiryCompleted(int inqType) - Inicia o serviço

de busca.

• private void showInquiryCode(int inqCode) - Mostra o

resultado da busca.

BTServidor.java

Inicializa a conexão com o bluetooth para o servidor.

Principais Métodos:

• public void run() - Chamada quando inicia a aplicação.

Carta.java

Representa uma carta do baralho.

Principais Métodos:

• public Carta(char letra, int naipe) - Cria uma carta com letra

e naipe definidos, já "virada" (visível).

• private synchronized Image getImgNaipe() - Recupera o

bitmap correspondente ao naipe da carta.

• private synchronized Image getImgValor() - Recupera o

bitmap correspondente ao valor da carta.

• public void desenhaCarta(Graphics g) - Renderiza a carta.

Page 14: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

14

FormCliente.java

Responsável pela lógica do Cliente.

Principais Métodos:

• public FormCliente(ServiceRecord sr, BTCliente ecm2,

Display d) – Construtor da classe.

• public void vectorToString (Vector Serv, Vector Cli) - Cria

uma string com os vetores.

• public void stringToVector (String msg) - Cria o vetor com a

string.

• protected void paint(Graphics g) - Função responsável por

desenhar na tela.

• private int contaPontos(Vector a) - Conta o total de pontos de

um vetor de cartas.

FormServidor.java

Responsável pela lógica do Servidor.

Principais Métodos:

• public FormServidor(TelaServidor parent, BTServidor

echoServer) - Construtor da classe.

• protected void paint(Graphics g) - Função responsável por

desenhar na tela.

• public void stringToVector (String msg) - Cria as cartas a

partir de uma string.

ListaServicos21.java

Classe que procura a lista de serviços disponíveis.

Principais Métodos:

• public ListaServicos21(Hashtable st, BTCliente ecm, Display

d, MeJava21MIDlet parent) - Construtor da classe.

• private void buildList(Hashtable st) - Constrói a lista dos

nomes dos serviços.

• public void commandAction(Command c, Displayable d) -

Trata os comandos do menu.

MeJava21MIDlet.java MIDLet para a aplicação.

TeleCliente.java

Gerencia o formulário do cliente.

Principais Métodos:

• public TelaCliente(MeJava21MIDlet parent) - Construtor da

Page 15: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

15

classe.

• void completeInitialization(boolean isBTReady) - Garante a

inicialização do bluetooth.

• public void showServices(Hashtable searchTable) - Mostra

os seviços disponíveis.

TelaJogoCliente.java

Gerenciar mensagens via bluetooth para o Cliente.

Principais Métodos:

• public void run() - Função de sistema que realiza a conexão

com o servidor.

• public String echoMessage(String msg) - Envia mensagem

para o servidor e fica aguardando uma resposta.

• private boolean sendMessage(String msg) – Envia uma

mensagem.

• private String readData() - Trata resposta recebida e é

responsável por esperar uma resposta.

TelaServidor.java

Gerencia o formulário do cliente.

Principais Métodos:

• TelaServidor(MeJava21MIDlet parent) - Construtor da

classe.

• void completeInitialization(boolean isBTReady) - Garante a

inicialização do bluetooth.

• synchronized public void showMessage(String msg) - Envia

uma mensagem para o cliente.

Threaded21.java

Gerenciar mensagens via bluetooth para o Servidor.

Principais Métodos:

• public Threaded21(StreamConnection conn, TelaServidor

ecm) - Construtor da classe.

• private void processClient() - Função responsável por

recebimento das mensagens do cliente.

• private String readData() - Trata resposta recebida e é

responsável por esperar uma resposta.

Page 16: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

16

8. Telas do Jogo

Figura 1 – Telas iniciais

Nessa primeira imagem, são exibidas as telas iniciais do jogo, quando os jogadores

optam em ser ou Cliente ou Servidor, lembrando que sempre deve haver um servidor antes de

um cliente, para que esse possa encontrar o serviço e iniciar o jogo.

Page 17: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

17

Figura 2 – Primeira tela da mesa após realizada a conexão

Nessa imagem é exibido o momento inicial do jogo, após a decisão dos jogadores

entre serem servidor/cliente. Percebe-se que a aplicação já sorteia as cartas iniciais de cada

jogador e, além disso, dá a vez de começar a jogar para o cliente.

Page 18: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

18

Figura 3 – Tela com menu para parar de pedir novas cartas

Nessa imagem, é exibida o menu do cliente, com suas opções nova carta/ parar. Nota-

se ainda que já houve alguma jogabilidade, uma vez que cada jogador já comprou uma carta.

Page 19: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

19

Figura 4 – Tela com menu para pedir novas cartas

Na imagem acima, um dos jogadores já optou por parar de comprar cartas, restando ao

outro jogador continuar comprando cartas ou parar de jogar. Ao decidir parar, o aplicativo

calcula o vencedor do jogo.

Page 20: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

20

Figura 5 – Telas com mais cartas

Nessa imagem o jogador da esquerda decidiu comprar mais uma carta, ficando com 4

cartas.

Page 21: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

21

Figura 6 – Telas com resultado do jogo empatado

Na tela acima, os dois jogadores já optaram por parar de comprar cartas. Assim o

algoritmo calculou os pontos de cada um e verificou que os dois haviam estourado o limite de

pontos.

Page 22: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

22

Figura 3 – Telas com resultado do jogo onde há um vencedor

Essa imagem mostra um caso onde há um vencedor no jogo. O jogador da direita, com

suas cartas obteve 20 pontos (note que um As teve o valor de 11 pontos e o outro somente

valor 1), enquanto o jogador da esquerda obteve 19 pontos.

Page 23: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

23

9. Dificuldades Encontradas

Uma primeira dificuldade encontrada pelo grupo foi à inexperiência, assim como os

recursos restritos do J2ME. Para contornar esse problema, o grupo estudou exemplos que

usavam o J2ME assim como consultou as documentações encontradas nos sites da Sun.

Outra dificuldade foi a implementação da comunicação por bluetooth. Mais uma vez,

o grupo recorreu a exemplos de aplicações que realizavam esse tipo de conexão. Entretanto

nenhum exemplo encontrado atendia as necessidades da aplicação, assim foram misturadas

várias soluções para obter a utilizada no jogo.

O armazenamento das imagens das cartas também foi um obstáculo, uma vez que a

memória do dispositivo dos aparelhos móveis é curta. A solução encontrada pelo grupo para

tal dificuldade foi a criação de duas imagens, uma com os naipes e outra com os números, e

toda vez que há a necessidade de montar uma carta, a aplicação realiza recortes nessas figuras

maiores, acham o que precisam e montam a carta necessária.

Page 24: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

24

10. Discussão e Conclusões

Ao término do projeto, pode-se dizer que, foi criado um aplicativo conforme proposto

pelo grupo, com grandes idéias para a manipulação da interface visual, e a superação da

dificuldade da conexão via bluetooth.

Ela foi de grande enriquecimento para os membros do grupo, dando a esses a idéia

básica de implementação para dispositivos moveis. Essa aplicação, caso investido mais tempo

e dedicação, pode-se tornar uma aplicação comercializável, já que ela gera um grande

entretenimento.

Page 25: MEJAVA 21nacif/cmovel/files/2006/10/relat.pdf · Esse documento tem por finalidade descrever o projeto final da disciplina INF 492 (Computação Móvel) lecionada no semestre 2 do

25

11. Referências Bibliográficas

Eclipse.org, Eclipse SDK - http://www.eclipse.org - último acesso fevereiro de 2007

EclipseME.org, Plugin EclipseME – http://.eclipseme.org - último acesso fevereiro de 2007

Sun.com, Wirelles Tool Kit – http://java.sun.com/javame/index.jsp - último acesso fevereiro

de 2007