Duvida Exercicio

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! :stuck_out_tongue:

Opa!

Então, pelo que vi - por cima -, você está no caminho certo. Entretanto, sobre o erro mencionado, o Java por ser sensitivo ao caso, só reconhecerá a classe que se está sendo verificada com o operador instanceof, se você estiver colocando o seu nome igualmente sua assinatura. Ou seja, tesoura != Tesoura. Além disso, sua classe deve estar na lista de imports, mas no caso, por estarem no mesmo pacote não há essa necessidade.

PS - Seu professor também pediu para você utilizar o método getSimpleName(), na classe Elemento, e no construtor de cada classe herdada de elemento, fosse definido o valor de escolha de cada elemento. Além disso, no método getNome() da classe Elemento, você pode retornar uma string ao invés de um Object.

Depois dou uma olhada com mais calma e talvez consiga te ajudar mais, mas no mais, é isso. =)

[]'s

Já vi essa mesma pergunta e esse mesmo codigo postado ontem

http://guj.com.br/posts/list/208243.java

da uma olhada …

Foi voce mesmo que fez esse trecho de codigo na sua pergunta ?

vc crio dois users diferentes, com o msm tema e as msm perguntas, não faça isso pergunte no msm topico ! pq os moderadores bokeiam!

abrçs!

Criei nao! auhuaha o maluco é da minha sala :smiley:

ah… outra coisa nao foi a msm pergunta eu perguntei duvidas… eo cara quiz o exercicio pronto --’ ;*

fui eu q fiz o codigo e postei antigamente pra tirar duvidas ai o cara copiou acho ^^