Nova interface para o EP3

Nova interface para o EP3

por Alfredo Goldman -
Número de respostas: 19
Olá Pessoal,
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();
}
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Fabrízio Fogaça Bernardi -

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

Em resposta à Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá Fabrízio,
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
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Fabrízio Fogaça Bernardi -

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

Em resposta à Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá 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
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Fabrízio Fogaça Bernardi -

continuação...

me esqueci de umas perguntas.

E os antigos métodos: "gera tabuleiro", "recebe tabuleiro", e "esta valido" ?

Agora terminou.

Obrigado

fab

Em resposta à Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá,
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
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Fabrízio Fogaça Bernardi -

Então esses métodos continuam existindo? É q eles não estão na nova interface.

Fabrízio

Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Renan Sugiyama -

Prof. quando o senhor disse o método geraTabuleiro gera um novo tabuleiro limpo, um tabuleiro limpo é um tabuleiro todo zerado??

Em resposta à Renan Sugiyama

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá Renan,
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
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Renan Sugiyama -

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

Em resposta à Renan Sugiyama

Re: Nova interface para o EP3

por João Braga de Góes e Vasconcellos -
Alfredo,
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
Em resposta à João Braga de Góes e Vasconcellos

Re: Nova interface para o EP3

por Thiago Luiz Chaves de Melo -
Professor, eu não entendi direito, neste método [int [] encontraProximaJogada(Tabuleiro meu, Tabuleiro adversario);]
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
Em resposta à Thiago Luiz Chaves de Melo

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá,
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
Em resposta à Renan Sugiyama

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá Renan,
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
Em resposta à Alfredo Goldman

Re: Nova interface para o EP3

por Marjorie Takai -
Olá,
eu não entendi o que o método "int devolvePosicao33()" faz.

grata,

Marjorie
Em resposta à Marjorie Takai

Re: Nova interface para o EP3

por Alfredo Goldman -
Olá,
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