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 ********************
*/
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.