Files
basic-computer-games/75_Roulette/java/oop/Wheel.java
Martin Thoma e64fb6795c MAINT: Apply pre-commit
Remove byte-order-marker pre-commit check as there would be
many adjustments necessary
2022-03-05 09:29:23 +01:00

70 lines
1.8 KiB
Java

import java.util.Arrays;
import java.util.HashSet;
import java.util.Random;
// The roulette wheel
public class Wheel {
// List the numbers which are black
private HashSet<Integer> black = new HashSet<>(Arrays.asList(new Integer[] { 1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36 }));
private Random random = new Random();
private int pocket = 38;
public static final int ZERO=0;
public static final int BLACK=1;
public static final int RED=2;
// Set up a wheel. You call "spin", and then can check the result.
public Wheel() {
}
// Cheat / test mode
void setSeed(long l) {
random.setSeed(l);
}
// Spin the wheel onto a new random value.
public void spin() {
// keep spinning for a while
do {
try {
// 1 second delay. Where it stops, nobody knows
Thread.sleep(1000);
}
catch (InterruptedException e) {}
pocket = random.nextInt(38) + 1;
} while (random.nextInt(4) > 0); // keep spinning until it stops
}
// The string representation of the number; 1-36, 0, or 00
public String value() {
if (pocket == 37) return "0";
else if (pocket == 38) return "00";
else return String.valueOf(pocket);
}
// True if either 0 or 00 is hit
public boolean zero() {
return (pocket > 36);
}
// True if anything other than 0 or 00 is hit
public boolean isNumber() {
return (pocket < 37);
}
// The number rolled
public int number() {
if (zero()) return 0;
else return pocket;
}
// Either ZERO, BLACK, or RED
public int color() {
if (zero()) return ZERO;
else if (black.contains(pocket)) return BLACK;
else return RED;
}
}