Programação

Propaganda
Programação
Terceiro trabalho prático
Semestre de Verão de 2010/2011
Neste trabalho, os alunos exercitam todos os conceitos adquiridos na unidade curricular.
Cada grupo terá que entregar até 6 de Junho no respectivo site da turma os ficheiros fonte de todas as
classes usadas e um relatório com a descrição das classes devidamente documentadas com as opções
tomadas.
O objectivo 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. No final do jogo, antes do programa
terminar, é actualizado o ficheiro da tabela de recordes, com os nomes e as pontuações
dos 10 jogadores que obtiveram mais vitórias num jogo.
C:\PG>java Galo
|
|
---+---+--|
|
---+---+--|
|
X > _
Figura 1
Ao executar o programa como o comando java Galo a janela de comandos ficará com o
aspecto 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
C:\PG>java Galo
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.
|
|
---+---+--|
|
---+---+--|
|
X > 5
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.
|
|
---+---+--| X |
---+---+--|
|
O > _
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.
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) e caso o número de vitórias
seja superior à pior da tabela dos melhores 10 (ver comando T), pergunta o nome do
jogador vencedor e guarda os resultados deste jogo na tabela.
T – (Tabela Top 10) Apresenta a tabela dos 10 melhores jogos realizados indicando para
cada jogo o nome do jogador que obteve mais vitórias, o número de vitórias, de
empates e de derrotas.
H – (Help) Apresenta todos os comandos indicando a letra e a descrição sumária de cada
um.
X |
| X
---+---+--| X |
---+---+--O | O | O
O jogador O venceu.
Novo jogo.
Jogador O a começar.
|
|
---+---+--|
|
---+---+--|
|
O >
A tabela dos 10 melhores jogos tem que permanecer entre jogos, por isso, tem que ser
armazenada num ficheiro, por exemplo GaloTop10.txt. A informação deste ficheiro é
Figura 4
lida no início do programa e é reescrita no fim do programa caso tenha havido alterações. Para aceder
ao ficheiro de texto use a classe FileAcess fornecida em anexo. O método main da classe FileAcess
é um programa que exemplifica a utilização desta classe para acesso a ficheiros para leitura e escrita.
Programação
Terceiro trabalho prático
Semestre de Verão de 2010/2011
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”. Neste caso, para efeitos de registo na tabela dos
melhores 10, considera-se “Computador” o nome do jogador “0”. 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 das classes FileAcess e Galo,
devem existir outras classes com objectivos bem definidos, por exemplo, a classe TopScores poderá
ter o código e os dados relacionados com a tabela de recordes. Valorizam-se os trabalhos que usem
várias classes com objectivos bem definidos.
- 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 MAX_TOP_SCORES=10; .
- 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.
Bom trabalho.
ISEL, 5 de Maio de 2011
Download