Boa noite a todos! Faz 2-3 dias que estou tentando terminar esse programa…é pra faculdade.
Como eu sou “ótimo” em programação, pode ser algo bem bobo, mas mesmo assim não consegui encontrar :?
Se tiverem um tempo, por favor me deêm umas dicas!
O jogo é um JoKenPO (Papel, pedra e tesoura)
Segue o programa que fiz:
MAIN
public static void main(String[] args) {
int resp=0;
PC pc;
User user;
Vencedor ven;
ven = new Vencedor();
user =new User();
pc= new PC();
Scanner scan = new Scanner(System.in);
System.out.println("------------JokenPo!-----------\n\n");
System.out.println("Quantas partidas terá o jogo?");
int n = scan.nextInt(); //váriavel que possui a qtde de partidas
System.out.println("Teremos: "+n+" partida(s)!");
System.out.println("Escolha a sua arma!\n");
System.out.println("0- Pedra");
System.out.println("1-Tesoura");
System.out.println("2-Papel");
int n2= scan.nextInt(); //váriavel que possui a opção do user
user.User(n2);
pc.PC();
user.Printando();
System.err.println("Quem venceu: "+ven.Vencer() );
pc.Printando();
resp = (ven.Vencer());
switch(resp){
case 0: System.out.println("O computador ganhou!");
break;
case 1: System.out.println("Parabéns! Você ganhou!");
break;
case 2: System.out.println("Deu empate!");
break;
case 3: System.out.println("Erro!!!");
break;
}
}
}
CLASSE USER
public class User {
int pedra, papel, tesoura,n;
public int User(int n){ //onde vou por o n2 no main
this.n=n;
switch(n){
case 0: Pedra();
break;
case 1: Tesoura();
break;
case 2: Papel();
break;
}
return n;
}
public void Pedra(){
}
public void Tesoura(){
}
public void Papel(){
}
public void Printando(){
switch(n){
case 0: System.out.println("Usuário escolheu Pedra!");
break;
case 1: System.out.println("Usuário escolheu Tesoura!");
break;
case 2: System.out.println("Usuário escolheu Papel!");
break;
}
}
}
CLASSE PC
package jokenpoii;
import java.util.Random;
/**
*
* @author profissional
*/
public class PC {
Random randomValue = new Random();
int valorAleatorio;
Random op = new Random();
int PC(){
int valorAleatorio = randomValue.nextInt(3);
this.valorAleatorio=valorAleatorio;
switch(valorAleatorio){
case 0: Pedra();
break;
case 1: Tesoura();
break;
case 2: Papel();
break;
}
return valorAleatorio;
}
public void Pedra(){}
public void Tesoura(){}
public void Papel(){}
public void Printando(){
switch(valorAleatorio){
case 0: System.out.println("O computador escolheu Pedra!");
break;
case 1: System.out.println("O computador escolheu Tesoura");
break;
case 2: System.out.println("O computador escolheu Papel!");
break;
}
}
}
CLASSE VENCEDOR —> Acredito que aqui esteja o meu erro…
public class Vencedor {
public Vencedor(){
}
public int Vencer(){ //a = user; b = pc
PC b;
b = new PC();
User a;
a = new User();
if(a.n==1 && b.valorAleatorio==1){
return 2;//2 é empate
}
if(a.n==0 && b.valorAleatorio==0){
return 2;
}
if(a.n==2 && b.valorAleatorio==2){
return 2;
}
// agora os casos onde somente o usuário pode ganhar
if(a.n==2 && b.valorAleatorio==0){ //usuário:papel PC: pedra
return 1; // 1 o usuário ganha
}
if(a.n==1 && b.valorAleatorio==2){ //usuário:tesoura PC:papel
return 1; //1 usuário ganha
}
if(a.n==0 &&b.valorAleatorio==1){ //Pc: Tesoura Usuário: pedra
return 1;//1 o usuário ganha
}
//agora os casos onde o PC ganha
if(a.n==0 && b.valorAleatorio==2){// PC: papel User: pedra
return 0; //0 pc ganha
}
if(a.n==2 && b.valorAleatorio==1){// PC:Tesoura User:papel
return 0;//0 PC ganha
}
if(a.n==1 && b.valorAleatorio==0){ //PC: Pedra User: tesoura
return 0; //0 o PC ganha
}
return 3; // deu pau!
}
}
EDIT: O erro é que sempre dá empate! Antes disso, o computador ganhava (quando o Usuário devia ganhar) e vice-versa… reescrevi tantas vezes que já perdi a conta! heuiaheiua
Vlw!