EP5 - Sobre o campeonato

EP5 - Sobre o campeonato

por Fernando Aluani -
Número de respostas: 10
O PDF sobre a competição dos EP5s que o monitor colocou aqui no PACA diz que se um dos programas fazer uma jogada inválida (pela função novaJogada()) o outro jogador vence o jogo.

Mas somos nós no recebeJogada(jogada jog) que devemos ver se a jogada do adversário é válida, ou essa checagem será feita pelo monitor de algum jeito e portanto nós podemos supor que a jogada passada para nós pelo recebeJogada(jogada jog) é sempre válida?

E no caso que nós tenhamos que checar se a jogada do adversário é válida, e também no caso de vencer normalmente, o que fazemos quando acabar o jogo?
Algum print, alguma função será chamada, o que?

EDIT:
Umas outras perguntas:

E caso nosso programa escolha usar a Pie Rule para trocar de time, nós que temos que atualizar nosso tabuleiro e time para continuar correto certo? E o mesmo vale para quando o adversario executa Pie Rule certo?

E quando o jogo é inicializado (a função inicializaJogo(int time)), como o time branco sempre começa, caso nós sejamos o time branco, já temos que executar novaJogada() ou ela será chamada depois apropriadamente por o que quer que esteja rodando nosso código?
Acho que será o segundo caso né porque senão como retornaremos o resultado do novaJogada() pelo inicializaJogo(int time)?
Em resposta à Fernando Aluani

Re: EP5 - Sobre o campeonato

por Carlos E. Ferreira -
Sim, você deve verificar se a jogada é válida. E, se seu programa declarar erradamente que a jogada é inválida, você perde, é claro!

Você deve manter seu tabuleiro, da forma que quiser. Note que o tabuleiro não é
parâmetro das funções...

Entendi que o monitor vai fazer um main() em que chama as funções... Seu programa deve ter seu main também, para seus testes, mas não precisa se preocupar com ele para o campeonato.

abraços,

--
carlinhos
Em resposta à Carlos E. Ferreira

Re: EP5 - Sobre o campeonato

por Felipe Lamberti Amado -
Outra dúvida:

O tabuleiro padrão será o inclinado para direita ou para esquerda?

Para esquerda: http://commons.wikimedia.org/w/thumb.php?f=Hex%20board%2011x11.svg&width=500px

Para direita:
Em resposta à Felipe Lamberti Amado

Re: EP5 - Sobre o campeonato

por Fernando Aluani -

Ok. Mas como que "declaramos" que a jogada recebida foi inválida? Simplesmente ignoramos ela, damos algum print, retornamos algum valor... o que?

Pois caso recebemos uma jogada inválida ou completamos o objetivo do Hex, o jogo termina, então ai temos que dar algum print ou retornar algum valor ou o "programa campeonato" do monitor vai "detectar" essas ocorrencias e terminar o jogo sozinho?

Isso que fiquei em duvida porque o enunciado e o PDF sobre o campeonato não especificam o que fazer ou o que acontece quando o jogo termina.

E Felipe, acho que isso não faz diferença já que você pode colocar uma peça em qualquer lugar vazio, e porque o tabuleiro pode ser representado como uma matriz (que nem o enunciado diz).

Em resposta à Fernando Aluani

Re: EP5 - Sobre o campeonato

por Fernando Aluani -

Opa agora fui ver, faz diferença sim :P

Seria errado então assumir que o certo seria o inclinado para a esquerda, como aquela imagem da wikimedia, que também é a que foi colocada no enunciado?

Claro, só aumentando ele pra ser 14x14...

Em resposta à Felipe Lamberti Amado

Re: EP5 - Sobre o campeonato

por Felipe Lamberti Amado -
O tabuleiro será o inclinado para ESQUERDA. Falei com o João hoje. (Estranho que ele disse que já tinha respondido aqui, mas onde está a resposta dele? oO )
Em resposta à Felipe Lamberti Amado

Re: EP5 - Sobre o campeonato

por Joao M. Miranda -
Xi alguma coisa estranha aconteceu. Eu tinha mandado uma mensagem no paca explicando tudo o que tinham perguntado já faz alguns dias. Não sei o que pode ter acontecido com a mensagem. Bom, escrevo de novo.

1) Sobre o tabuleiro
Ele é inclinado para esquerda mesmo. Posição mais a esquerda é o (0,0) e a mais a direita a (13, 13).

2) Sobre as jogadas
O fluxo de uma rodada é a seguinte:
a) através da funcao novaJogada(), um jogador fornece a jogada;
b) em seguida o programa gerenciador (que nós estamos fazendo) verifica se a jogada é de fato válida;
c) caso não for o jogador perdeu;
d) caso for válida, o adversário recebe essa jogada.
Acho que isso responde as perguntas.

3) Sobre o estado do jogo
A única interface entre o programa gerenciador e o seu programa são aquelas três funções dadas. Por isso, seu programa deve saber o estado do jogo por si só, já que sabe as jogadas que você fez e recebeu as jogadas do adversário.

4) Main
Novamente lembro a todos que o main de vocês só deve servir para vocês testarem o ep de vocês. Ele não será usado na competição e, portanto, não deve ter grandes funcionalidades. Eu recomendo que todos façam um main para que vocês possam jogar contra seus programas.

Em resposta à Joao M. Miranda

Re: EP5 - Sobre o campeonato

por Felippe Alves Pereira -
ainda não entendi muito bem o funcionamento do esquema todo. quando uma partida entre dois jogadores começa, o programa gerenciador chama apenas nossas funções? isto significa que temos que armazenar as jogadas num arquivo de texto para sustentar o jogo? ou, supondo que eu crie uma matriz na execução do programa, ela será mantida até o fim da partida?

além disso, quanto tempo cada jogador terá para jogar?
Em resposta à Felippe Alves Pereira

Re: EP5 - Sobre o campeonato

por Joao M. Miranda -
Felippe e todos que estão com a mesma dúvida,

Façam o programa como se você estivesse fazendo um ep que não tivesse a competição. A única coisa que precisam fazer é seguir essas especificações.

1) Seu código deve usar a struct Jogada dada anteriormente
2) Seu código deve ter aquelas três funções dadas
3) Seu main deve ser simples:

3a) Usar a funcão inicializaJogo() para criar um novo jogo;
3b) Espera uma jogada do jogador humano vinda da entrada padrão (o usuário entra com uma jogada como 2 4);
3c) Informa jogador computador usando recebeJogada();
3d) Computador joga usando novaJogada();
3e) Volta para a 3b

Agora ficou mais claro o que vocês tem que fazer?
Eu acho que todos que tem dúvida quanto a isso poderiam aparecer na monitoria para conversar e entender melhor.