Programação Trabalho da componente prática do exame de época especial Semestre de Inverno de 2013/2014 O objetivo do trabalho é realizar um programa em Java para jogar ao “Jogo do Galo”, com dois jogadores ou um jogador contra o computador. O programa vai registando o número de vitórias, derrotas e empates de cada jogo. Ao executar o programa com o comando java Galo a janela de comandos ficará com o aspeto da figura 1, ficando o programa à espera que o jogador do símbolo “X” indique a posição do tabuleiro onde quer jogar. As posições do tabuleiro (caso seja de 3 x 3) são identificadas por um número de 1 a 9. Se o utilizador introduzir o número 5 é realizada a jogada e o programa escreve um novo tabuleiro já com a jogada “X” solicitando que o outro jogador indique a posição para a jogada “O”, como mostra a figura 2. Cada vez que é realizada uma jogada, o programa escreve novamente o tabuleiro com as jogadas já realizadas e solicita a jogada do outro jogador até haver vitória de um dos jogadores ou empate. A figura 3 mostra o tabuleiro após a sequência de jogadas 5, 9, 3, 7 e 1, ficando à espera da próxima jogada do jogador “O”. Se for introduzida a posição 8, o jogador “O” vence a partida, recomeçando outra em que o primeiro a jogar é “O”, como mostra a figura 4. Em vez de ser introduzida uma jogada, o jogador corrente pode indicar um dos seguintes comandos, identificados por uma só letra: P – (Pontuação) Apresenta a pontuação das partidas realizadas indicando o número de partidas realizadas e as vitórias do jogador “X” e “O”. N – (Novo jogo) Recomeça uma nova partida considerando derrota do jogador corrente. C:\PG>java Galo | | ---+---+--| | ---+---+--| Figura | 1 X > _ C:\PG>java Galo | | ---+---+--| | ---+---+--| | X > 5 | | ---+---+--| X | ---+---+--| | O > _ Figura 2 X | | X ---+---+--| X | ---+---+--O | | O O > 8 Figura 3 U – (Undo) Desfaz a última jogada, dando hipótese do jogador anterior jogar novamente. F – (Fim) Após uma confirmação do utilizador, termina o jogo e o programa. Apresenta a pontuação das partidas realizadas (como o comando P). H – (Help) Apresenta todos os comandos indicando a letra e a descrição sumária de cada um. Se o programa for iniciado com o comando java Galo auto, o jogador “X” jogará contra o computador, porque o jogador “O” terá jogadas realizadas automaticamente pelo programa, só sendo solicitadas jogadas (ou comandos) ao jogador “X”. Os trabalhos menos ambiciosos poderão realizar jogadas automáticas escolhendo aleatoriamente uma das posições disponíveis. X | | X ---+---+--| X | ---+---+--O | O | O O jogador O venceu. Novo jogo. Jogador O a começar. 4 | Figura | ---+---+--| | ---+---+--| | O > Valorizam-se os trabalhos que aceitem vários níveis de jogadas automáticas e com as melhores estratégias de jogadas automáticas. Por exemplo, o comando java Galo auto 2 pode realizar jogadas automáticas com uma estratégia de nível 2. Na realização do trabalho devem ser respeitadas as seguintes regras: - Não repetir o código do mesmo algoritmo. Em vez disso, definir métodos que serão chamados várias vezes. - Cada método não dever conter mais do que dois ciclos repetitivos e não deve ocupar mais do que 25 a 30 linhas. - O código desenvolvido deve ficar agrupado em várias classes. Além da classe Galo, devem existir outras classes com objetivos bem definidos. Valorizam-se os trabalhos que usem várias classes com objetivos bem definidos. Programação Trabalho da componente prática do exame de época especial Semestre de Inverno de 2013/2014 - Não usar “números mágicos” no código dos métodos. Em vez disso, definir constantes com nomes sugestivos, por exemplo: public static final int SIZE_BOARD=3; . - São valorizados os trabalhos em que a dimensão do tabuleiro possa ser facilmente alterada para 2x2, 4x4, ou qualquer outra, modificando apenas o valor de uma constante, por exemplo, bastando modificar a constante SIZE_BOARD=3 para SIZE_BOARD=4. Ficarão reprovados no exame de época especial os alunos que não entregarem o trabalho (todos os ficheiros fonte em java) por email, para [email protected], até ao final do dia 18 de Março, ou que o trabalho entregue não cumpra os requisitos mínimos do enunciado. A discussão do trabalho será agendada para dia 19 de Março. Os alunos que tiverem aprovação na discussão da componente prática farão a componente teórica no dia 20 de Março. Bom trabalho, Pedro Pereira. ISEL, 4 de Março de 2014