Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .classpath
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path="bin"/>
</classpath>
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# example_roulette
Program to refactor that plays a game of roulette

Fixed by Patrick Terry and Sivaneshwaran Loganathan
10 changes: 10 additions & 0 deletions src/roulette/Bet.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,14 @@ public int getOdds () {
public String getDescription () {
return myDescription;
}

protected String placeBet() {
return null;
}
protected boolean betIsMade(Wheel w, String betChoice){
return false;
}



}
64 changes: 12 additions & 52 deletions src/roulette/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,9 @@ public class Game {
private static final String DEFAULT_NAME = "Roulette";
// bets player can make
private Bet[] myPossibleBets = {
new Bet("Red or Black", 1),
new Bet("Odd or Even", 1),
new Bet("Three in a Row", 11)
new RbBet("Red or Black", 1),
new OEBet("Odd or Even", 1),
new NumberBet("Three in a Row", 11)
};
private Wheel myWheel;

Expand Down Expand Up @@ -44,75 +44,35 @@ public String getName () {
public void play (Gambler player) {
int amount = ConsoleReader.promptRange("How much do you want to bet",
0, player.getBankroll());
int whichBet = promptForBet();
String betChoice = placeBet(whichBet);
Bet b = promptForBet();
String betChoice = b.placeBet();

System.out.print("Spinning ...");
myWheel.spin();
System.out.println(String.format("Dropped into %s %d", myWheel.getColor(), myWheel.getNumber()));
if (betIsMade(whichBet, betChoice)) {
if (b.betIsMade(myWheel, betChoice)) {
System.out.println("*** Congratulations :) You win ***");
amount *= myPossibleBets[whichBet].getOdds();
amount *= b.getOdds();
}
else {
System.out.println("*** Sorry :( You lose ***");
amount *= -1;
amount /= -1;

}
player.updateBankroll(amount);
}

/**
* Prompt the user to make a bet from a menu of choices.
*/
private int promptForBet () {
private Bet promptForBet () {
System.out.println("You can make one of the following types of bets:");
for (int k = 0; k < myPossibleBets.length; k++) {
System.out.println(String.format("%d) %s", (k + 1), myPossibleBets[k].getDescription()));
}
return ConsoleReader.promptRange("Please make a choice", 1, myPossibleBets.length) - 1;
return myPossibleBets[ConsoleReader.promptRange("Please make a choice", 1, myPossibleBets.length) - 1];
}

/**
* Place the given bet by prompting user for specific information need to complete that bet.
*
* @param whichBet specific bet chosen by the user
*/
private String placeBet (int whichBet) {
String result = "";
if (whichBet == 0) {
result = ConsoleReader.promptOneOf("Please bet", Wheel.BLACK, Wheel.RED);
}
else if (whichBet == 1) {
result = ConsoleReader.promptOneOf("Please bet", "even", "odd");
}
else if (whichBet == 2) {
result = "" + ConsoleReader.promptRange("Enter first of three consecutive numbers",
1, Wheel.NUM_SPOTS - 3);
}
System.out.println();
return result;
}

/**
* Checks if the given bet is won or lost given user's choice and result of spinning the wheel.
*
* @param whichBet specific bet chosen by the user
* @param betChoice specific value user chose to try to win the bet
*/
private boolean betIsMade (int whichBet, String betChoice) {
if (whichBet == 0) {
return myWheel.getColor().equals(betChoice);
}
else if (whichBet == 1) {
return (myWheel.getNumber() % 2 == 0 && betChoice.equals("even")) ||
(myWheel.getNumber() % 2 == 1 && betChoice.equals("odd"));
}
else if (whichBet == 2) {
int start = Integer.parseInt(betChoice);
return (start <= myWheel.getNumber() && myWheel.getNumber() < start + 3);
}
else {
return false;
}
}

}
29 changes: 29 additions & 0 deletions src/roulette/NumberBet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package roulette;

import util.ConsoleReader;

public class NumberBet extends Bet {

public NumberBet(String description, int odds) {
super(description, odds);
// TODO Auto-generated constructor stub
}

protected String placeBet() {
// TODO Auto-generated method stub
String result = ""
+ ConsoleReader.promptRange(
"Enter first of three consecutive numbers", 1,
Wheel.NUM_SPOTS - 3);
System.out.println();
return result;
}

@Override
protected boolean betIsMade(Wheel w, String betChoice) {
// TODO Auto-generated method stub
int start = Integer.parseInt(betChoice);
return (start <= w.getNumber() && w.getNumber() < start + 3);

}
}
27 changes: 27 additions & 0 deletions src/roulette/OEBet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package roulette;

import util.ConsoleReader;

public class OEBet extends Bet {

public OEBet(String description, int odds) {
super(description, odds);
// TODO Auto-generated constructor stub
}

@Override
protected String placeBet() {
// TODO Auto-generated method stub
String result = ConsoleReader.promptOneOf("Please bet", "even", "odd");
System.out.println();
return result;
}

@Override
protected boolean betIsMade(Wheel w, String betChoice) {
// TODO Auto-generated method stub
return (w.getNumber() % 2 == 0 && betChoice.equals("even")) ||
(w.getNumber() % 2 == 1 && betChoice.equals("odd"));

}
}
29 changes: 29 additions & 0 deletions src/roulette/RbBet.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package roulette;

import util.ConsoleReader;

public class RbBet extends Bet{

public RbBet(String description, int odds) {
super(description, odds);
// TODO Auto-generated constructor stub
}

@Override
protected String placeBet() {
// TODO Auto-generated method stub
String result = ConsoleReader.promptOneOf("Please bet", Wheel.BLACK, Wheel.RED);
System.out.println();
return result;
}

@Override
protected boolean betIsMade(Wheel w, String betChoice) {
// TODO Auto-generated method stub

return w.getColor().equals(betChoice);

}


}