Instalar a APK que se encontra na pasta Executables
Singleton – O Sigleton foi utilizado quando em situações em que é necessário aceder multiplas vezes a uma mesma classe, sendo esta instanciada apenas uma vez. Esta abordagem permitiu que as classes Main Activity, Game Controller e Game Model apenas fossem acedidas pela função getInstance(), permitindo assim um maior controlo sobre a instância.
Strategy – O pattern Strategy foi usado para definir um modelo específico ao nível do Game Model e do Game View. Consoante o nível pretendido é implementada uma diferente estratégia de jogo (easy, medium ou hard). Este mesmo princípio é aplicado relativamente ao Game Model. Os diferentes objetos provêm de Entity Model e são apenas especificados consoante a necessidade.
Factory Method – O Factory Method é implementado devido à dificuldade em establecer diversos padrões de desenho. Desta forma, define-se um padrão em Entity View que irá permitir tratar as diversas sprites, sendo estas apenas especificadas num momento posterior.
Ao longo do projeto fomos confrontados com as mais diversas situações. Tudo começou com a simples configuração do IDE que viríamos a utilizar, o Android Studio: problemas ao nível do SDK, correr os projeto-exemplo, configurar o LibGdx, etc. Isto tudo apenas na primeira semana. Como é óbvio não vamos enumerar todos os problemas que fomos tendo ao nível da implemetação, mas óbvio também é que poucos não foram. Desde início que tinhamos bem presente qual era o resultado final que pretendíamos atingir, por isso apesar de ter sido tudo implementado incrementalmente o código sempre foi genérico o suficiente para não termos qualquer problema aquando a implementação de novas funcionalidades. Apesar de termos tido cerca de 2 meses para implementar todo o projeto, foi bastante dificíl gerir o tempo e dedicar horas semanais constantes, de modo que a repartição do esforço tenha sido constante ao longo das semanas. Isto porque surgiam constantemente testes ou prazos de entrega que exigiam uma maior prontidão, sendo que este era sempre o projeto que ficava para segundo plano devido à distância temporal relativamente ao prazo de entrega. Assim sendo, grande parte do projeto foi implementado nas últimas semanas. Mas apesar da pressão devido ao pouco tempo que tinhamos, esta gestão de tempo revelou-se bastante vantajosa ao nível da distribuição de tarefas e da cooperação entre os dois elementos do grupo. Ao nível de conhecimento adquirido também consideramos que o panorama geral se revelou muito proveitoso, ficamos com bastantes conceitos ao nível de programação orientada a objetos, assim como todas as boas práticas que se encontram subjacentes. Este segundo trabalho também conseguiu ter um estímulo adicional, o facto de estarmos a trabalhar em Android faz-nos ver uma aplicação direta dos conceitos leccionados assim como ter um feedback das outras pessoas bastante positivo em relação ao que estamos a desenvolver. Podemos publicar o nosso trabalho na PlayStore e qualquer um consegue ter acesso ao nosso jogo. Relativamente à implementação optamos por desenvolver toda a lógica do jogo em LibGdx, pois a utilização de uma framework traz-nos muitas vantagens ao nível de uma boa implementação, permitindo recorrer a um conjunto de ferramentas que terímos que implementar de raiz sem qualquer necessidade. Nesta sequência também utilizamos Box2d a fim de implementar a física do jogo. Ao nível do layout e dos diferentes menus optamos por utilizar Android nativo. Isto permitiu-nos programar de facto em Android, e não apenas ter um projeto que fosse compatível, além disso também nos permitiu utilizar um conjunto de ferramentas próprias de Android.