/** * Esta classe representa o placar de um jogo de * Bozó. Permite que combinações de dados * sejam alocadas às posições e mantém o * escore de um jogador. * * @author andredurante_6435479 * */ public class Placar { private int[] placar = new int[] {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1}; private String Placar = new String (" (1) | (7) | (4) \n" + " --------------------------\n" + " (2) | (8) | (5) \n" + " --------------------------\n" + " (3) | (9) | (6) \n" + " --------------------------\n" + " | (10) | \n" + " +----------+ \n"); /** * Não tem função real dentro da classe. * @return static void */ public static void main(java.lang.String[] args){ } /** * Adiciona uma sequencia de dados em uma determinada posição do placar. * @return void */ public void add(int posicao, int[] dados){ if(posicao > 10 || posicao < 1) throw new IllegalArgumentException("Posição invalida"); if(placar[posicao - 1] != -1) throw new IllegalArgumentException("Posição já ocupada"); int[] jogada = new int[] {0, 0, 0, 0, 0, 0}; for(int i = 0; i < 5; i++) jogada[dados[i] - 1] += 1; if(posicao < 7) placar[posicao - 1] = jogada[posicao - 1] * posicao; else if(posicao == 7){ int soma = 0; for(int i = 0; i < 6; i++){ if(jogada[i] == 2 || jogada[i] == 3) soma += jogada[i]; } if(soma == 5) placar[posicao - 1] = 15; else placar[posicao - 1] = 0; } else if(posicao == 8){ if(jogada[0] == 0){ for(int i = 1; i < 6; i++){ if(jogada[i] > 1) placar[posicao - 1] = 0; if(i == 5 && placar[posicao - 1] == -1) placar[posicao - 1] = 20; } } else if(jogada[5] == 0){ for(int i = 0; i < 5; i++){ if(jogada[i] > 1) placar[posicao - 1] = 0; if(i == 4 && placar[posicao - 1] == -1) placar[posicao - 1] = 20; } } else placar[posicao - 1] = 0; } else if(posicao == 9){ for(int i = 0; i < 6; i++){ if(jogada[i] == 4) placar[posicao - 1] = 30; else if(i == 5 && placar[posicao - 1] == -1) placar[posicao - 1] = 0; } } else if(posicao == 10){ for(int i = 0; i < 6; i++){ if(jogada[i] == 5) placar[posicao - 1] = 40; else if(i == 5 && placar[posicao - 1] == -1) placar[posicao - 1] = 0; } } String target = new String(); String replacement = new String(); target = "(" + Integer.toString(posicao) + ")"; replacement = Integer.toString(placar[posicao - 1]) + " "; Placar = Placar.replace(target.subSequence(0, target.length()), replacement.subSequence(0, replacement.length())); } /** * Computa a soma dos valores obtidos, considerando apenas as posições que já estão ocupadas. * @return int */ public int getScore(){ int soma = 0; for(int i = 0; i < 10; i++){ if(placar[i] != -1) soma += placar[i]; } return soma; } /** * Transforma representação do dado em String. * @return java.lang.String */ @Override public String toString(){ return Placar; } }