Galera meu prof passou um trabalho de jogo Pedra papel e tesoura… to fazendo aqui mais to com mtas duvidas vou postar o trabalho e oq eu fiz dele! Por favor me deem dicas e me corrijam nas classes e metodos se eu estiver errado! Obrigado desde já
plementar uma classe Elemento e as classes filhas Papel, Pedra e Tesoura; todas no pacote exercicio.poo.regras. A classe Elemento deve ser declarada como abstrata [public abstract class Elemento()] - leia o artigo sobre classes abstratas, disponível no Moodle.
Criar um método abstrato combate, que retorne um int, e receba um Elemento como parâmetro. Este método será implementado pelas classes filha, onde testarão se o próprio elemento em combate com o passado por parâmetro, gera sua vitória ou derrota. Por ex: uma classe pedra recebe o elemento e testa, se ele for papel, pedra perde e retorna -1, se tesoura, pedra ganha e retorna 1, se pedra ocorre um empate, retornando 0.
Ainda na classe Elemento, implemente um método concreto (não abstrato) getNome, que retorne o nome da classe. Para pegar o nome da classe, utilize o seguinte comando: this.getClass().getSimpleName(). Implemente o método concreto get para o atributo de valor de escolha (descrição de escolha abaixo). Note que o atributo deve ser declarado como protected, para poder ser acessado diretamente pela classe filha.
Nas classes filhas (Pedra, Papel e Tesoura), implemente a sobrecarga do método abstrato, como descrito acima. Crie também um construtor para cada uma delas, e atribua ao atributo de valor de escolha, o valor correspondente.
Implementar uma classe PPT com o método main, que iniciará a interface do jogo chamando a classe Gui.
A classe PPT deve estar no raiz da aplicação, e Gui no pacote exercicio.poo.gui.
A cada rodada, deve mostrar as informações: número da rodada, pontuação do jogador e do computador, e as opções de escolha para o jogador (1) - Papel, (2) - Pedra, (3) - Tesoura, (9) - Sair.
Para controlar cada rodada, implemente uma classe Rodada no pacote de regras. Para controlar as rodadas, implemente uma classe Jogo no mesmo pacote.
Na classe Rodada, crie um construtor que receba um parâmetro a ser atribuído como número da rodada, crie um método get para retornar o número da rodada. Crie atributos do tipo Elemento para o jogador e o computador, cada um destes atributos será utilizado como escolha da rodada. Crie os métodos set e get para eles. Para o método set de escolha do computador, não permita que um parâmetro seja passado, ao invés, gere aleatoriamente (com Math.Random [pesquisar] - (int)(Math.random() * 3) + 1) a escolha.
Na classe rodada, implemente um método que retorne a pontuação obtida pelo vencedor e outro para o computador. A pontuação é baseada no retorno do combate de suas escolhas.
Na classe Jogo, crie um atributo para controlar qual a próxima rodada, crie atributos para conter a pontuação do computador e do jogador. Crie os métodos get para eles (não queremos que outro objeto altere estes valores, apenas consulte-os).
Em Jogo, crie um atributo do tipo Vector, e instancie como novo Vector. Este atributo irá conter, em cada um de seus registros, uma rodada do jogo. Crie um método de nova rodada, que recebe por parâmetro o elemento de escolha do jogador. Neste método, incremente o número da rodada, instancie uma nova rodada passando seu número. Passe a escolha do jogador, e a escolha do computador (chamando os métodos set correspondentes). Adicione a rodada ao vetor de rodadas, utilizando o método add. Some a pontuação de jogador e computador, no jogo, com o resultado de combate de cada um nesta rodada.
Em Rodada, crie um método toString que retorne as seguintes informações: Num rodada ? Jogador (escolha:pontuação) ? Computador (escolha:pontuação).
Ainda em Jogo, crie um método toStringUltimaRodada, que retorne um String com as informações da última rodada: Num rodada ? Jogador (escolha:pontuação) ? Computador (escolha:pontuação).
DICA: para manipular um objeto retornado do Vector, coloque antes o tipo de objeto que estará manipulando, por ex: Rodada r = (Rodada)v.get(10). Onde, neste caso, 10 é a posição do objeto no vetor.
Na Gui, crie um método para gerar a instancia do elemento correto, a partir da escolha do jogador no menu.
DICA: estude o código do exemplo EntradaDadosConsole, disponível no Moodle. Utilize a classe EntradaDadosConsole.java para auxiliar na interação do aplicativo com o usuário.
Após o usuário escolher sua entrada pelo menu, se ela estiver dentro das opções de jogo, peça para o jogo criar uma nova rodada, e passe a instância do elemento correto.
Quando o jogador escolher para sair, liste todas as rodadas e a pontuação final obtida.
[code]package Exercicio.poo.regras;
public abstract class Elemento {
public abstract int combate(Elemento elemento);
protected String nome;
protected Object getNome(){
return this.getClass().getName();
}
}[/code]
[code]
package Exercicio.poo.regras;
public class Papel extends Elemento{
public int combate(Elemento elemento)
{
if(elemento instanceof tesoura) // esse maldito instanceof ta dando erro n sei pq :S
{
System.out.println(“Papel perdeu”);
return -1;
}
else
System.out.println(“Papel ganhou”);
return 1;
}
public Papel(){
}
}[/code]
Classes pedra e tesoura estão iguais a classe papel! Obrigado gente desde já!
Sei que falta muita coisa mais eu empaquei ai! 
