[ Arquitecturas Móveis ] 2017/2018 Relatório Chess Game Trabalho Prático de AMOV Hugo Santos, 21220593 Rafael Henriques, 21250203 2017/2018 [ Arquitecturas Móveis ] 1
Índice 1. INTRODUÇÃO 4 1.1. Descrição do Jogo 4 1.2. Âmbito de Desenvolvimento 4 2. FUNCIONALIDADES 4 2.1. Gestão de Perfil 4 2.1.1. Foto de Perfil 4 2.1.2. Histórico 4 2.2. Três Modos de Jogo 5 2.2.1. Single Player 5 2.2.2. Multiplayer 5 2.2.3. Online 5 2.3. Xadrez com Relógio 5 2.4. Suporte Multilingual 6 2.5. Suporte a Diferentes Orientações de Ecrã 6 2.6. Interface Intuitiva 6 3. MODELO 6 3.1. Chess Game 6 3.1.1. Board 6 3.1.2. Pieces 7 3.1.3. Player 7 3.2. Comunicação 7 3.3. Base de Dados Local 7 4. ATIVIDADES 7 4.1. Menu Inicial 7 4.2. Informação de Perfil 7 4.3. Edição de Perfil 8 4.4. Atividade de Jogo 8 5. ARQUITETURA DO SISTEMA 8 5.1. Sistema Operativo 8 5.2. Armazenamento de Dados 8 5.3. Temporizador 8 5.4. Ficheiros de Recurso 9 5.5. Permissões 9 5.6. Comunicação via Network 9 2017/2018 [ Arquitecturas Móveis ] 2
6. CONCLUSÃO 10 2017/2018 [ Arquitecturas Móveis ] 3
1. INTRODUÇÃO 1.1. Descrição do Jogo A aplicação desenvolvida corresponde a um Jogo de Xadrez em Android, com o intuito de poder ser jogado contra o computador, Multijogador no mesmo dispositivo ou Online. Pode ser jogado em qualquer smartphone Android com versão mínima de Android 5.0. 1.2. Âmbito de Desenvolvimento O jogo foi desenvolvido regendo-se por um enunciado fornecido, por forma a consolidar a matéria da Unidade Curricular Arquiteturas Móveis. O código fonte encontra-se em inglês. 2. FUNCIONALIDADES Nos subtópicos seguintes descreve-se as principais funcionalidades da aplicação. 2.1. Gestão de Perfil A aplicação tem um perfil único, onde este pode ser configurado com um nickname e uma foto de perfil. Também é possível verificar os histórico de jogos realizados. 2.1.1. Foto de Perfil Para tirar uma foto de perfil, esta recorre à câmara traseira do dispositivo. Após tirar a foto, ela será guardada como foto de perfil e a foto anterior (caso exista) será eliminada. 2.1.2. Histórico Um histórico de jogadas é gerado após cada jogo concluído ou em que houve desistência, com o nickname do oponente, o modo de jogo e o resultado Os resultados podem ser os seguintes: Perdeu; Ganhou; Empatou. 2017/2018 [ Arquitecturas Móveis ] 4
Os modos de jogo podem ser os seguintes: Singleplayer; Multiplayer; Online. 2.2. Três Modos de Jogo Existem três modos de jogo, mas as regras a seguir são iguais em todos eles, exemplo no modo multijogador que suporta relógio. 2.2.1. Single Player Este modo de jogo corresponde a um jogo contra o computador. Existe uma única dificuldade, onde o computador joga uma peça aleatória para uma casa aleatória. 2.2.2. Multiplayer Este modo de jogo corresponde a um jogo entre dois jogadores, no mesmo dispositivo. Antes de iniciar o jogo é necessário escolher o nome para o adversário, e o tempo de relógio. O jogo com relógio é obrigatório neste modo de jogo. 2.2.3. Online Este modo de jogo corresponde a um jogo entre dois jogadores, em dispositivos diferentes. Antes de iniciar o jogo é preciso ter em atenção que o jogador a juntar-se terá de estar conectado à mesma rede que o jogador criado do jogo. Será necessário escrever o IP no jogador a juntar-se. O procedimento está explícito no Manual de Utilizador. 2.3. Xadrez com Relógio O modo de jogo Multiplayer suporta jogo com relógio, onde este pode variar entre 10 e 120 minutos. O jogo com relógio é obrigatório, neste modo, tendo sido esta funcionalidade adicionada para cumprir um dos requisitos do enunciado do trabalho prático. 2017/2018 [ Arquitecturas Móveis ] 5
2.4. Suporte Multilingual O jogo suporta duas línguas Inglês e Português. A linguagem por defeito é o Inglês, mas caso o dispositivo esteja em Português a aplicação será apresentado em Português. 2.5. Suporte a Diferentes Orientações de Ecrã Durante o jogo é suportado duas orientações de ecrã portrait e landscape, sendo possível mudar a qualquer altura. No menu e configurações apenas é suportado a orientação de ecrã portrait. 2.6. Interface Intuitiva A interface foi desenvolvida por forma a ser intuitiva para o utilizador, sendo que o Android já propulsiona um bom design para os componentes. 3. MODELO A aplicação foi desenvolvida recorrendo a uma arquitetura MVC (Model-View-Controller) por forma a organizar o código de melhor forma, tornado o código fonte mais modular. 3.1. Chess Game A lógica do jogo de xadrez está divida em três packages essências: Board; Pieces; Player. 3.1.1. Board Package representa os algoritmos que visam manipular a informação no tabuleiro e transição entre movimentos. Contém as seguintes classes: Casa (Tile); Tabuleiro (Board); Movimento (Move); Transição de um Movimento para outro (MoveTransition). Classes auxiliares, que simplifica a complexidade das classes anteriores. 2017/2018 [ Arquitecturas Móveis ] 6
3.1.2. Pieces Package que representa as peças constituintes de um jogo de xadrez, sendo estas subclasses de Piece. 3.1.3. Player Package que representa um jogador, sendo que durante um jogo apenas existem duas instâncias desta classe, uma para cada jogador. 3.2. Comunicação Para estabelecer comunicação entre dois dispositivos e fazer um jogo online, é utilizada a técnica de troca de mensagem. 3.3. Base de Dados Local Para armazenar dados relativamente aos jogos terminados, recorre-se a uma Base de Dados Local, 4. ATIVIDADES 4.1. Menu Inicial Atividade inicial, onde o jogador pode indicar que tipo de jogo pretende jogar, ou gerir o seu perfil. As opções disponibilizadas são: Meu Perfil; Singleplayer; Multiplayer; Online 4.2. Informação de Perfil Ao escolher a opção Meu Perfil no menu inicial, esta atividade será ativa. Dados relativamente ao jogador serão mostrados, assim com o histórico de jogos realizados. 2017/2018 [ Arquitecturas Móveis ] 7
4.3. Edição de Perfil O jogador nesta atividade pode tirar uma nova foto de perfil (caso não exista) ou alterar o nickname. 4.4. Atividade de Jogo Atividade composta pelo tabuleiro de jogo, peças, nome dos jogadores e número de peças capturadas, onde todo o jogo de xadrez é desenrolado. 5. ARQUITETURA DO SISTEMA 5.1. Sistema Operativo O Sistema Operativo para a qual a aplicação foi desenvolvida é o Android. Foi escolhida a API 21 do Android, correspondendo ao requisito mínimo da versão Android 5.0. 5.2. Armazenamento de Dados A figura seguinte representa as duas tabelas físicas utilizadas no trabalho prático. A sua implementação foi feita às custas SQLiteOpenHelper, uma classe que ajuda a manipular a gestão da base de dados e de versões, fornecida pela biblioteca android. Link para a Documentação do SQLiteOpenHelper https://developer.android.com/reference/android/database/sqlite/sqliteopenhelper.html 5.3. Temporizador O temporizador foi implementado utilizando o CountDownTimer. Cada vez que um jogador faz uma jogada e termina-a, o contador do adversário é iniciado. A cada callback de 1 milisegundo, o tempo é guardado. 2017/2018 [ Arquitecturas Móveis ] 8
Link para a Documentação do CountDownTimer https://developer.android.com/reference/android/os/countdowntimer.html 5.4. Ficheiros de Recurso A recorre a diversos ficheiros de recurso, sendo eles: Font: Estilo de letra utilizado, chamado julius_sans_one; 7 Ficheiros de Layout, correspondendo às diversas atividades; Colors: Onde o valor hexadecimal das cores é guardado; String: Dois ficheiros que representam a aplicação em Idioma Inglês e Português, respetivamente. 5.5. Permissões No ficheiro de manifesto diversas permissões são necessárias para poder aceder a um conjunto de funcionalidade, nomeadamente externas à aplicação. As permissões são as seguintes: < uses-permission android :name= "android.permission.internet" /> < uses-permission android :name= "android.permission.access_network_state" /> < uses-permission android :name= "android.permission.access_wifi_state" /> < uses-permission android :name= "android.permission.camera" /> < uses-permission android :name= "android.permission.read_external_storage" /> < uses-permission android :name= "android.permission.write_external_storage" /> As primeiras três permissões são necessárias para poder enviar e receber dados via wifi. As últimas três permissões são necessárias para aceder à câmara do dispositivo, ler e escrever fotos do armazenamento. 5.6. Comunicação via Network A comunicação via Network foi utilizada como solução para dois jogadores poderem jogar, cada um no seu dispositivo. Para resolver este problema, foi utilizado dois sockets via protocolo TCP, onde estes enviam mensagens de texto. Dois tipos de mensagens de texto são enviadas, no início do jogo é enviado o nome do jogador, para o adversário, as mensagens subsequentes são as coordenada no tabuleiro das jogadas a serem feitas, ou seja a posição da peça a mover e a posição candidata. 2017/2018 [ Arquitecturas Móveis ] 9
6. CONCLUSÃO Devido ao tempo disponibilizado, o programa foi desenvolvido sem auxílio de diagramas UML, o que nenhum destes é apresentado no relatório, como por exemplo Diagrama de Classes. Foi possível a nível prático aplicar diversos conceitos abordados nas aulas, por forma a construir a aplicação e recorrendo ao https://developer.android.com/studio/intro/index.html, por forma explorar as diversas ferramentas fornecidas pelo sdk de android, sendo um desses exemplos o CountDownTimer. 2017/2018 [ Arquitecturas Móveis ] 10