UNIVERSIDADE DOS AÇORES DEPARTAMENTO DE MATEMÁTICA ESTRUTURAS E ALGORITMOS TRABALHO DE CASA Nº 1 - ENUNCIADO 2 Considere um torneio de setas (darts) disputado por N jogadores. Segundo as regras uma vitória é obtida à melhor de cinco parciais, isto é, ganha o jogador que vencer três parciais, num máximo de cinco. Cada jogador é caracterizado por um nome, nível, nº de vitórias, nº de derrotas, nº parciais ganhos. Sempre que um jogador ganhar um jogo é incrementado o nº de vitórias em uma unidade. Sempre que o jogador perder um jogo é incrementado em uma unidade o nº de derrotas, mas caso tenha vencido algum parcial então o nº de parciais é incrementado em função do nº de parciais ganhos. O nível de um jogador está relacionado com a pontuação do mesmo e admite um dos seguintes valores: Amador (<10 pontos), Intermédio (<25 pontos), Avançado (<50 pontos), Profissional (≥50 pontos). A pontuação do jogador é obtida em função da seguinte expressão: PARTE I 1. Considere a classe Jogador que contém a informação sobre um jogador do torneio. [1.0] a. Implemente um método construtor necessário para criar um jogador no início do torneio, bem como métodos para obter aos valores dos respectivos atributos. [1.0] b. Implemente o método getPontuacao que retorna o total de pontos obtidos pelo jogador até ao momento. [2.0] c. Implemente o método resJogo que recebe como parâmetros o número de parciais ganhos (pg) no final de um jogo e actualiza os dados do jogador. 2. Considere a classe Torneio que contém a informação relativa aos jogadores, que disputam o torneio, guardada no array jogadores. [2.0] a. Implemente dois métodos construtores em que o primeiro recebe o total de jogadores que irão disputar o torneio e inicializa o array jogadores com esta dimensão. O segundo método recebe como parâmetro um array com o nome dos jogadores que irão disputar o torneio e inicializa o array jogadores. [1.0] b. Implemente o método addJogador que insere um novo jogador na primeira posição livre do array jogadores. [1.0] c. Implemente o método removeJogador que remove o jogador que se encontra na posição index do array jogadores. [1.0] d. Implemente o método getJogador que retorna o jogador que se encontra na posição index do array jogadores. PARTE 2 Em cada questão escolha apenas uma das alíneas para implementar 3. Na classe Torneio implemente o método jogo que actualiza a informação relativa ao torneio, após um jogo entre dois jogadores. [1.0] a. Deverá considerar que o método recebe a posição no array de cada jogador e os parciais ganhos por cada um deles. [1.5] b. Deverá considerar que o método recebe o nome de cada jogador e os parciais ganhos por cada um deles. [2.0] c. Deverá considerar que o método recebe dois objectos da classe Jogador e os parciais ganhos por cada um deles. 4. Na classe Torneio implemente um método que devolva o nome do jogador com: [1.0] a. melhor diferença entre vitórias e derrotas. [2.0] b. melhor diferença entre vitórias e derrotas. Em caso de empate considere o que tem melhor nível. [3.0] c. melhor diferença entre vitórias e derrotas. Em caso de empate considere como critério de desempate o melhor nível. Se subsistir o empate então desempate pelo maior nº de parciais ganhos. 5. Na classe Torneio implemente o método classificação que retorna um novo array com: [2.0] a. os jogadores ordenados de acordo com a pontuação obtida. [3.0] b. os jogadores ordenados de acordo com a pontuação obtida. Em caso de igualdade de pontos, o critério de desempate é feito pela diferença entre vitórias e derrotas. PARTE 3 [3.0] Implemente a classe executável TesteTorneio que deverá realizar uma simulação do torneio. Considere que no torneio competem 26 jogadores, que todos jogam entre si e que os resultados parciais em cada jogo deverão ser obtidos de forma aleatória. Para cada jogo deverá imprimir o nome dos jogadores que o disputam e os resultados parciais do mesmo. No final, deverá imprimir o nome dos jogadores, o nível, a pontuação final, as vitórias, derrotas e os parciais ganhos do primeiro ao último classificado.