2
I’m making a game of jokenpo and it should have an option of how many players (multiplayer) will play, which can be, 3 humans and 2 computers, or more.
But I can’t get him to receive this option from how many players will play, and the code compares all of the moves between them, only 1 player to another, not the three plays.
import java.util.ArrayList;
import java.util.Scanner;
public class PedraPapelTesoura {
public static void main(String[] args) {
PedraPapelTesoura game = new PedraPapelTesoura();
game.startGame();
}
public Usuario user;
public Usuario user2;
public Computador computer;
private int userScore;
private int user2Score;
private int computerScore;
private int numberOfGames;
public PedraPapelTesoura() {
user = new Usuario();
user2 = new Usuario();
computer = new Computador();
userScore = 0;
user2Score = 0;
computerScore =0;
numberOfGames= 0;
//// int qtdjogador;
//
// Scanner input = new Scanner(System.in);
// System.out.println("Quantos jogadores vão Jogar? ");
// qtdjogador = input.nextInt();
//
// String[] nomes = new String[qtdjogador];
//
// for(int i = 0; i<qtdjogador; i++) {
// System.out.println("Entre com os nome do jogador: " +(i+1));
// nomes[i] = input.next();
// }
// input.close();
//
}
public void startGame() {
System.out.println("PEDRA, PAPEL, TESOURA, LAGARTO OU SPOCK!");
Move userMove = user.getMove();
Move user2Move = user2.getMove();
Move computerMove = computer.getMove();
System.out.println("\n O jogador 1 escolheu " + userMove + ".");
System.out.println("\n O jogador 2 escolheu " + user2Move + ".");
System.out.println("O computador escolheu " + computerMove + ".\n");
int compareMoves = userMove.compareMoves(user2Move);
int compareMoves2 = userMove.compareMoves(computerMove);
int compareMoves3 = computerMove.compareMoves(user2Move);
switch (compareMoves) {
case 0: // Empate
System.out.println("Empate!");
break;
case 1:
System.out.println(userMove + " ganha de " + user2Move + ". Jogador 1 venceu!");
userScore++;
break;
case -1:
System.out.println(user2Move + " ganha de " + userMove + ". Jogador 2 venceu!");
user2Score++;
break;
}
switch (compareMoves2) {
case 0: // Empate
System.out.println("Empate!");
break;
case 1:
System.out.println(userMove + " ganha de " + computerMove + ". Jogador 1 venceu!");
userScore++;
break;
case -1:
System.out.println(user2Move + " ganha de " + computerMove + ". Jogador 2 venceu!");
user2Score++;
break;
}
switch (compareMoves3) {
case 0: // Empate
System.out.println("Empate!");
break;
case 1:
System.out.println(computerMove + " ganha de " + user2Move + ". Computador venceu!");
computerScore++;
break;
case -1:
System.out.println(computerMove + " ganha de " + userMove + ". Computador venceu!");
computerScore++;
break;
}
numberOfGames++;
// Pergunta ao usuário se ele deseja jogar novamente
if (user.playAgain()) {
System.out.println();
startGame();
} else {
printGameStats();
}
}
/**
* Mostra as estatísticas do jogo. Considera os empates como 1/2 de uma vitória
* para definir a porcentagem de vitórias.
*/
private void printGameStats() {
int jogador1 = userScore;
int jogador2 = user2Score;
int computador = computerScore;
int empate = numberOfGames - userScore - user2Score;
// Imprimir valores
System.out.printf(" Vitórias Jogador 1: " + userScore);
System.out.printf("\n Vitórias Jogador 2: " + user2Score);
System.out.println("\n Vitórias Computador : " + computerScore);
System.out.printf(" Empates: " + empate);
System.out.printf("\n Jogos realizados: " + numberOfGames);
}
}
import java.util.Scanner;
public class Usuario {
private Scanner inputScanner;
public Usuario() {
inputScanner = new Scanner(System.in);
}
public Move getMove() {
// Pedir ao usuário
System.out.print("Digite (PE) Pedra, (PA) Papel, (TE) Tesoura, (LA) Lagarto ou (SP) Spock? ");
// Obtendo a entrada
String userInput = inputScanner.nextLine();
userInput = userInput.toUpperCase();
char primeiraLetra = userInput.charAt(0);
char segundaLetra = userInput.charAt(1);
if (primeiraLetra == 'P' && (segundaLetra == 'E' || segundaLetra == 'A') || primeiraLetra == 'T'
|| primeiraLetra == 'L' || primeiraLetra == 'S') {
// O usuário digitou uma entrada válida
switch (primeiraLetra) {
case 'P':
if (segundaLetra == 'E') {
return Move.PEDRA;
} else {
return Move.PAPEL;
}
case 'T':
return Move.TESOURA;
case 'L':
return Move.LAGARTO;
case 'S':
return Move.SPOCK;
}
}
return getMove();
}
public boolean playAgain() {
System.out.print("Você deseja jogar novamente? ");
String userInput = inputScanner.nextLine();
userInput = userInput.toUpperCase();
return userInput.charAt(0) == 'S';
}
}
public enum Move {
PEDRA, PAPEL, TESOURA, LAGARTO, SPOCK;
public int compareMoves(Move otherMove) {
// Tie
if (this == otherMove)
return 0;
switch (this) {
// ? IGUAL A IF E O (:) IGUAL A ELSE
case PEDRA:
return (otherMove == TESOURA ? 1 :(otherMove == LAGARTO ? 1 : -1));
case PAPEL:
return (otherMove == PEDRA ? 1 :(otherMove == SPOCK ? 1 : -1));
case TESOURA:
return (otherMove == PAPEL ? 1 :(otherMove == LAGARTO ? 1 : -1));
case LAGARTO:
return (otherMove == SPOCK ? 1 :(otherMove == PAPEL ? 1 : -1));
case SPOCK:
return (otherMove == PEDRA ? 1 :(otherMove == TESOURA ? 1 : -1));
}return 0;
}
public static void main(String[] args) {
PedraPapelTesoura game = new PedraPapelTesoura();
game.startGame();
}
}
import java.util.Random;
public class Computador {
public Move getMove() {
Move[] escolha = Move.values();
Random random = new Random();
int index = random.nextInt(escolha.length);
return escolha[index];
}
}
First, set a limit amount of players, no matter if they are human or not.
– Isaías de Lima Coelho
do an array ? for 10 players then? and after that?
– Bruno Simoes
Put the User and Move class, I can help you with the code.
– Isaías de Lima Coelho
better edit the question and there
– Isaías de Lima Coelho