From 635d3150e3e85c01b777ff165e21fa8965d58440 Mon Sep 17 00:00:00 2001 From: EVE Date: Tue, 14 Mar 2017 12:08:11 -0400 Subject: Cleanup --- dice-lang/src/bjc/dicelang/dice/CompoundDie.java | 4 +- .../src/bjc/dicelang/dice/CompoundingDie.java | 13 ++-- dice-lang/src/bjc/dicelang/dice/DiceBox.java | 74 +++++++++++----------- dice-lang/src/bjc/dicelang/dice/Die.java | 2 +- dice-lang/src/bjc/dicelang/dice/DieExpression.java | 10 +-- dice-lang/src/bjc/dicelang/dice/ExplodingDice.java | 18 +++--- dice-lang/src/bjc/dicelang/dice/FudgeDie.java | 7 +- dice-lang/src/bjc/dicelang/dice/MathDie.java | 14 ++-- dice-lang/src/bjc/dicelang/dice/ScalarDie.java | 5 ++ dice-lang/src/bjc/dicelang/dice/SimpleDie.java | 21 +++--- dice-lang/src/bjc/dicelang/dice/SimpleDieList.java | 17 +++-- 11 files changed, 103 insertions(+), 82 deletions(-) (limited to 'dice-lang/src/bjc/dicelang/dice') diff --git a/dice-lang/src/bjc/dicelang/dice/CompoundDie.java b/dice-lang/src/bjc/dicelang/dice/CompoundDie.java index d4bb4b5..adbd102 100644 --- a/dice-lang/src/bjc/dicelang/dice/CompoundDie.java +++ b/dice-lang/src/bjc/dicelang/dice/CompoundDie.java @@ -9,8 +9,8 @@ public class CompoundDie implements Die { /* * The dice that form this die */ - private Die left; - private Die right; + private Die left; + private Die right; /** * Create a new compound die. diff --git a/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java b/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java index 28badf4..a25696a 100644 --- a/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java +++ b/dice-lang/src/bjc/dicelang/dice/CompoundingDie.java @@ -13,8 +13,8 @@ import java.util.function.Predicate; public class CompoundingDie implements Die { private Die source; - private Predicate compoundOn; - private String compoundPattern; + private Predicate compoundOn; + private String compoundPattern; /** * Create a new compounding die with no pattern. @@ -61,7 +61,7 @@ public class CompoundingDie implements Die { long res = source.roll(); long oldRes = res; - while (compoundOn.test(oldRes)) { + while(compoundOn.test(oldRes)) { oldRes = source.rollSingle(); res += oldRes; @@ -78,7 +78,7 @@ public class CompoundingDie implements Die { long res = source.rollSingle(); long oldRes = res; - while (compoundOn.test(oldRes)) { + while(compoundOn.test(oldRes)) { oldRes = source.rollSingle(); res += oldRes; @@ -89,10 +89,9 @@ public class CompoundingDie implements Die { @Override public String toString() { - if (compoundPattern == null) { + if(compoundPattern == null) return source + "!!"; - } else { + else return source + "!!" + compoundPattern; - } } } diff --git a/dice-lang/src/bjc/dicelang/dice/DiceBox.java b/dice-lang/src/bjc/dicelang/dice/DiceBox.java index 85edc77..7a7e7c4 100644 --- a/dice-lang/src/bjc/dicelang/dice/DiceBox.java +++ b/dice-lang/src/bjc/dicelang/dice/DiceBox.java @@ -21,24 +21,23 @@ public class DiceBox { /* * Only bother will valid expressions */ - if (!isValidExpression(exp)) - return null; + if(!isValidExpression(exp)) return null; - if (scalarDiePattern.matcher(exp).matches()) { + if(scalarDiePattern.matcher(exp).matches()) { /* * Parse scalar die */ Die scal = new ScalarDie(Long.parseLong(exp.substring(0, exp.indexOf('s')))); return new DieExpression(scal); - } else if (simpleDiePattern.matcher(exp).matches()) { + } else if(simpleDiePattern.matcher(exp).matches()) { /* * Parse simple die groups */ String[] dieParts = exp.split("d"); long right = Long.parseLong(dieParts[1]); - if (dieParts[0].equals("")) { + if(dieParts[0].equals("")) { /* * Handle short-form expressions. */ @@ -48,14 +47,14 @@ public class DiceBox { Die scal = new SimpleDie(Long.parseLong(dieParts[0]), right); return new DieExpression(scal); } - } else if (fudgeDiePattern.matcher(exp).matches()) { + } else if(fudgeDiePattern.matcher(exp).matches()) { /* * Parse fudge dice */ String nDice = exp.substring(0, exp.indexOf('d')); return new DieExpression(new FudgeDie(Long.parseLong(nDice))); - } else if (compoundDiePattern.matcher(exp).matches()) { + } else if(compoundDiePattern.matcher(exp).matches()) { /* * Parse compound die expressions */ @@ -65,7 +64,7 @@ public class DiceBox { DieExpression right = parseExpression(dieParts[1]); return new DieExpression(new CompoundDie(left.scalar, right.scalar)); - } else if (compoundingDiePattern.matcher(exp).matches()) { + } else if(compoundingDiePattern.matcher(exp).matches()) { /* * Parse compounding die expressions */ @@ -76,7 +75,7 @@ public class DiceBox { Die scal = new CompoundingDie(left.scalar, right, dieParts[1]); return new DieExpression(scal); - } else if (explodingDiePattern.matcher(exp).matches()) { + } else if(explodingDiePattern.matcher(exp).matches()) { /* * Parse exploding die expressions */ @@ -87,7 +86,7 @@ public class DiceBox { DieList lst = new ExplodingDice(left.scalar, right, dieParts[1], false); return new DieExpression(lst); - } else if (penetratingDiePattern.matcher(exp).matches()) { + } else if(penetratingDiePattern.matcher(exp).matches()) { /* * Parse penetrating die expressions */ @@ -98,7 +97,7 @@ public class DiceBox { DieList lst = new ExplodingDice(left.scalar, right, dieParts[1], true); return new DieExpression(lst); - } else if (diceListPattern.matcher(exp).matches()) { + } else if(diceListPattern.matcher(exp).matches()) { /* * Parse simple die lists */ @@ -128,16 +127,16 @@ public class DiceBox { * * This is just a number. */ - private static final String scalarDie = "[\\+\\-]?\\d+sd"; - private static final Pattern scalarDiePattern = Pattern.compile("\\A" + scalarDie + "\\Z"); + private static final String scalarDie = "[\\+\\-]?\\d+sd"; + private static final Pattern scalarDiePattern = Pattern.compile("\\A" + scalarDie + "\\Z"); /* * Defines a simple die. * * This is a group of one or more dice of the same size. */ - private static final String simpleDie = "(?:\\d+)?d\\d+"; - private static final Pattern simpleDiePattern = Pattern.compile("\\A" + simpleDie + "\\Z"); + private static final String simpleDie = "(?:\\d+)?d\\d+"; + private static final Pattern simpleDiePattern = Pattern.compile("\\A" + simpleDie + "\\Z"); /* * Defines a fudge die. @@ -145,16 +144,16 @@ public class DiceBox { * This is like a simple die, but all the die give -1, 0, or 1 as * results. */ - private static final String fudgeDie = "(?:\\d+)?dF"; - private static final Pattern fudgeDiePattern = Pattern.compile("\\A" + fudgeDie + "\\Z"); + private static final String fudgeDie = "(?:\\d+)?dF"; + private static final Pattern fudgeDiePattern = Pattern.compile("\\A" + fudgeDie + "\\Z"); /* * Defines a compound die. * * This is like using two d10's to simulate a d100 */ - private static final String compoundDie = simpleDie + "c(?:(?:" + simpleDie + ")|(?:\\d+))"; - private static final Pattern compoundDiePattern = Pattern.compile("\\A" + compoundDie + "\\Z"); + private static final String compoundDie = simpleDie + "c(?:(?:" + simpleDie + ")|(?:\\d+))"; + private static final Pattern compoundDiePattern = Pattern.compile("\\A" + compoundDie + "\\Z"); /* * Defines a compound group. @@ -170,8 +169,8 @@ public class DiceBox { * This is like an exploding die, but is a single die, not a group of * them. */ - private static final String compoundingDie = compoundGroup + "!!" + comparePoint; - private static final Pattern compoundingDiePattern = Pattern.compile("\\A" + compoundingDie + "\\Z"); + private static final String compoundingDie = compoundGroup + "!!" + comparePoint; + private static final Pattern compoundingDiePattern = Pattern.compile("\\A" + compoundingDie + "\\Z"); /* * Defines an exploding die. @@ -179,8 +178,8 @@ public class DiceBox { * This is a die that you reroll the component of if it meets a certain * condition. */ - private static final String explodingDie = compoundGroup + "!" + comparePoint; - private static final Pattern explodingDiePattern = Pattern.compile("\\A" + explodingDie + "\\Z"); + private static final String explodingDie = compoundGroup + "!" + comparePoint; + private static final Pattern explodingDiePattern = Pattern.compile("\\A" + explodingDie + "\\Z"); /* * Defines a penetrating die. @@ -188,16 +187,16 @@ public class DiceBox { * This is like an exploding die, but the exploded result gets a -1 * penalty. */ - private static final String penetratingDie = compoundGroup + "!" + comparePoint; - private static final Pattern penetratingDiePattern = Pattern.compile("\\A" + penetratingDie + "\\Z"); + private static final String penetratingDie = compoundGroup + "!" + comparePoint; + private static final Pattern penetratingDiePattern = Pattern.compile("\\A" + penetratingDie + "\\Z"); /* * Defines a die list. * * This is an array of dice of the specified size */ - private static final String diceList = compoundGroup + "dl" + compoundGroup; - private static final Pattern diceListPattern = Pattern.compile("\\A" + diceList + "\\Z"); + private static final String diceList = compoundGroup + "dl" + compoundGroup; + private static final Pattern diceListPattern = Pattern.compile("\\A" + diceList + "\\Z"); /** * Check if a given string is a valid die expression. @@ -208,25 +207,24 @@ public class DiceBox { * @return Whether or not the string is a valid command */ public static boolean isValidExpression(String exp) { - if (scalarDiePattern.matcher(exp).matches()) { + if(scalarDiePattern.matcher(exp).matches()) return true; - } else if (simpleDiePattern.matcher(exp).matches()) { + else if(simpleDiePattern.matcher(exp).matches()) return true; - } else if (fudgeDiePattern.matcher(exp).matches()) { + else if(fudgeDiePattern.matcher(exp).matches()) return true; - } else if (compoundDiePattern.matcher(exp).matches()) { + else if(compoundDiePattern.matcher(exp).matches()) return true; - } else if (compoundingDiePattern.matcher(exp).matches()) { + else if(compoundingDiePattern.matcher(exp).matches()) return true; - } else if (explodingDiePattern.matcher(exp).matches()) { + else if(explodingDiePattern.matcher(exp).matches()) return true; - } else if (penetratingDiePattern.matcher(exp).matches()) { + else if(penetratingDiePattern.matcher(exp).matches()) return true; - } else if (diceListPattern.matcher(exp).matches()) { + else if(diceListPattern.matcher(exp).matches()) return true; - } else { + else return false; - } } /* @@ -235,7 +233,7 @@ public class DiceBox { private static Predicate deriveCond(String patt) { long num = Long.parseLong(patt.substring(1)); - switch (patt.charAt(0)) { + switch(patt.charAt(0)) { case '<': return (roll) -> roll < num; case '=': diff --git a/dice-lang/src/bjc/dicelang/dice/Die.java b/dice-lang/src/bjc/dicelang/dice/Die.java index 0ce7d3b..630e8b9 100644 --- a/dice-lang/src/bjc/dicelang/dice/Die.java +++ b/dice-lang/src/bjc/dicelang/dice/Die.java @@ -2,7 +2,7 @@ package bjc.dicelang.dice; /** * Represents one or more dice that produce a scalar result. - * + * * @author Ben Culkin */ public interface Die { diff --git a/dice-lang/src/bjc/dicelang/dice/DieExpression.java b/dice-lang/src/bjc/dicelang/dice/DieExpression.java index 95e7dae..576660d 100644 --- a/dice-lang/src/bjc/dicelang/dice/DieExpression.java +++ b/dice-lang/src/bjc/dicelang/dice/DieExpression.java @@ -4,7 +4,7 @@ import java.util.Arrays; /** * Represents either a die or a die list - * + * * @author Ben Culkin */ public class DieExpression { @@ -16,11 +16,11 @@ public class DieExpression { /** * The scalar value in this expression, if there is one. */ - public Die scalar; + public Die scalar; /** * The list value in this expression, if there is one. */ - public DieList list; + public DieList list; /** * Create a scalar die expression. @@ -46,7 +46,7 @@ public class DieExpression { @Override public String toString() { - if (isList) + if(isList) return list.toString(); else return scalar.toString(); @@ -56,7 +56,7 @@ public class DieExpression { * Get the value of this expression as a string. */ public String value() { - if (isList) + if(isList) return Arrays.toString(list.roll()); else return Long.toString(scalar.roll()); diff --git a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java index eeafbd1..928ae25 100644 --- a/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java +++ b/dice-lang/src/bjc/dicelang/dice/ExplodingDice.java @@ -21,9 +21,9 @@ public class ExplodingDice implements DieList { /* * The conditions for exploding. */ - private Predicate explodeOn; - private String explodePattern; - private boolean explodePenetrates; + private Predicate explodeOn; + private String explodePattern; + private boolean explodePenetrates; /** * Create a new exploding die. @@ -89,11 +89,12 @@ public class ExplodingDice implements DieList { List resList = new LinkedList<>(); - while (explodeOn.test(oldRes)) { + while(explodeOn.test(oldRes)) { oldRes = source.rollSingle(); - if (explodePenetrates) + if(explodePenetrates) { oldRes -= 1; + } resList.add(oldRes); } @@ -101,7 +102,7 @@ public class ExplodingDice implements DieList { newRes[0] = res; int i = 1; - for (long rll : resList) { + for(long rll : resList) { newRes[i] = rll; i += 1; } @@ -111,10 +112,9 @@ public class ExplodingDice implements DieList { @Override public String toString() { - if (explodePattern == null) { + if(explodePattern == null) return source + (explodePenetrates ? "p" : "") + "!"; - } else { + else return source + (explodePenetrates ? "p" : "") + "!" + explodePattern; - } } } diff --git a/dice-lang/src/bjc/dicelang/dice/FudgeDie.java b/dice-lang/src/bjc/dicelang/dice/FudgeDie.java index 8061475..0385239 100644 --- a/dice-lang/src/bjc/dicelang/dice/FudgeDie.java +++ b/dice-lang/src/bjc/dicelang/dice/FudgeDie.java @@ -11,30 +11,35 @@ public class FudgeDie implements Die { numDice = nDice; } + @Override public boolean canOptimize() { return numDice.canOptimize() && numDice.optimize() == 0; } + @Override public long optimize() { return 0; } + @Override public long roll() { long res = 0; long nDice = numDice.roll(); - for (int i = 0; i < nDice; i++) { + for(int i = 0; i < nDice; i++) { res += rollSingle(); } return res; } + @Override public long rollSingle() { return DiceBox.rng.nextInt(3) - 1; } + @Override public String toString() { return numDice + "dF"; } diff --git a/dice-lang/src/bjc/dicelang/dice/MathDie.java b/dice-lang/src/bjc/dicelang/dice/MathDie.java index 2e82a6e..1d6b2fa 100644 --- a/dice-lang/src/bjc/dicelang/dice/MathDie.java +++ b/dice-lang/src/bjc/dicelang/dice/MathDie.java @@ -4,8 +4,9 @@ public class MathDie implements Die { public static enum MathOp { ADD, SUBTRACT, MULTIPLY; + @Override public String toString() { - switch (this) { + switch(this) { case ADD: return "+"; case SUBTRACT: @@ -20,8 +21,8 @@ public class MathDie implements Die { private MathDie.MathOp type; - private Die left; - private Die right; + private Die left; + private Die right; public MathDie(MathDie.MathOp op, Die lft, Die rght) { type = op; @@ -30,12 +31,13 @@ public class MathDie implements Die { right = rght; } + @Override public boolean canOptimize() { return left.canOptimize() && right.canOptimize(); } private long performOp(long lft, long rght) { - switch (type) { + switch(type) { case ADD: return lft + rght; case SUBTRACT: @@ -47,6 +49,7 @@ public class MathDie implements Die { } } + @Override public long optimize() { long lft = left.optimize(); long rght = right.optimize(); @@ -54,6 +57,7 @@ public class MathDie implements Die { return performOp(lft, rght); } + @Override public long roll() { long lft = left.roll(); long rght = right.roll(); @@ -61,6 +65,7 @@ public class MathDie implements Die { return performOp(lft, rght); } + @Override public long rollSingle() { long lft = left.rollSingle(); long rght = right.rollSingle(); @@ -68,6 +73,7 @@ public class MathDie implements Die { return performOp(lft, rght); } + @Override public String toString() { return left.toString() + " " + type.toString() + " " + right.toString(); } diff --git a/dice-lang/src/bjc/dicelang/dice/ScalarDie.java b/dice-lang/src/bjc/dicelang/dice/ScalarDie.java index ac64d1c..b9c3eba 100644 --- a/dice-lang/src/bjc/dicelang/dice/ScalarDie.java +++ b/dice-lang/src/bjc/dicelang/dice/ScalarDie.java @@ -7,22 +7,27 @@ public class ScalarDie implements Die { val = vl; } + @Override public boolean canOptimize() { return true; } + @Override public long optimize() { return val; } + @Override public long roll() { return val; } + @Override public long rollSingle() { return val; } + @Override public String toString() { return Long.toString(val); } diff --git a/dice-lang/src/bjc/dicelang/dice/SimpleDie.java b/dice-lang/src/bjc/dicelang/dice/SimpleDie.java index fc1aacd..f8dd945 100644 --- a/dice-lang/src/bjc/dicelang/dice/SimpleDie.java +++ b/dice-lang/src/bjc/dicelang/dice/SimpleDie.java @@ -1,8 +1,8 @@ package bjc.dicelang.dice; public class SimpleDie implements Die { - private Die numDice; - private Die diceSize; + private Die numDice; + private Die diceSize; public SimpleDie(long nDice, long size) { numDice = new ScalarDie(nDice); @@ -24,39 +24,44 @@ public class SimpleDie implements Die { diceSize = size; } + @Override public boolean canOptimize() { - if (diceSize.canOptimize() && (diceSize.optimize() <= 1)) { + if(diceSize.canOptimize() && diceSize.optimize() <= 1) return numDice.canOptimize(); - } else + else return false; } + @Override public long optimize() { long optSize = diceSize.optimize(); - if (optSize == 0) + if(optSize == 0) return 0; else return numDice.optimize(); } + @Override public long roll() { long total = 0; long nDice = numDice.roll(); long dSize = diceSize.roll(); - for (int i = 0; i < nDice; i++) { - total += (Math.abs(DiceBox.rng.nextLong()) % dSize) + 1; + for(int i = 0; i < nDice; i++) { + total += Math.abs(DiceBox.rng.nextLong()) % dSize + 1; } return total; } + @Override public long rollSingle() { - return (Math.abs(DiceBox.rng.nextLong()) % diceSize.roll()) + 1; + return Math.abs(DiceBox.rng.nextLong()) % diceSize.roll() + 1; } + @Override public String toString() { return numDice + "d" + diceSize; } diff --git a/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java b/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java index e166949..54f8e7a 100644 --- a/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java +++ b/dice-lang/src/bjc/dicelang/dice/SimpleDieList.java @@ -1,47 +1,50 @@ package bjc.dicelang.dice; public class SimpleDieList implements DieList { - private Die numDice; - private Die size; + private Die numDice; + private Die size; public SimpleDieList(Die nDice, Die sze) { numDice = nDice; size = sze; } + @Override public boolean canOptimize() { - if (size.canOptimize() && size.optimize() <= 1) { + if(size.canOptimize() && size.optimize() <= 1) return numDice.canOptimize(); - } else { + else return false; - } } + @Override public long[] optimize() { int sze = (int) numDice.optimize(); long res = size.optimize(); long[] ret = new long[sze]; - for (int i = 0; i < sze; i++) { + for(int i = 0; i < sze; i++) { ret[i] = res; } return ret; } + @Override public long[] roll() { int num = (int) numDice.roll(); long[] ret = new long[num]; - for (int i = 0; i < num; i++) { + for(int i = 0; i < num; i++) { ret[i] = size.roll(); } return ret; } + @Override public String toString() { return numDice.toString() + "dl" + size.toString(); } -- cgit v1.2.3