Laboratório de programação — 1º Trabalho

Propaganda
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
Download