From 79ee129fc0d36ad10bceb942262f2842419c030c Mon Sep 17 00:00:00 2001 From: bjculkin Date: Mon, 27 Feb 2017 10:08:50 -0500 Subject: Pacakge reorganization --- dice-lang/src/bjc/dicelang/v1/Die.java | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 dice-lang/src/bjc/dicelang/v1/Die.java (limited to 'dice-lang/src/bjc/dicelang/v1/Die.java') diff --git a/dice-lang/src/bjc/dicelang/v1/Die.java b/dice-lang/src/bjc/dicelang/v1/Die.java new file mode 100644 index 0000000..14c7a83 --- /dev/null +++ b/dice-lang/src/bjc/dicelang/v1/Die.java @@ -0,0 +1,61 @@ +package bjc.dicelang.v1; + +import java.util.Random; + +/** + * A single polyhedral dice + * + * @author ben + * + */ +public class Die implements IDiceExpression { + /* + * Random # gen to use for dice + */ + private static Random rng = new Random(); + + /* + * Number of sides this die has + */ + private int nSides; + + /** + * Create a die with the specified number of sides + * + * @param nSides + * The number of sides this dice has + */ + public Die(int nSides) { + if (nSides < 1) { + throw new UnsupportedOperationException( + "Dice with less than 1 side are not supported"); + } + + this.nSides = nSides; + } + + @Override + public boolean canOptimize() { + return nSides == 1; + } + + @Override + public int optimize() { + if (nSides != 1) { + throw new UnsupportedOperationException( + "Can't optimize " + nSides + "-sided dice"); + } + + return 1; + } + + @Override + public int roll() { + return rng.nextInt(nSides) + 1; + } + + @Override + public String toString() { + return "d" + nSides; + } +} -- cgit v1.2.3