diff options
Diffstat (limited to 'dice/src/main/java/bjc/dicelang/dicev2/PolyhedralDie.java')
| -rw-r--r-- | dice/src/main/java/bjc/dicelang/dicev2/PolyhedralDie.java | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/dice/src/main/java/bjc/dicelang/dicev2/PolyhedralDie.java b/dice/src/main/java/bjc/dicelang/dicev2/PolyhedralDie.java new file mode 100644 index 0000000..be78279 --- /dev/null +++ b/dice/src/main/java/bjc/dicelang/dicev2/PolyhedralDie.java @@ -0,0 +1,47 @@ +package bjc.dicelang.dicev2; + +import java.util.Random; + +public class PolyhedralDie extends Die { + public final int numDice; + public final int numSides; + + public PolyhedralDie(int numDice, int numSides) { + super(); + + this.numDice = numDice; + this.numSides = numSides; + } + + public PolyhedralDie(Random rnd, int numDice, int numSides) { + super(rnd); + + this.numDice = numDice; + this.numSides = numSides; + } + + public long[] roll() { + long[] res = new long[numDice]; + + for(int i = 0; i < numDice; i++) { + res[i] = rollSingle(); + } + + return res; + } + + public long rollSingle() { + /* nextInt is from 0 (inclusive) to numSides (exclusive) */ + return rng.nextInt(numSides) + 1; + } + + public boolean canOptimize() { + return numSides <= 1 || numDice == 0; + } + + public long optimize() { + if(numDice == 0 || numSides == 0) return 0; + + return numDice; + } +} |
