Duvidas EP3

Duvidas EP3

by Renan Sugiyama -
Number of replies: 22

Professor, no método boolean jogada (int [][]j) as coordenadas (-1,0,1) são os valores possíveis das coordenadas de j[][], certo?

mas uma matriz pode ter, por exemplo, a linha -1 e coluna 0, ou seja,             j[-1][0]???

In reply to Renan Sugiyama

Re: Duvidas EP3

by Renan Sugiyama -

outra dúvida:

no método void imprimeTabuleiro() pede pra imprimir o tabuleiro e mostrar as jogadas já realizadas. Eu devo mostrar no tabuleiro as jogadas que já foram ou mostrar todas as matrizes j[][] com as coordenadas... 

In reply to Renan Sugiyama

Re: Duvidas EP3

by Renan Sugiyama -

no método recebeTabuleiro (int [][]t) esse t[][] é o nosso tabuleiro, certo?

Mas esse tabuleiro t[][] deve ser preenchido através de leitura de teclado ou pode ser no interactions??

In reply to Renan Sugiyama

Re: Duvidas EP3

by Alfredo Goldman -
Olá,
Para permitir que o jogo seja realizado entre um humano e o
computador é necessário entrar com o tabuleiro. Uma maneira
inicial é através do painel de interações. Mas, é conveniente para
um usuário leigo permitir a entrada pelo teclado.

Alfredo
In reply to Renan Sugiyama

Re: Duvidas EP3

by Thiago Luiz Chaves de Melo -
acho que no método imprimeTabuleiro() é pra vc imprimir o seu tabuleiro e (acho que é opcional), imprimir o do adversário.
Vc pode ir armazenando em uma outra matriz (de boolean por exemplo) as posições que ja foram ocupadas, dai na hora de imprimir vc compara e destaca de alguma maneira as posições já ocupadas alguma vez.
In reply to Renan Sugiyama

Re: Duvidas EP3

by Alfredo Goldman -
Olá,
Quem conseguir pensar em uma forma de imprimir o tabuleiro, já com
todas as jogadas perfeito, mas isso exige algum conhecimento, ou ideias mais
elaboradas. Logo, existe a opção de imprimir o tabuleiro e em seguida as jogadas.

Alfredo
In reply to Renan Sugiyama

Re: Duvidas EP3

by Alfredo Goldman -
Olá,
Primeiro engano encontrado !!
Na verdade jogada pode devolver apenas um vetor de inteiros com
duas posições. Logo a saída não é uma matriz, e sim um vetor v, com
posições v[0] e v[1]. Sendo que os valores válidos para cada posição são
-1, 0, 1. Por exemplo, (-1, 0) significa a posição acima do tabuleiro. (1, 1)
a posição abaixo e à direita. A jogada (0,0) não é válida.

Alfredo
In reply to Alfredo Goldman

Re: Duvidas EP3

by Renan Sugiyama -

acho que ta errado. O método jogada é um boolean:

boolean jogada(int [][]j)

ou seja, nao devolve um vetor!

e nao recebe duas coordenadas...recebe uma matriz...

o q q eu faço??!!!

In reply to Alfredo Goldman

Re: Duvidas EP3

by Marjorie Takai -
Olá,
Alfredo eu realmente não entendi esse exemplo.
Como assim (-1,0,1)? Posição acima do tabuleiro?
Poderia explicar novamente com outra abordagem ?

grata,

Marjorie
In reply to Marjorie Takai

Re: Duvidas EP3

by Alfredo Goldman -
Olá,
Usando duas coordenadas, temos por exemplo (-1, 0) posição
acima. (1, 1) posição abaixo à direita. Ficou mais claro ?

Alfredo
In reply to Alfredo Goldman

Re: Duvidas EP3

by João Braga de Góes e Vasconcellos -

Na função matemática

Math.round ((float)Math.random()*15.0)

como eu aplico uma exceção, ou seja, um valor int entre 0 e 15 que não pode ser retornado? É possível fazer isso trabalhando diretamente sobre a função ou eu tenho que trabalhar sobre o método?

In reply to João Braga de Góes e Vasconcellos

Re: Duvidas EP3

by Alfredo Goldman -
Olá,
Não dá para criar exceções no random(), a forma de se fazer isto é
usar um vetor auxiliar. No qual você guarda os números ainda não sorteados
por exemplo. Inicialmente, o vetor tem 15 posições válidas. A cada sorteio
o número de posições diminui de um.
Solução 1:
vetor com 1's
[1,1,1,1,...1,1]
sorteio do 2
[1,0,1,1,...,1,1]
sorteio do 15
[1,0,1,1,...,1,0]
sorteio de 2 - ops já apareceu
sorteio do 1
[0,0,1,1,....,1,0]

Solução 2:
vetor com valores de 1 a 15 e a última posição
[1,2,3,4,....,14,15] ultimo = 14
sorteia entre 0 e 14: 1 (quem está na posição 1 é o 2)
[1,15,3,4,...,14,0] ultimo = 13
sorteia entre 0 e 13: 2 (pega o 3)
[1,15,14,4,...,0,0] ultimo = 12
a vantagem desta segunda solução é não repetir sorteios.

Alfredo
In reply to Alfredo Goldman

Re: Duvidas EP3

by Gabriel Nascimento -
Alfredo,
o método "jogada" então recebe um vetor ou uma matriz ?

outra coisa, acho que mais uma correção tongueout
você disse em um exemplo que (-1,0) é a posição acima do tabuleiro. Não seria o contrário, (0, -1), já que a primeira posição é a horizontal e a segunda a vertical, e (-1, 0) seria a posição à esquerda? smile
In reply to Gabriel Nascimento

Re: Duvidas EP3

by Alfredo Goldman -
Olá Gabriel,
O método jogada recebe um vetor de duas posições. Não é uma matriz não.
Não é correção não, estou usando o seguinte sistema de coordenadas:
(linha, coluna).
Isto é, (-1, 0) é a linha acima. (0, -1) é a linha à esquerda. Uso as seguintes coordenadas:
(-1,-1) (-1,0) (-1,1)
( 0,-1) ( 0, 0) (0, 1)
( 1, -1)( 1, 0) ( 1, 1)
Onde o (0,0) acima corresponde a posição atual.

Alfredo
In reply to Renan Sugiyama

Re: Duvidas EP3

by Renan Sugiyama -
Prof. é preciso ter um método main?
In reply to Renan Sugiyama

Re: Duvidas EP3

by Gabriel Nascimento -
Precisa sim, promissão... até pq, como a gente vai competir com a outra classe tb, eles programam em c, e eles não têm o interactions (imagino eu) tongueout
In reply to Gabriel Nascimento

Re: Duvidas EP3

by Alfredo Goldman -
Olá Rapazes,
Para a competição é bom ter o método main, mas para a entrega
do EP não vamos precisar não. Basta fazer as classes seguindo as
Interfaces. Teremos um ambiente para fazer os testes.

Alfredo
In reply to Alfredo Goldman

Re: Duvidas EP3

by João Braga de Góes e Vasconcellos -

Pessoal,

Um problema que tenho encontrado é o seguinte: quando uma pessoa for jogar contra meu ep, ela vai utilizar lápis e papel ou o plróprio ep para desenhar seu tabuleiro e fazer suas jogadas? Em qualquer um dos casoso, eu posso criar um método no qual eu entre com uma ordem do tipo "sua vez", que dirá ao ep que ele deve fazer sua jogara?

João