Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

import java.util.Scanner; import java.util.ArrayList; import java.util.Random; p

ID: 3833010 • Letter: I

Question

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Random;
public class ButtonMenGame
{
class Dice
{
  int no_of_sides;
  public Dice(int no_of_sides)
  {
   this.no_of_sides = no_of_sides;
  }
  int rollDice()
  {
   Random r = new Random();
   return r.nextInt(no_of_sides) + 1;
  }
  @Override
  public String toString()
  {
   return no_of_sides + "";
  }
}
   private String player1, player2;
   private ArrayList player1Dices;
   private ArrayList player2Dices;
   private int player1Points = 0, player2Points = 0;
   public ButtonMenGame(String player1, String player2)
   {
    this.player1 = player1;
    this.player2 = player2;
    player1Dices = new ArrayList<>();
    player2Dices = new ArrayList<>();
    Random r = new Random();
    for(int i=0; i<5; i++)
    {
     player1Dices.add(new Dice(r.nextInt(20) + 1));
     player2Dices.add(new Dice(r.nextInt(20) + 1));
    }
   }
   public void playGame()
   {
    while(player1Dices.size() != 0 && player2Dices.size() != 0)
    {
     Dice d1 = player1Dices.remove(0);
     Dice d2 = player2Dices.remove(0);
     boolean tie = false;
     do
     {
      int roll1 = d1.rollDice();
      int roll2 = d2.rollDice();
      System.out.println("P1 rolled " + roll1 + " on dice of sides " + d1.no_of_sides);
      System.out.println("P2 rolled " + roll2 + " on dice of sides " + d2.no_of_sides);
      if(roll1 > roll2)
      {
       System.out.println("P1 Won.");
       player1Points += d2.no_of_sides;
       player1Dices.add(d1);
       player1Dices.add(d2);
       tie = false;
      }
      else if(roll1 < roll2)
      {
       System.out.println("P2 Won.");
       player2Points += d1.no_of_sides;
       player2Dices.add(d1);
       player2Dices.add(d2);
       tie = false;
      }
      else
      {
       System.out.println("Tie. Roll again.");
       tie = true;
      }
     }
     while(tie);
     System.out.println("Points: " + player1 + ": " + player1Points + ", " + player2 + ": " + player2Points + " ");
     if(player1Points > player2Points)
     {
      System.out.println(" ************* "+ player1 +" Has won ********************");
     }
     else if(player1Points < player2Points)
     {
      System.out.println(" ************* "+ player2 +" Has won ********************");
     }
     else
     {
      System.out.println(" ************* Its a tie!! ********************");
     }
    }
   }
public static String PlayerName(String[] soldiers, String[] vampyres,
    String[] brom, String player, Scanner sc)
  {
     System.out.println("Welcome to the ButtonMen Dice Game!!!");
    System.out.println(" Choose " + player + ": 1. Soldiers 2.Vampyres and Any key for Brom: ");
    int op = sc.nextInt();
    String[] arr = null;
    if(op == 1)
      arr = soldiers;
    else if(op == 2)
      arr = vampyres;
    else
      arr = brom;
    int index;
    System.out.println("Choose : ");
    for(int i=0; i       System.out.println((i+1)+" "+arr[i]);
    index = sc.nextInt();
    return arr[index-1];
    }
public static void main(String[] args)
{
  String[] soldiers = {"Avis", "Hammer", "Bauer", "Stark", "Kith", "Clare", "Karl", "Iago", "Niles",
     "Shore", "Hannah", "Kublai"};
     String[] vampyres = {"Angel", "Buddy", "Tiffany", "McGinty", "Dunkirk", "Starchylde"};
     String[] brom = {"Coil", "Bane", "Lucky","Shepherd", "Peace", "Crusher", "Grist", "Wastenott",
        "Reaver", "Jellybean", "Bluff", "Strikimport"};
     Scanner sc = new Scanner(System.in);
     String player1 = PlayerName(soldiers, vampyres, brom, "Player1", sc);
     String player2 = PlayerName(soldiers, vampyres, brom, "Player2", sc);
     sc.close();
  ButtonMenGame buttonMenGame = new ButtonMenGame("Player1", "Player2");
  buttonMenGame.playGame();
}
}

having trouble figuring out how to show the output with the characters name that each player chose instead of player 1 and player 2.

Explanation / Answer

Hi firend, I have modified the program.

I have printed choosen name instead of P1 and P2.

Please let me know in case of any issue.

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class ButtonMen
{
   class Dice
   {
       int no_of_sides;
       public Dice(int no_of_sides)
       {
           this.no_of_sides = no_of_sides;
       }
       int rollDice()
       {
           Random r = new Random();
           return r.nextInt(no_of_sides) + 1;
       }
       @Override
       public String toString()
       {
           return no_of_sides + "";
       }
   }
   private String player1, player2;
   private ArrayList<Dice> player1Dices;
   private ArrayList<Dice> player2Dices;
   private int player1Points = 0, player2Points = 0;
   public ButtonMen(String player1, String player2)
   {
       this.player1 = player1;
       this.player2 = player2;
       player1Dices = new ArrayList<>();
       player2Dices = new ArrayList<>();
       Random r = new Random();
       for(int i=0; i<5; i++)
       {
           player1Dices.add(new Dice(r.nextInt(20) + 1));
           player2Dices.add(new Dice(r.nextInt(20) + 1));
       }
   }
   public void playGame()
   {
       while(player1Dices.size() != 0 && player2Dices.size() != 0)
       {
           Dice d1 = player1Dices.remove(0);
           Dice d2 = player2Dices.remove(0);
           boolean tie = false;
           do
           {
               int roll1 = d1.rollDice();
               int roll2 = d2.rollDice();
               System.out.println(player1+" rolled " + roll1 + " on dice of sides " + d1.no_of_sides);
               System.out.println(player2+" rolled " + roll2 + " on dice of sides " + d2.no_of_sides);
               if(roll1 > roll2)
               {
                   System.out.println(player1+" Won.");
                   player1Points += d2.no_of_sides;
                   player1Dices.add(d1);
                   player1Dices.add(d2);
                   tie = false;
               }
               else if(roll1 < roll2)
               {
                   System.out.println(player2+" Won.");
                   player2Points += d1.no_of_sides;
                   player2Dices.add(d1);
                   player2Dices.add(d2);
                   tie = false;
               }
               else
               {
                   System.out.println("Tie. Roll again.");
                   tie = true;
               }
           }while(tie);
           System.out.println("Points: " + player1 + ": " + player1Points + ", " + player2 + ": " + player2Points + " ");
           if(player1Points > player2Points)
           {
               System.out.println(" ************* "+ player1 +" Has won ********************");
           }
           else if(player1Points < player2Points)
           {
               System.out.println(" ************* "+ player2 +" Has won ********************");
           }
           else
           {
               System.out.println(" ************* Its a tie!! ********************");
           }
       }
   }
  
   public static String PlayerName(String[] soldiers, String[] vampyres,
           String[] brom, String player, Scanner sc){
      
       System.out.println("Choose "+player+": 1. Soldiers 2.Vampyres and Any key for Brom ");
       int op = sc.nextInt();
      
       String[] arr = null;
       if(op == 1)
           arr = soldiers;
       else if(op == 2)
           arr = vampyres;
       else
           arr = brom;
      
       int index;
       System.out.println("Choose : ");
       for(int i=0; i<arr.length; i++)
           System.out.println((i+1)+" "+arr[i]);
      
       index = sc.nextInt();
       return arr[index-1];
   }
   public static void main(String[] args)
   {
       String[] soldiers = {"Avis", "Hammer", "Bauer", "Stark", "Kith", "Clare", "Karl", "Iago", "Niles",
               "Shore", "Hannah", "Kublai"};
       String[] vampyres = {"Angel", "Buddy", "Tiffany", "McGinty", "Dunkirk", "Starchylde"};
       String[] brom = {"Coil", "Bane", "Lucky","Shepherd", "Peace", "Crusher", "Grist", "Wastenott",
               "Reaver", "Jellybean", "Bluff", "Strikimport"};
      
       Scanner sc = new Scanner(System.in);
       String player1 = PlayerName(soldiers, vampyres, brom, "Player1", sc);
       String player2 = PlayerName(soldiers, vampyres, brom, "Player2", sc);
       sc.close();
       ButtonMen buttonMen = new ButtonMen(player1, player2);
       buttonMen.playGame();
   }
}

/*
Sample run:
Choose Player1: 1. Soldiers 2.Vampyres and Any key for Brom

1
Choose :
1 Avis
2 Hammer
3 Bauer
4 Stark
5 Kith
6 Clare
7 Karl
8 Iago
9 Niles
10 Shore
11 Hannah
12 Kublai
4
Choose Player2: 1. Soldiers 2.Vampyres and Any key for Brom

2
Choose :
1 Angel
2 Buddy
3 Tiffany
4 McGinty
5 Dunkirk
6 Starchylde
3
Stark rolled 11 on dice of sides 15
Tiffany rolled 11 on dice of sides 12
Tie. Roll again.
Stark rolled 5 on dice of sides 15
Tiffany rolled 12 on dice of sides 12
Tiffany Won.
Points: Stark: 0, Tiffany: 15

************* Tiffany Has won ********************
Stark rolled 6 on dice of sides 9
Tiffany rolled 4 on dice of sides 18
Stark Won.
Points: Stark: 18, Tiffany: 15

************* Stark Has won ********************
Stark rolled 3 on dice of sides 15
Tiffany rolled 8 on dice of sides 20
Tiffany Won.
Points: Stark: 18, Tiffany: 30

************* Tiffany Has won ********************
Stark rolled 8 on dice of sides 15
Tiffany rolled 9 on dice of sides 14
Tiffany Won.
Points: Stark: 18, Tiffany: 45

************* Tiffany Has won ********************
Stark rolled 12 on dice of sides 15
Tiffany rolled 2 on dice of sides 6
Stark Won.
Points: Stark: 24, Tiffany: 45

************* Tiffany Has won ********************
Stark rolled 2 on dice of sides 9
Tiffany rolled 10 on dice of sides 15
Tiffany Won.
Points: Stark: 24, Tiffany: 54

************* Tiffany Has won ********************
Stark rolled 13 on dice of sides 18
Tiffany rolled 9 on dice of sides 12
Stark Won.
Points: Stark: 36, Tiffany: 54

************* Tiffany Has won ********************
Stark rolled 12 on dice of sides 15
Tiffany rolled 1 on dice of sides 15
Stark Won.
Points: Stark: 51, Tiffany: 54

************* Tiffany Has won ********************
Stark rolled 2 on dice of sides 6
Tiffany rolled 1 on dice of sides 20
Stark Won.
Points: Stark: 71, Tiffany: 54

************* Stark Has won ********************
Stark rolled 8 on dice of sides 18
Tiffany rolled 4 on dice of sides 15
Stark Won.
Points: Stark: 86, Tiffany: 54

************* Stark Has won ********************
Stark rolled 12 on dice of sides 12
Tiffany rolled 12 on dice of sides 14
Tie. Roll again.
Stark rolled 1 on dice of sides 12
Tiffany rolled 5 on dice of sides 14
Tiffany Won.
Points: Stark: 86, Tiffany: 66

************* Stark Has won ********************
Stark rolled 6 on dice of sides 15
Tiffany rolled 2 on dice of sides 9
Stark Won.
Points: Stark: 95, Tiffany: 66

************* Stark Has won ********************
Stark rolled 11 on dice of sides 15
Tiffany rolled 9 on dice of sides 15
Stark Won.
Points: Stark: 110, Tiffany: 66

************* Stark Has won ********************
Stark rolled 6 on dice of sides 6
Tiffany rolled 4 on dice of sides 12
Stark Won.
Points: Stark: 122, Tiffany: 66

************* Stark Has won ********************
Stark rolled 2 on dice of sides 20
Tiffany rolled 7 on dice of sides 14
Tiffany Won.
Points: Stark: 122, Tiffany: 86

************* Stark Has won ********************
Stark rolled 6 on dice of sides 18
Tiffany rolled 15 on dice of sides 20
Tiffany Won.
Points: Stark: 122, Tiffany: 104

************* Stark Has won ********************
Stark rolled 15 on dice of sides 15
Tiffany rolled 9 on dice of sides 14
Stark Won.
Points: Stark: 136, Tiffany: 104

************* Stark Has won ********************
Stark rolled 1 on dice of sides 15
Tiffany rolled 14 on dice of sides 18
Tiffany Won.
Points: Stark: 136, Tiffany: 119

************* Stark Has won ********************
Stark rolled 6 on dice of sides 9
Tiffany rolled 11 on dice of sides 20
Tiffany Won.
Points: Stark: 136, Tiffany: 128

************* Stark Has won ********************
Stark rolled 6 on dice of sides 15
Tiffany rolled 10 on dice of sides 15
Tiffany Won.
Points: Stark: 136, Tiffany: 143

************* Tiffany Has won ********************
Stark rolled 1 on dice of sides 15
Tiffany rolled 5 on dice of sides 18
Tiffany Won.
Points: Stark: 136, Tiffany: 158

************* Tiffany Has won ********************
Stark rolled 6 on dice of sides 6
Tiffany rolled 2 on dice of sides 9
Stark Won.
Points: Stark: 145, Tiffany: 158

************* Tiffany Has won ********************
Stark rolled 10 on dice of sides 12
Tiffany rolled 14 on dice of sides 20
Tiffany Won.
Points: Stark: 145, Tiffany: 170

************* Tiffany Has won ********************
Stark rolled 1 on dice of sides 15
Tiffany rolled 11 on dice of sides 15
Tiffany Won.
Points: Stark: 145, Tiffany: 185

************* Tiffany Has won ********************
Stark rolled 3 on dice of sides 14
Tiffany rolled 4 on dice of sides 15
Tiffany Won.
Points: Stark: 145, Tiffany: 199

************* Tiffany Has won ********************
Stark rolled 3 on dice of sides 6
Tiffany rolled 9 on dice of sides 15
Tiffany Won.
Points: Stark: 145, Tiffany: 205

************* Tiffany Has won ********************
Stark rolled 3 on dice of sides 9
Tiffany rolled 8 on dice of sides 18
Tiffany Won.
Points: Stark: 145, Tiffany: 214

************* Tiffany Has won ********************
*/