Olá,
A respeito do método devolveFaseAtual(), não sei o que testar para determinar a fase me que o jogo se encontra.
No metodo efetuaJogada, o que são as variaveis ci1, ci2, cf1, e cf2. E como vou distinguir de qual dos jogadores é a jogada.
A idéia é que a sua classe represente o comportamento do tabuleiro,
logo a classe deve ter atributos que controlam a fase atual, assim como
controlar de quem é a vez. Algo como:
int fase;
int qualJogador; // 1 se for o primeiro e 2 se for o segundo
Para o efetuaJogada, temos as coordenadas iniciais (ci1 e ci2) e finais
(cf1 e cf2), mas, note que as coordenadas finais só funcionam após a primeira
fase, antes disso estes parâmetros serão apenas ignorados.
Mais dúvidas ?
Alfredo
Pelo que entendi do metodo devolveFaseAtual ele deve devolver zero se o jogo estiver na 1ª fase que é a colocação de peças, deve devolver 1 se o jogo estiver na 2ª fase, deve devolver 2 se o jogo estiver na 3ª fase e devolver -1 se o jogo tiver terminado, mas vamos dizer que eu quero então identificar se o jogo está na 1ª fase, qual condição eu devo testar para determinar se está na primeira ou na segunda fase.
Pensei em testar o numero de peças colocadas, mas não deu certo.
No efetua jogada, não entendi como vou fazer para diferenciar quando é a jogado do jogador 1 e quando é a jogada do jogador 2. Na matriz vou diferenciar por 1 e 2 e vou deixar 0 se a casa estiver vazia, agora na hora de fazer a jogada não sei como diferenciar.
Estamos chegando a algo interessante
Primeiro, vamos precisar de atributos para controlar a fase e a vez.
Para a fase é fácil, começa-se na fase 0, após serem colocadas 18 peças,
passa se a fase 1. Colocar 18 peças correspondem a 18 chamadas do efetuaJogada
(a não ser que ocorram trilhas, mas podemos pensar nisto depois
Com relação a quem joga, basta alternar, um jogador e o outro.
Mais dúvidas ?
Alfredo
saudações Exmo professor
-Não seria mais interessante se no método devolveFaseAtual, nós colocassemos uma String que imprimisse 1ª,2ª ou 3ª fase junto com uma mensagem de texto qualquer?
-Se as situações de jogada inválida, inicio de nova fase ou formação de trilha fossem mostradas automaticamente pelo método, não seria menos desgastante aos jogadores? Ou isso não vem ao caso no objetivo do exercício?
- O que significa o "[][]" do método int [][]devolveMatriz? Como eu faço para devolver uma matriz inteira no return de modo que ela fique organizada como utilizando o System.out.print e System.out.println?
A idéia é que a classe que faz o jogo de trilha não imprima nada, mas nada
impede que ao receber a fase atual você imprima uma mensagem. A razão disto
é separar a lógica da interface com o usuário. Nada impede, mais para frente
que vocês elaborem uma interface gráfica, ou web para jogar trilha
O int [][] representa um array bidimensional, ou matriz. Ela é automaticamente
organizada, para imprimila são necessários dois laços.
Alfredo
Olá!
Estou com a mesma dúvida do Cleo. Quando chega no return matriz aparece um número muito esquisito na tela, para devolver a matriz não pode simplismente imprimi-la com void devolveMatriz(); ????
O número esquisito corresponde ao endereço da matriz, pois o DrJava não
sabe "mostrar" uma matriz. Uma solução simples é criar um método
imprimeMatriz(int [][] a), e usar o devolveMatriz() assim (iterações do DrJava):
int [][]m = obj.devolveMatriz();
obj.imprimeMatriz(m);
Alfredo
E aeh professor, gostou do jogo???
É dura essa vida de aluno, ter que fazer EP dapois do jogo.
Estou usando uma matriz de String, como implementar o método
int [][] devolveMatriz() ???
Valew
Continuo sem intender professor.
Os métodos que o Sr. sugeriu são void???
Se eu fizer daquela maneira vai imprimir uma matriz???
Ao invés de criarmos o método boolean efetuaJogoda(.........)
não poderíamos criar outros métodos como boolean inserirPeça, boolean movimentarPeça, boolean retirarPeça ....???
Muito boa a sua pergunta. Se eu tivesse optado por pedir os métodos
inserirPeça, movimentarPeça e retirarPeça, parte da lógica da programação
ficaria na classe que usa o Tabuleiro. Deixando um único método, não
existe a necessidade de se preoucupar com qual fase se está jogando.
Mas, é importante ressaltar, que nada impede que você crie internamente
estes três métodos que você sugeriu, isto inclusive é uma ótima idéia.
Alfredo
E aeh prof...
Qual o comando que limpa a tela do dos em java???
obrigado!
Que eu saiba não tem nenhum não, a solução é criar um método limpa tela, que
pula várias linhas.
Alfredo
Jair quando vai sair as notas do EP 2, porque nós já vamos entregar o terceiro e nada da nota do segundo... :-\
Olá Prof.
Fiz o método imprimeTabuleiro com a criação de de um objeto logo no inicio, pra eu poder utilizar um outro método que verifica o que há na matriz, o problema é que sempre que eu chamo j.imprimeTabuleiro ele me retorna uma interface como se não tivesse nada na matriz ( nenhuma peça em jogo); sendo que eu já havia inserido "peças" antes!!!
Daí logo após a criação do objeto eu inseri uma peça pra testar, e então deu certo.
Sera que no ato da criação do objeto ela zera a matriz ?????
Como eu faço então???
professor, facilita na P2 aí pq se não vai ter um monte de sub pra corrigir, inclusive a minha! hahahha
adiou pra sexta dia 30?
Da forma que você fez, você cria uma variável, que é inicializada
a cada vez que o método é chamado. A maneira de resolver isto é
criar o objeto (no caso uma matriz) como atributo (isto é, fora dos
métodos). Desta forma, o estado desta matriz é mantido.
Alfredo
PELO AMOR DE DEUS, CADE A NOTA DO EP2??????
Olá.
Aproveitando a pergunta anterior, gostaria de saber como funciona o método int [][] devolveMatriz (). Teremos que retornar o tabuleiro a cada jogada, através desse método? Se for essa a intenção, não bastaria utilizar o método void imprimeTabuleiro ()?
Desde já agradeço pela atenção.
Bruno Albuquerque
O método int [][] devolveMatriz() foi pedido para facilitar a correção dos
EPs. Para fazer a simulação do jogo, ele não é usado, pois existe o método
void imprimeTabuleiro() que serve para a interação com o usuário.
Alfredo
Não acho uma boa idéia não usar as coordenadas do enunciado, pois você
não ganha nada com isto. Logo, padronize.
Alfredo
A solução de criar atributos para ajudar a saber a condição do jogo foi
uma ótima idéia, isto só facilita o seu trabalho. Por outro lado, isto
não deve intereferir em nada na implementação do int [][] devolveMatriz(),
pois este método apenas devolve o estato atual do tabuleiro no formato de
uma matriz pré-definida, mais nada.
Reforçando, o devolveMatriz deve ser usado apenas para a correção do EP.
Alfredo
olá.
Professor, Vsa. disse que iria adiar o EP3 e que iria ver uma outra data. Poderia dizer se vai realmente ser adiado e para quando?
Muito obrigado.
Cleo
É verdade prof, tenho provas na semana que vem e se vc pudesse adiar mais um pouco o EP, eu tbm ficaria muito grata!!
Obrigada.
Luciana
Infelizmente não dá para adiar a entrega não, pois tenho que entregar
as notas na semana que vem, e o Jair precisa de algum tempo para
fazer a correção.
Alfredo
teve PCC, pró aluno fechada, jogos da copa, provas e trabalhos...
Acho que desta vez não vai dar para adiar a entrega não....
Alfredo
Oi Prof. num sei se você notou mas a P2 já foi e não tem nada sobre ela na página nem nas tarefas acho que vou poderia dar 10 para todo mundo , mas se você não quizer fazer isso você poderia postar as notas no PACA ate amanhã né...
Brigada
Olá,
Quando o jogo estiver na fase 2, para saber se a jogada é válida, temos que testar se a casa onde o jogador deseja por a peça é vizinha da casa onde a peça está, não entendi como fazer isso. Por exemplo, vamos supor que a peça que desejamos mover está na casa (0,0), temos que testar de (cf1,cf2), é (0,7) ou (0,1) ou (1,0), não estou conseguindo fazer esse tipo de teste, estou com um problema semelhante para o método formouTrilha.
Obrigado pela atenção
Elienos
A idéia é saber que uma casa (i,j) é adjacente as casas ((i+7)%8, j) e ((i+1)%8,j).
Além disto, se j for par (j%2 == 0) , se i > 0 é adjacente a casa (i - 1, j) e
se i < 2 é adjacente a casa (i + 1, j). Ajudou ?
Alfredo
Não, não é necessário lidar com Exceções, não vimos isto em aula.
O EP deve ser entregue, de preferência em dois arquivos separados,
uma para o Trilha e outro para o Principal.
Alfredo
A respeito do método devolveMatriz é apenas para ele devolver a matriz tabuleiro quando for chamado, gostaria de saber se é só isso, poi eu fiz apenas return tabuleiro;
Olá
Eu poderia criar um método verifica término de jogo, que devolve true se o jogo terminou e false se ainda não terminou.
Olá
Não estou sabendo criar a class Principal, pois quando eu a executo ela apenas imprime o tabuleiro vazio, como faço para me perguntar quais são as coordenadas
Respondendo a dúvida do Elienos, na classe Principal devemos colocar
comando de entrada de dados, de tal forma que o usuário consiga
jogar. Para isto deve ser usada a classe Scanner e o método nextInt().
Alfredo
Qualquer método auxiliar que ajude a implementação do jogo é bem
vindo. Por exemplo, sugeri a várias pessoas o método saoAdjacentes que
recebe duas coordenadas (4 inteiros) e responde verdadeiro se as
mesmas correspondem a posições adjacentes, e falso caso contrário.
Alfredo
Alguem pelo amor de Deus!!! responda a minha dúvida...
Como eu faço pra testar a classe Principal???
Por favor...é urgente...
Agradeço desde já...
java Principal e dá enter
Eu não consigo fazer um método que verifique a mobilidade de um jogador... Portanto, não tem como eu terminar o jogo qdo um jogador fica trancado...
Alguém pode me dizer como fazer esse método???
Obrigado!
Desculpe a demora para responder... A forma de saber isto é verificar,
para cada peça do jogador, se existe uma posição livre adjacente. Se existir
alguma não há bloqueio.
Alfredo
Professor...
o Jair disse que nossa pasta do e.p esta vazia... masssss não estava!!!!!
não sabemos o que aconteceu...ja envie um e mail pro jair como o e.p ...para ele ver que tinhamos feito sim...e agora professor!!!!
como vai ficar ????????
helpppppppppppppppppppppppppp!!!!!!!!!!!!!!!!!!!!!!!!!
obrigada... e responde o mais rapidão que o senhorconseguir!!!!!
Eu mesmo olhei a pasta e ela estava vazia. Ainda vamos analizar a sua situação.
Devo cadastrar as notas no Júpiter na segunda, logo tirem, eventuais dúvidas
sobre as notas/médias o quanto antes.
Alfredo
ola de novo professor....
o Jair não responde meus e mails, e estamos preocupadas pois fizemos o e.p, entragamos dentro do prazo e não sabemos o que acontece....porque no meu computador a pasta zipada nao esta vazia, porem nao consigo abrir mais ela...
espero que o senhor nos deixe a par do que esta acontecendo....e que o Jair RESPONDA meu e mail.....
mas por favor considere nosso esforço que foi muiiiiiiiiito grande!!!!
obrigada....mais uma vez!!!!
Professor!!!!
o Jair respondeu o meu e mail e disse que ira corrigir nosso e.p na segunda...
espero que o senhor considere...e lembre que fizemos e entregamos no prazo e nao contavamos com esse incidente...
obrigada!!!!!!!!!!!!!!!!!
Gabrielle...e Débora...
Olá, professor, como vai?
Eu já havia falado com você e já mandei vários emails para o Jair sobre a minha situação. Meu nome é José Eduardo Biasoto, número USP, 1002074 e fiz os 3 EPs com o Ivan Lierte Martins, número USP 886642. Como eu tive dificuldade de me cadastrar no PACA, nós mandamos os EPs apenas pela conta do Ivan (até outro dia, eu nem estava no sistema). Apesar da minha insistência (mandei diversos emails para o Jair), minhas notas dos EPs 1 e 2 ainda não estão no sistema. Basta verificar nos cabeçalhos dos EPs do Ivan, que eu também os fiz.
Um abraço e obrigado,
José Eduardo.