14.7. Outra subclasse de Jogo

Vamos agora implementar uma outra subclasse de Jogo – uma classe que representa jogos que terminam quando tiver sido feito um dado número exato de jogadas – e em que vence quem alcançou a melhor pontuação ao fim dessas jogadas.

Não controlamos se os jogadores fizeram igual número de jogadas, nem se joga um de cada vez. A ideia é que este tipo de jogo seja suficientemente geral para representar não só jogos em que os jogadores jogam por rondas (um de cada vez em cada ronda) como também jogos em que as jogadas são registadas à medida que os jogadores as fazem, independentemente da ordem, ou de algum(ns) fazer(em) mais jogadas que outro(s). As classes cliente desta deverão escolher o número de jogadas de acordo com o pretendido (por exemplo, num jogo por rondas, o número de jogadas para terminar deve ser um valor múltiplo do número de jogadores que vão jogar).

Chamemos JogoNumeroExatoJogadas a esta nova subclasse.

Então, um objeto do tipo JogoNumeroExatoJogadas tem cinco atributos de instância:

A imagem seguinte representa o estado pretendido de um objeto do tipo JogoNumeroExatoJogadas acabado de criar (com valor inicial para o número de jogadas a fazer de 4).

 

Além do valor do número de jogadas a fazer para terminar o jogo, que é dado como parâmetro do construtor, é necessário ir contabilizando cada jogada que é feita. Logo que o número de jogadas feitas iguala o número de jogadas por fazer, podemos considerar que o jogo está terminado.

Para fazer isto:

 


 

Anterior: 14.6. Redefinição de métodos

Seguinte: 14.8. Ainda a redefinição de métodos