Segue abaixo a nova interface para o EP3.
FIz algumas correções. Os nomes dos métodos
devem ser auto-explicativos, em caso de dúvidas
perguntem.
Alfredo
public interface Tabuleiro {
int [][] devolveJogadasRealizadas();
boolean estaEmDeadLock();
void imprimeTabuleiro();
boolean efetuaJogada(int []j);
boolean verificaJogada(int []j);
int devolveNumeroJogadas();
int [] devolvePosicaoAtual();
int devolveValorPosicaoAtual();
void guardaTabuleiro(int [][]v);
int devolvePosicao33();
}
public interface Estrategia {
int [] encontraProximaJogada(Tabuleiro meu, Tabuleiro adversario);
Tabuleiro criaTabuleiro();
}
Olá professor,
tenho algumas dúvidas.
Porque o método efetua jogada é um boolean e não um void?
O método guarda tabuleiro recebe uma matriz, mas o programa deve receber uma matriz montada ou uma string e ele passa para matriz?
Obrigado
Abraços
fab
O método efetua jogada é boolean, pois caso seja possível fazer a jogada
ele atualiza o tabuleiro e devolve true. Caso a jogada seja inválida, ela não
é feita e o método devolve false.
Eu optei por fazer um método que recebe uma matriz montada, pois é o
mais natural.
Alfredo
Olá Alfredo,
O que eu não entendi do método efetua jogada, é que vc disse q ele verifica a jogada para depois fazê-la, para que serve o método verifica jogada então?
Fabrízio
Isso mesmo, o efetuaJogada, primeiro verifica e se for válida, faz a jogada.
Já o verificaJogada apenas vê se ela é válida.
Pode se observar que é uma boa chamar no início do efetuaJogada o verificaJogada.
Alfredo
continuação...
me esqueci de umas perguntas.
E os antigos métodos: "gera tabuleiro", "recebe tabuleiro", e "esta valido" ?
Agora terminou.
Obrigado
fab
O método geraTabuleiro gera um novo tabuleiro limpo.
guardaTabuleiro armazena uma matriz como novo tabuleiro.
O método estaValido verifica se o tabuleiro é válido (conforme
as regras do jogo) e devolve verdadeiro ou falso.
Alfredo
Então esses métodos continuam existindo? É q eles não estão na nova interface.
Fabrízio
Não é necessário implementar estes métodos, você deve fazê-lo
apenas se acha que vão ajudar.
Alfredo
Obrigado Alfredo
Fabrízio
Prof. quando o senhor disse o método geraTabuleiro gera um novo tabuleiro limpo, um tabuleiro limpo é um tabuleiro todo zerado??
Não necessariamente zerado, mas sim inicializado. Isto é, com
valores válidos (entre 1 e 15, apenas uma vez) e sem nenhuma jogada
feita.
Alfredo
Oi novamente!
Prof. na interface Estrategia tem : Tabuleiro criaTabuleiro(); , q q isso?
E no método int [] encontraProximaJogada(Tabuleiro meu, Tabuleiro adversario); esse Tabuleiro meu é uma matriz neh?
Outra dúvida, por que método int [][] devolveJogadasRealizadas(); devolve uma matriz sendo que as jogadas sao dadas por vetores?
Eu posso criar novos métodos nas duas classes?
Obrigado
No último parágrafo da seção "Interface em Java" na descrição do EP3 está escrito que "algumas classes adicionais serão necessárias para que possa se jogar com um EP". Essas classes deverão funcionar também para que um EP jogue contra outro durante campeonato?
Obrigado,
João
Re: Nova interface para o EP3
O que são "Tabuleiro meu" e "Tabuleiro adversario"?
O Renan falou em matriz, mas eu não entendi, é uma matriz contendo o que? o tabuleiro contendo as posições ja ocupadas?
Assim, eu não entendo, qual a necessidade de o tabuleiro ser passado como parâmetro em toda jogada?
obrigado
O método encontraProximaJogada para usar uma boa estratégia recebe
dois tabuleiros para analisar, o seu e o do adversário. Assim, pode se achar
uma jogada boa. Note que um Tabuleiro é mais do que "apenas" uma matriz.
O Tabuleiro poderia ser um atributo, mas optei por na Interface colocar os
dois tabuleiros.
Alfredo
Não, para as jogadas, vamos usar apenas a Interface, nada mais.
Alfredo
A estratégia para ser completa, ela deve criar um tabuleiro e
fazer as jogadas de forma correta. Isto faz parte da estratégia.
No método encontra a próximaJogada os Tabuleiros são objetos do
tipo tabuleiro, pois na estratégia usada você pode por exemplo querer
saber os movimentos anteriores (em uma matriz não daria para fazer isso)
O devolveJogadasRealizadas devolve uma matriz 15 por 2. Com valores do tipo
(-1,0) (1,1), etc (para baixo, para cima à direita, etc)
Sim, novos métodos podem ser criados (eu criei na minha solução). Mas, estes
não vão fazer parte da Interface.
Alfredo
eu não entendi o que o método "int devolvePosicao33()" faz.
grata,
Marjorie
Para saber quem começa o jogo é necessário saber o valor da
posições inferiores à direita para calcular a soma (e ver se é par
ou ímpar). Logo, este método devolve o número nesta posição (coordenada
(3,3)).
Alfredo