diff --git a/.classpath b/.classpath
new file mode 100644
index 0000000..fb50116
--- /dev/null
+++ b/.classpath
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/src/Main.java b/src/Main.java
index 2e5e77c..73a8d13 100755
--- a/src/Main.java
+++ b/src/Main.java
@@ -10,7 +10,7 @@
public class Main {
public static void main (String[] args) {
Game game = new Game();
- Gambler player = new Gambler("Robert", 1000);
+ Gambler player = new Gambler("Adam", 1000);
System.out.println(String.format("Hello %s, let's play %s!\n", player.getName(), game.getName()));
while (player.isSolvent()) {
diff --git a/src/betResources/Bets.properties b/src/betResources/Bets.properties
new file mode 100644
index 0000000..682225f
--- /dev/null
+++ b/src/betResources/Bets.properties
@@ -0,0 +1,3 @@
+RedBlack="Red or Black",1
+OddEven="Odd or Even",1
+ThreeConsecutive="Three in a Row",11
\ No newline at end of file
diff --git a/src/roulette/Bet.java b/src/roulette/Bet.java
index 15d54a2..188003a 100755
--- a/src/roulette/Bet.java
+++ b/src/roulette/Bet.java
@@ -46,4 +46,12 @@ public String toString () {
* @param wheel information needed to check if bet won or lost
*/
public abstract boolean isMade (Wheel.SpinResult spinResult);
+
+ public String getDescription(){
+ return myDescription;
+ }
+
+ public int getOdds(){
+ return myOdds;
+ }
}
diff --git a/src/roulette/Factory.java b/src/roulette/Factory.java
new file mode 100644
index 0000000..d54a132
--- /dev/null
+++ b/src/roulette/Factory.java
@@ -0,0 +1,43 @@
+package roulette;
+
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.ResourceBundle;
+
+import util.ConsoleReader;
+
+public class Factory {
+ private List myPossibleBets;
+
+ public Factory() throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException{
+ myPossibleBets = new ArrayList();
+
+ ResourceBundle myResources = ResourceBundle.getBundle("betResources/Bets.properties");
+ Enumeration enumeration = myResources.getKeys();
+ while(enumeration.hasMoreElements()){
+ String myClassKey = enumeration.nextElement();
+ Class betClass = Class.forName(myClassKey);
+
+ Constructor betCtor = betClass.getConstructor(String.class, int.class);
+ String classValue = myResources.getString(myClassKey);
+ String description = classValue.substring(0, classValue.indexOf(","));
+ classValue = classValue.substring(classValue.indexOf(",")+1);
+ int odds = Integer.parseInt(classValue);
+ Object betObj = betCtor.newInstance(new Object[] { description, odds });
+ myPossibleBets.add((Bet)betObj);
+ }
+ }
+
+ public Bet printMenuChoices(){
+ System.out.println("You can make one of the following types of bets:");
+ for (int k = 0; k < myPossibleBets.size(); k++) {
+ System.out.println(String.format("%d) %s", (k + 1), myPossibleBets.get(k).getDescription()));
+ }
+ int response = ConsoleReader.promptRange("Please make a choice", 1, myPossibleBets.size());
+ return myPossibleBets.get(response - 1);
+ }
+
+}
\ No newline at end of file
diff --git a/src/roulette/Game.java b/src/roulette/Game.java
index 63c6ed6..d07d060 100755
--- a/src/roulette/Game.java
+++ b/src/roulette/Game.java
@@ -21,6 +21,7 @@ public class Game {
new ThreeConsecutive("Three in a Row", 11),
};
private Wheel myWheel;
+ private Factory myFactory;
/**
* Construct the game.
@@ -47,7 +48,7 @@ public String getName () {
public void play (Gambler player) {
int amount = ConsoleReader.promptRange("How much do you want to bet",
0, player.getBankroll());
- Bet b = promptForBet();
+ Bet b = myFactory.printMenuChoices();
b.place();
System.out.print("Spinning ...");
@@ -63,16 +64,4 @@ public void play (Gambler player) {
}
player.updateBankroll(amount);
}
-
- /**
- * Prompt the user to make a bet from a menu of choices.
- */
- 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]));
- }
- int response = ConsoleReader.promptRange("Please make a choice", 1, myPossibleBets.length);
- return myPossibleBets[response - 1];
- }
}
diff --git a/src/roulette/OddEven.java b/src/roulette/OddEven.java
deleted file mode 100644
index f430f37..0000000
--- a/src/roulette/OddEven.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package roulette;
-
-import util.ConsoleReader;
-
-
-public class OddEven extends Bet {
- public OddEven (String description, int odds) {
- super(description, odds);
- }
-
- /**
- * @see Bet#place()
- */
- @Override
- public String place () {
- return ConsoleReader.promptOneOf("Please bet", "even", "odd");
- }
-
- /**
- * @see Bet#isMade(String, Wheel)
- */
- @Override
- public boolean isMade (String betChoice, Wheel wheel) {
- return (wheel.getNumber() % 2 == 0 && betChoice.equals("even")) ||
- (wheel.getNumber() % 2 == 1 && betChoice.equals("odd"));
- }
-}
diff --git a/src/roulette/RedBlack.java b/src/roulette/RedBlack.java
deleted file mode 100644
index 8ccd4b8..0000000
--- a/src/roulette/RedBlack.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package roulette;
-
-import util.ConsoleReader;
-
-
-public class RedBlack extends Bet {
- public RedBlack (String description, int odds) {
- super(description, odds);
- }
-
- /**
- * @see Bet#place()
- */
- @Override
- public String place () {
- return ConsoleReader.promptOneOf("Please bet", Wheel.BLACK, Wheel.RED);
- }
-
- /**
- * @see Bet#isMade(String, Wheel)
- */
- @Override
- public boolean isMade (String betChoice, Wheel wheel) {
- return wheel.getColor().equals(betChoice);
- }
-}
diff --git a/src/roulette/ThreeConsecutive.java b/src/roulette/ThreeConsecutive.java
deleted file mode 100644
index e3331ed..0000000
--- a/src/roulette/ThreeConsecutive.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package roulette;
-
-import util.ConsoleReader;
-
-
-public class ThreeConsecutive extends Bet {
- public ThreeConsecutive (String description, int odds) {
- super(description, odds);
- }
-
- /**
- * @see Bet#place()
- */
- @Override
- public String place () {
- return "" + ConsoleReader.promptRange("Enter first of three consecutive numbers", 1, 34);
- }
-
- /**
- * @see Bet#isMade(String, Wheel)
- */
- @Override
- public boolean isMade (String betChoice, Wheel wheel) {
- int start = Integer.parseInt(betChoice);
- return (start <= wheel.getNumber() && wheel.getNumber() < start + 3);
- }
-}