Array in the jokenpo

Asked

Viewed 281 times

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];
        }
} 
  • 1

    First, set a limit amount of players, no matter if they are human or not.

  • do an array ? for 10 players then? and after that?

  • Put the User and Move class, I can help you with the code.

  • better edit the question and there

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.