import java.util.Vector; import unicamp.ic.mc336.definitions.ContainerInterface; import unicamp.ic.mc336.definitions.PlayerInterface; import unicamp.ic.mc336.definitions.AbstractCatPlayer; import unicamp.ic.mc336.definitions.AbstractCatcherPlayer; import unicamp.ic.mc336.definitions.Position; /* Este eh um modelo para implementacao dos jogadores. Nele voce encontra a assinatura de todas as funcoes que precisam ser implementadas. Observe que este arquivo traz apenas definicoes validas, sendo portanto compilavel, mas nao implementa um jogador que realize jogadas validas. Eh importante salientar que as chamadas feitas ao jogador devem ser retornadas em, no maximo, 1 segundo. Extrapolar este tempo resulta em desclassificacao do jogador no campeonato. Outro ponto importante eh que, em nenhum momento, o aluno deve utilizar funcoes que escrevam na saida padrao como, por exemplo, System.out.println, pois isso farah o gerenciador invalidar a jogada. Em campeonatos anteriores, tivemos problemas com alguns arquivos contendo acentuacao. Nao ha indicacao de que este problema venha a se repetir com Java. Entretanto, por precaucao, NAO UTILIZE ACENTOS EM SEUS COMENTARIOS. Por fim, a representacao interna de uma posicao eh feita atraves da classe Position. A instanciacao de uma nova posicao, por exemplo, (2, 4), eh da seguinte maneira. Position position = new Position(2, 4); Para checar se duas posicoes representam a mesma casa no tabuleiro use o metodo equals. positionA.equals(positionB); Os metodos getColumn e getLine sao usados para que voce receba as coordenadas (x,y) que sao representadas por esta instancia. int x = positionA.getColumn(); int y = positionA.getLine(); */ /* Por favor, preencha os campos solicitados abaixo: Nome: RA: */ public class EmptyPlayer implements ContainerInterface { /*Insira aqui os atributos da classe EmptyPlayer*/ /* Metodo que devolve uma instancia de um jogador 'gato'. Em geral, esse metodo nao precisa ser alterado. */ public PlayerInterface getCatPlayer() { return new Cat(); } /* Metodo que devolve uma instancia de um jogador 'pegador'. Em geral, esse metodo nao precisa ser alterado. */ public PlayerInterface getCatcherPlayer() { return new Catcher(); } /* Classe que implementa as funcionalidades de um jogador 'gato'. */ private class Cat extends AbstractCatPlayer { /*Insira aqui os atributos da classe Cat*/ /* Metodo usado para enviar a nova posicao do gato ao campeonato. Observe que a jogada que voce enviar ao campeonato sera redirecionada a voce atraves do metodo redefineCatPosition. Desta forma, sugere-se nao utilizar este metodo para armazenar localmente a sua jogada. */ public Position calcMove() { /*Insira seu codigo aqui*/ return null; } /* Metodo usado para que voce defina o que eh uma jogada valida para voce. Caso voce nao queira implementar um metodo que valide suas proprias jogadas, deixe o codigo como estah. */ public boolean validMove(Position myMove) { /*Insira seu codigo aqui*/ return true; } } /* Classe que implementa as funcionalidades de um jogador 'gato'. */ private class Catcher extends AbstractCatcherPlayer { /*Insira aqui os atributos da classe Catcher*/ /* Metodo usado para enviar um novo bloqueio ao campeonato. Observe que a jogada que voce enviar ao campeonato sera redirecionada a voce atraves do metodo addBlock. Desta forma, sugere-se nao utilizar calcMove para armazenar localmente a sua jogada, sob o risco de voce adicionar duas posicoes bloqueadas iguais. */ public Position calcMove() { /*Insira seu codigo aqui*/ return null; } /* Metodo usado para que voce defina o que e uma jogada valida para voce. Caso voce nao queira implementar um metodo que valide suas proprias jogadas, deixe o codigo como estah. */ public boolean validMove(Position myMove) { /*Insira seu codigo aqui*/ return true; } } }