Olá,
bom, mais uma coisa em que me perdi:
não entendi como implementa a interface Estrategia.
public interface Estrategia
{
int [] encontraProximaJogada(Tabuleiro meu, Tabuleiro adversario);
Tabuleiro criaTabuleiro();
}
como assim ?
"Tabuleiro criaTabuleiro();"
grata,
Marjorie
Olá Pessoal,
Como esta é uma dúvida de vários, vou tentar explicar com mais detalhes.
A estratégia do jogo depende de dois fatores, a escolha do Tabuleiro e as
jogadas em si.
Logo, a classe Estratégia possui estas duas fases. Criar o tabuleiro e fazer
as jogadas (já conhecendo o Tabuleiro adversário).
A ideia por trás de se criar um objeto do tipo Tabuleiro e não uma matriz
4x4 é permitir uma maior flexibilidade para consultas (como por exemplo
ver as jogadas anteriores). Mas, para implementar o criaTabuleiro, basta
criar uma matriz e colocá-la em um objeto Tabuleiro.
Alfredo
Como esta é uma dúvida de vários, vou tentar explicar com mais detalhes.
A estratégia do jogo depende de dois fatores, a escolha do Tabuleiro e as
jogadas em si.
Logo, a classe Estratégia possui estas duas fases. Criar o tabuleiro e fazer
as jogadas (já conhecendo o Tabuleiro adversário).
A ideia por trás de se criar um objeto do tipo Tabuleiro e não uma matriz
4x4 é permitir uma maior flexibilidade para consultas (como por exemplo
ver as jogadas anteriores). Mas, para implementar o criaTabuleiro, basta
criar uma matriz e colocá-la em um objeto Tabuleiro.
Alfredo
O que eu não entendi é o seguinte, e acho que é a mesma dúvida da Marjorie.
Ok, vc cria o tabuleiro e faz as jogadas, já conhecendo o tabuleiro adversário. Mas aí, vc cria OUTRO tabuleiro pra consultar as jogadas anteriores (como exemplo), só que nesse OUTRO tabuleiro, que é diferente dos dois tabuleiros dos jogadores?
Ok, vc cria o tabuleiro e faz as jogadas, já conhecendo o tabuleiro adversário. Mas aí, vc cria OUTRO tabuleiro pra consultar as jogadas anteriores (como exemplo), só que nesse OUTRO tabuleiro, que é diferente dos dois tabuleiros dos jogadores?
Olá,
Acho que finalmente entendi a dúvida.
A dinâmica do jogo é a seguinte.
Primeiro se faz uma chamada a criaTabuleiro em um objeto da classe
Estratégia.
Em seguida, chama-se o método que faz a jogada enquanto não houver
vencedor.
Acho que finalmente entendi a dúvida.
A dinâmica do jogo é a seguinte.
Primeiro se faz uma chamada a criaTabuleiro em um objeto da classe
Estratégia.
Em seguida, chama-se o método que faz a jogada enquanto não houver
vencedor.
Após o final, pode se jogar uma nova partida chamando o método
criaTabuleiro novamente.
Alfredo
criaTabuleiro novamente.
Alfredo
Então este criaTabuleiro final serve para começar um novo jogo depois que houver um vencedor?
Se for isso, não entendi por que o criaTabuleiro está dentro da Estratégia...![tongueout tongueout](https://paca.ime.usp.br/theme/image.php/boost/core/1672261234/s/tongueout)
Porque, se fosse para começar um novo jogo, não faria mais sentido a pessoa iniciar o programa novamente, mesmo que fosse cansativo ter que fazer isso toda vez pra começar outro jogo?
Ou até mesmo perguntar "Deseja iniciar um novo jogo?"...
Se for isso, não entendi por que o criaTabuleiro está dentro da Estratégia...
Porque, se fosse para começar um novo jogo, não faria mais sentido a pessoa iniciar o programa novamente, mesmo que fosse cansativo ter que fazer isso toda vez pra começar outro jogo?
Ou até mesmo perguntar "Deseja iniciar um novo jogo?"...
Olá Gabriel,
Um programa com uma jogada mais sofisticada, pode tentar aprender com
os movimentos do outro. Neste caso é necessário que se mantenha o mesmo
"objeto funcionando".
Alfredo
ps: As notas da p2 estão no paca
Um programa com uma jogada mais sofisticada, pode tentar aprender com
os movimentos do outro. Neste caso é necessário que se mantenha o mesmo
"objeto funcionando".
Alfredo
ps: As notas da p2 estão no paca
Professor, tenho uma dúvida sobre interface.
Quando eu crio uma classe que implementa os métodos de uma interface X, essa classe será um objeto do tipo X?
Ou o objeto que você fala são os objetos que estamos acostumados? (os que executam métodos de classes)
Por exemplo, no EP, nós devemos fazer a interface Tabuleiro, e devemos criar dois objetos desse tipo para usar em Estratégia: Tabuleiro meu e Tabuleiro adversário.
Esses tabuleiros devem ser as classes (que implementam os métodos da interface Tabuleiro)?
Quando eu crio uma classe que implementa os métodos de uma interface X, essa classe será um objeto do tipo X?
Ou o objeto que você fala são os objetos que estamos acostumados? (os que executam métodos de classes)
Por exemplo, no EP, nós devemos fazer a interface Tabuleiro, e devemos criar dois objetos desse tipo para usar em Estratégia: Tabuleiro meu e Tabuleiro adversário.
Esses tabuleiros devem ser as classes (que implementam os métodos da interface Tabuleiro)?
Rods, assim:
vc tem já tem a interface Tabuleiro com os métodos que ela faz.
Quando vc diz "Tabuleiro meu", é como se vc tivesse fazendo:
"Tabuleiro meu = new Tabuleiro()"
o mesmo para Tabuleiro adversário.![smile smile](https://paca.ime.usp.br/theme/image.php/boost/core/1672261234/s/smiley)
vc tem já tem a interface Tabuleiro com os métodos que ela faz.
Quando vc diz "Tabuleiro meu", é como se vc tivesse fazendo:
"Tabuleiro meu = new Tabuleiro()"
o mesmo para Tabuleiro adversário.
Rods, falei fezes... oq eu falei, na verdade é assim:
Tabuleiro meu = new (nome da classe q tem os métodos da interface Tabuleiro)
Tabuleiro meu = new (nome da classe q tem os métodos da interface Tabuleiro)
por exemplo, no meu fica assim:
Tabuleiro meu = new Tab()
Tabuleiro meu = new Tab()
Esse Tabuleiro criaTabuleiro (); é um método que ao ser chamado cria um tabuleiro?
sim ![sorriso sorriso](https://paca.ime.usp.br/pix/s/smiley.gif)
Alfredo
![sorriso sorriso](https://paca.ime.usp.br/pix/s/smiley.gif)
Alfredo