Fundamentos de Programação 1º ano AMV 2015/2016 (ver. 1.2) Trabalho de Avaliação 1. Apresentação Este trabalho tem o objetivo de consolidar os conhecimentos de Fundamentos de Programação e de Java. 2. Descrição Pretende-se que os alunos criem um jogo semelhante ao jogo da forca, com os seguintes requisitos: O programa deve ter um menu com as opções: o Iniciar jogo o Consultar lista de pontuações o Sair Ao selecionar a opção selecionar "Iniciar jogo", o programa escolhe aleatoriamente uma palavra do ficheiro "palavras.txt" Nesse ficheiro, cada palavra ocupa uma linha Depois de selecionada a palavra, o programa apresenta um menu ao utilizador onde pede para: o inserir uma letra, ou o tentar adivinhar a palavra O jogador tem apenas 10 tentativas no total (soma das letras, ou tentativas de adivinhar palavra). Se não acertar, perde o jogo e o programa volta ao menu inicial. De início, antes da primeira tentativa, o jogo mostra uma sequência de sublinhados (caráter '_') onde cada sublinhado representa uma letra a palavra a acertar. Sempre que o jogador insere uma letra, o programa volta a mostrar a sequência de sublinhados, mas substituindo as letras já acertadas nos locais adequados. Se a palavra tiver uma letra com acento, ou cedilha, o programa deve considerar essa letra como certa, mesmo que o utilizador insira a letra sem acento ou cedilha Sempre que um jogo termina, o programa coloca uma linha no ficheiro "resultados.txt", com o resultado conseguido pelo jogador. Cada linha nesse ficheiro é constituída pelo nome do utilizador (uma palavra), seguida de um espaço, seguido da data/hora (ver ANEXO I) no formato "YYYY-MM-DD hh:mm:ss", seguida de um espaço, seguido da pontuação. As linhas devem estar ordenadas por pontuação decrescente A pontuação é calculada da seguinte forma: o Cada letra acertada vale 3 pontos (se a palavra tiver duas letras "a", só conta 3 pontos) o Cada letra falhada vale -1 ponto o Se acertar a palavra, soma mais 10 pontos 3. Exemplo Considere-se que o programa escolheu aleatoriamente a palavra "paritário" Quando inicia, deve mostrar a seguinte sequência de sublinhados _________ Se o utilizador inserir a letra "a", o programa deve mostrar a sequência seguinte e contar 3 pontos: _a___á___ Depois, se o utilizador escolher a letra "e", o programa deve descontar 1 ponto (passa a 2) e mostra a mesma sequência: _a___á___ A seguir, se o utilizador escolher a letra "i", o programa conta mais 3 pontos - passa a 5 - e mostra o seguinte: _a_i_á_i_ No fim, supondo que o utilizador consegue acertar e ficar com 24 pontos, o programa deve inserir no ficheiro "resultados.txt" a seguinte linha, ordenada por pontuaçao decrescente: alex 2015-11-16 09:30:01 24 4. Entrega e discussão dos trabalhos Os trabalhos devem ser apresentados e discutidos na última semana de aulas. Anexo I Excerto de código que determina a Data e Hora actual num determinado formato. O formato pedido no projecto é ligeiramente diferente deste, portanto devem alterá-lo. import java.util.Calendar; import java.text.SimpleDateFormat; … public static final String DATE_FORMAT = "yyyyMMdd HH:mm:ss"; … public static String now() { Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); return sdf.format(cal.getTime()); }