class CoinGame {
private BankAccount p1;
private BankAccount p2;
private Coin c1;
private Coin c2;
private double pot;
private boolean printing;
public CoinGame() {
p1 = new BankAccount("Player 1", 1);
p2 = new BankAccount("Player 2", 2);
c1 = new Coin(0.5);
c2 = new Coin(0.5);
pot = 0;
}
public CoinGame(String n1, String n2) {
p1 = new BankAccount(n1, 1);
p2 = new BankAccount(n2, 2);
p1.deposit(1000);
p2.deposit(1000);
c1 = new Coin(0.5);
c2 = new Coin(0.5);
pot = 0;
}
public CoinGame(double w1, double w2) {
p1 = new BankAccount("Player 1", 1);
p2 = new BankAccount("Player 2", 2);
c1 = new Coin(w1);
c2 = new Coin(w2);
pot = 0;
}
public CoinGame(String n1, String n2, double w1, double w2) {
p1 = new BankAccount(n1, 1);
p2 = new BankAccount(n2, 2);
c1 = new Coin(w1);
c2 = new Coin(w2);
pot = 0;
}
public void reset() {
p1.setBalance(1000);
p2.setBalance(1000);
pot = 0;
}
private double nearestCent(double value) {
value = value*100;
value = Math.round(value);
return value / 100;
}
public void turn() {
double max = Math.min(p1.getBalance(), p2.getBalance()) / 3;
//max withdraw is 1/3 smallest bank balanace
double withdraw = nearestCent(Math.random() * max);
p1.withdraw(withdraw);
p2.withdraw(withdraw);
pot = nearestCent(pot + withdraw); //To prevent .00000001 or .9999999
if (printing)
System.out.println("The pot is: " + pot);
c1.roll();
c2.roll();
if (c1.equals(c2) && c1.getFace().equals("Heads")) {
p1.deposit(pot);
pot = 0;
}
else if (c1.equals(c2) && c1.getFace().equals("Tails")) {
p2.deposit(pot);
pot = 0;
}
if (printing) {
System.out.println(p1.getName() + " rolled " + c1.getFace() + ".");
System.out.println(p2.getName() + " rolled " + c2.getFace() + ".");
System.out.println(p1.getName() + " has $" + p1.getBalance());
System.out.println(p2.getName() + " has $" + p2.getBalance());
}
}
public double getP1() {
return p1.getBalance();
}
public double getP2() {
return p2.getBalance();
}
public void play(int n, boolean printing) {
reset();
this.printing = printing;
for (; n > 0; n--) {
turn();
if (printing)
System.out.println("_________________________________");
}
//After turns
System.out.println(p1.getName() + " has $" + p1.getBalance());
System.out.println(p2.getName() + " has $" + p2.getBalance());
if (p1.getBalance() > p2.getBalance())
System.out.println(p1.getName() + " wins!");
else if (p2.getBalance() > p1.getBalance())
System.out.println(p2.getName() + " wins!");
else
System.out.println(p1.getName() + " and " + p2.getName() + " tie!");
}
}