Laboratório de programação — 1º Trabalho Pedro Vasconcelos, Manuel Barbosa, DCC/FCUP Fevereiro de 2016 Jogo 2048 Objetivo Pretende-se que implemente em Java um clone do jogo 2048 usando a biblioteca Lanterna para interfaces textuais. Regras: • o trabalho deve ser feito em grupos de dois alunos • os alunos devem indicar os seus grupos aos docentes • o desenvolvimento deve ser feito usando o repositório Git https:// gitlab01.alunos.dcc.fc.up.pt • o apresentação do trabalho será na semana 14 a 18 de Março durante as aulas Descrição O 2048 é um jogo de puzzle desenvolvido por Gabriele Cirulli num fim-de-semana quando tinha apenas 19 anos. O jogo desenrola-se numa grelha de 4 × 4 que inicialmente começa vazia. Em cada turno surge aleatoriamente um novo valor “2” ou “4” numa posição ainda não ocupada. O jogador pode fazer deslizar todos os números para cima, baixo, esquerda ou direita usando as teclas de cursor. Sempre que dois números iguais “colidem” são substituidos pela sua soma (i.e., o seu dobro, uma vez que os valores são iguais); desta forma vão surgindo potências de dois cada vez maiores. O objetivo do jogo é conseguir fazer aparecer o número 2048 antes que todas as posições fiquem ocupadas. 1 Sugestões Defina uma classe para representar o modelo de jogo (i.e. a grelha e a pontuação do jogador). Poderá inspirar-se no modelo funcional em Haskell que será apresentado durantes as aulas. Use a classe java.util.Random para gerar números pseudo-aleatórios. Tenha o cuidado de separar a visualização do modelo do jogo: definindo uma classe distintas para este aspectos da implementação (e apenas nesta deverá usar a biblioteca Lanterna). Se a decomposição estiver bem estruturada a classe que trata a visualização deve depender do modelo do jogo, mas o contrário não acontece. Em particular, deve ser possível testar o modelo do jogo (e.g. usando simplesmente System.out.println ou assert) independentemente do código visualização e da biblioteca Lanterna. Como valorização pode também implementar alguns extras do jogo, por exemplo: • colorir os numeros na grelha consoante o seu valor; • manter uma pontuação do jogador e a melhor pontuação obtida; Modelo do jogo em Haskell: Game2048.hs Ligações • Sítio oficial (jogo on-line): https://gabrielecirulli.github.io/2048/ • Página da Wikipedia: https://en.wikipedia.org/wiki/2048_(video_game) • Biblioteca Lanterna: – sítio oficial https://code.google.com/p/lanterna/ – cópia local dos arquivos JAR: lanterna-2.1.7.jar lanterna-2.1.7javadoc.jar lanterna-2.1.7-sources.jar – exemplo de uso LanternaExample.java Pedro Vasconcelos, 2016 2