Nova interface para o EP3

Nova interface para o EP3

by Alfredo Goldman -
Number of replies: 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();
}
In reply to Alfredo Goldman

Re: Nova interface para o EP3

by 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

In reply to Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

by 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
In reply to Alfredo Goldman

Re: Nova interface para o EP3

by 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

In reply to Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

by 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
In reply to Alfredo Goldman

Re: Nova interface para o EP3

by 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

In reply to Fabrízio Fogaça Bernardi

Re: Nova interface para o EP3

by 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
In reply to Alfredo Goldman

Re: Nova interface para o EP3

by Fabrízio Fogaça Bernardi -

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

Fabrízio

In reply to Alfredo Goldman

Re: Nova interface para o EP3

by Renan Sugiyama -

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

In reply to Renan Sugiyama

Re: Nova interface para o EP3

by 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
In reply to Alfredo Goldman

Re: Nova interface para o EP3

by 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

In reply to Renan Sugiyama

Re: Nova interface para o EP3

by 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
In reply to João Braga de Góes e Vasconcellos

Re: Nova interface para o EP3

by 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
In reply to Thiago Luiz Chaves de Melo

Re: Nova interface para o EP3

by 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
In reply to João Braga de Góes e Vasconcellos

Re: Nova interface para o EP3

by Alfredo Goldman -
Olá João,
Não, para as jogadas, vamos usar apenas a Interface, nada mais.

Alfredo
In reply to Renan Sugiyama

Re: Nova interface para o EP3

by 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
In reply to Alfredo Goldman

Re: Nova interface para o EP3

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

grata,

Marjorie
In reply to Marjorie Takai

Re: Nova interface para o EP3

by 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