please create structured flow chart for this pragram import java.util.Random; pu
ID: 3536082 • Letter: P
Question
please create structured flow chart for this pragram
import java.util.Random;
public class Game
{
public static void main(String args[])
{
//declare variables Pile marbles = new Pile();
Random random = new Random();
Player player1;
Player player2;
int marblesToRemove = 0;
//determine who goes first
if(random.nextInt(2) == 0)
{
System.out.println("User goes first ");
player1 = new
Player(2); player2 = new
Player(); }
else { System.out.println("Computer goes first ");
player1 = new Player();
player2 = new Player(2);
}
//keep going until all the marbles are gone
while(marbles.getMarbles() > 0)
{
//check if player two wins
if(marbles.getMarbles() == 1)
{
System.out.println("Player 2 Wins!!!"); break;
}
//prompt/calculate number of marbles to remove
System.out.println("Number of marbles left: " + marbles.getMarbles());
System.out.println("Player 1's turn:");
marblesToRemove = player1.chooseNextMove(marbles.getMarbles());
System.out.println("Player 1 removed " + marblesToRemove);
System.out.println();
//remove the marbles marbles.removeMarbles(marblesToRemove);
//check if player one wins if(marbles.getMarbles() == 1)
{
System.out.println("Player 1 Wins!!!"); break;
}
//prompt/calculate number of marbles to remove
//System.out.println("Number of marbles left: " + marbles.getMarbles());
System.out.println("Player 2's turn:");
marblesToRemove = player2.chooseNextMove(marbles.getMarbles());
System.out.println("Player 2 removed " + marblesToRemove);
System.out.println();
//remove marbles marbles.removeMarbles(marblesToRemove);
}
}
}
import java.util.Random;
public class Pile
{
//fields int numMarbles = 0;
//generate the number of marbles public Pile()
{ Random random = new Random();
numMarbles = random.nextInt(89) + 11; }
//get method public int getMarbles()
{
return numMarbles;
}
//remove method
public void removeMarbles(int marblesToRemove)
{
numMarbles -= marblesToRemove;
}
}
import java.util.Random;
import java.util.Scanner;
public class Player
{
int playerType = 0;
// 0 dumb, 1 smart, 2 player Random random = new Random();
Scanner input;
//constructor where player type is specified
public Player(int type)
{
if (type < 0 || type > 2) playerType = 2;
else playerType = type; input = new Scanner(System.in);
}
//constructor where player type is specified
public Player()
{
playerType = random.nextInt(2);
input = new Scanner(System.in);
}
//pick next move public int chooseNextMove(int marblesLeft)
{
//setup variables int marblesToRemove = 0;
//remove the second to last marble
if(marblesLeft == 3) return 1;
//if dumb, pick random number
if(playerType == 0)
{
marblesToRemove = random.nextInt((marblesLeft/2) - 1) + 1;
}
//if smart get to specific numbers else
if (playerType == 1)
{
if(marblesLeft > 63) marblesToRemove = marblesLeft - 63;
else if(marblesLeft > 31) marblesToRemove = marblesLeft - 31;
else if(marblesLeft > 15) marblesToRemove = marblesLeft - 15; else if(marblesLeft > 7) marblesToRemove = marblesLeft - 7;
else if(marblesLeft > 3) marblesToRemove = marblesLeft - 3;
else if(marblesLeft == 2) marblesToRemove = 1;
//pick random number
else marblesToRemove = random.nextInt((marblesLeft/2) - 1 ) + 1; }
else
{
//prompt user
System.out.println("Please enter a number of marbles to remove between 1 and " + (marblesLeft / 2)); marblesToRemove = input.nextInt();
//error check
while(marblesToRemove > marblesLeft / 2 || marblesToRemove < 0)
{
System.out.println("That is not a valid entry, please try again (1 - " + (marblesLeft / 2) + ")"); marblesToRemove = input.nextInt();
}
}
//return values return marblesToRemove;
}
}
Explanation / Answer
this is my code, you are using. nd you didnt rate me yet.
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.