/* A bet has a target (the code entered, which is 1-36, or special values for * the various groups, zero and double-zero), and an amount in dollars */ public class Bet { public int target; public int amount; /* bet on a target, of an amount */ public Bet(int on, int of) { target = on; amount = of; } /* check if this is a valid bet - on a real target and of a valid amount */ public boolean isValid() { return ((target > 0) && (target <= 50) && (amount >= 5) && (amount <= 500)); } /* utility to return either the odds amount in the case of a win, or zero for a loss */ private int m(boolean isWon, int odds) { return isWon? odds: 0; } /* look at the wheel to see if this bet won. * returns 0 if it didn't, or the odds if it did */ public int winsOn(Wheel w) { if (target < 37) { // A number bet 1-36 wins at odds of 35 if it is the exact number return m(w.isNumber() && (w.number() == target), 35); } else switch (target) { case 37: // 1-12, odds of 2 return m(w.isNumber() && (w.number() <= 12), 2); case 38: // 13-24, odds of 2 return m(w.isNumber() && (w.number() > 12) && (w.number() <= 24), 2); case 39: // 25-36, odds of 2 return m(w.isNumber() && (w.number() > 24), 2); case 40: // Column 1, odds of 2 return m(w.isNumber() && ((w.number() % 3) == 1), 2); case 41: // Column 2, odds of 2 return m(w.isNumber() && ((w.number() % 3) == 2), 2); case 42: // Column 3, odds of 2 return m(w.isNumber() && ((w.number() % 3) == 0), 2); case 43: // 1-18, odds of 1 return m(w.isNumber() && (w.number() <= 18), 1); case 44: // 19-36, odds of 1 return m(w.isNumber() && (w.number() > 18), 1); case 45: // even, odds of 1 return m(w.isNumber() && ((w.number() %2) == 0), 1); case 46: // odd, odds of 1 return m(w.isNumber() && ((w.number() %2) == 1), 1); case 47: // red, odds of 1 return m(w.isNumber() && (w.color() == Wheel.BLACK), 1); case 48: // black, odds of 1 return m(w.isNumber() && (w.color() == Wheel.RED), 1); case 49: // single zero, odds of 35 return m(w.value().equals("0"), 35); case 50: // double zero, odds of 35 return m(w.value().equals("00"), 35); } throw new RuntimeException("Program Error - invalid bet"); } }