From 4a1a48e1fe41c43b983a4c616a13986d022b13e3 Mon Sep 17 00:00:00 2001 From: Arthur Bols Date: Sat, 19 May 2018 21:27:29 +0200 Subject: [PATCH] refactoring program --- OGP1718-Worms/src/Main.java | 23 ----------- OGP1718-Worms/src/worms/model/Program.java | 6 ++- ...ion.java => BinaryArgumentExpression.java} | 10 ++--- .../src/worms/programs/ProgramFactory.java | 38 ++++--------------- .../programs/UnaryArgumentExpression.java | 8 +--- .../src/worms/programs/UnaryExpression.java | 8 +--- 6 files changed, 18 insertions(+), 75 deletions(-) rename OGP1718-Worms/src/worms/programs/{ArgumentBinaryExpression.java => BinaryArgumentExpression.java} (53%) diff --git a/OGP1718-Worms/src/Main.java b/OGP1718-Worms/src/Main.java index 1b59305..865100d 100644 --- a/OGP1718-Worms/src/Main.java +++ b/OGP1718-Worms/src/Main.java @@ -21,28 +21,5 @@ public class Main { { false, false, false, false } }; public static void main(String[] args) { -// -// IFacade facade = new Facade(); -// World world = facade.createWorld(4.0, 4.0, passableMap); -// -// Worm worm = facade.createWorm(world, new double[] { 1, 1.5 }, Math.PI / 2, 0.5, "Test", null); -// System.out.println(world.isPassable(worm.getLocationArray(), worm.getRadius())); - - - Expression test = new Expression() { - @Override - public Object execute() { - return null; - } - }; - } - - - - private static Object l = false; - private static Object r = true; - - public static void test(BinaryOperator test) { - System.out.println(test.apply(l,r)); } } diff --git a/OGP1718-Worms/src/worms/model/Program.java b/OGP1718-Worms/src/worms/model/Program.java index f2d0623..ef66a42 100644 --- a/OGP1718-Worms/src/worms/model/Program.java +++ b/OGP1718-Worms/src/worms/model/Program.java @@ -196,7 +196,7 @@ public class Program { return ((ArgumentExpression) e).execute(worm.getWorld().getGameObjects()); } } else { - return e.execute(); + return e.execute(this); } throw new UnsupportedOperationException(); } @@ -212,4 +212,8 @@ public class Program { public void setWorm(Worm worm) { this.worm = worm; } + + public Map getVariables() { + return this.varMap; + } } diff --git a/OGP1718-Worms/src/worms/programs/ArgumentBinaryExpression.java b/OGP1718-Worms/src/worms/programs/BinaryArgumentExpression.java similarity index 53% rename from OGP1718-Worms/src/worms/programs/ArgumentBinaryExpression.java rename to OGP1718-Worms/src/worms/programs/BinaryArgumentExpression.java index 2297422..d6fbf67 100644 --- a/OGP1718-Worms/src/worms/programs/ArgumentBinaryExpression.java +++ b/OGP1718-Worms/src/worms/programs/BinaryArgumentExpression.java @@ -4,22 +4,18 @@ import worms.model.Program; import java.util.function.BiFunction; -public class ArgumentBinaryExpression implements Expression { +public class BinaryArgumentExpression implements Expression { private final Expression expression; private final BiFunction function; - ArgumentBinaryExpression(Expression expression, BiFunction function) { + BinaryArgumentExpression(Expression expression, BiFunction function) { this.expression = expression; this.function = function; } @Override public R execute(Program program) { - try { - return function.apply(expression.execute(program), program); - } catch (ClassCastException e) { - throw new IllegalArgumentException(); - } + return function.apply(expression.execute(program), program); } } diff --git a/OGP1718-Worms/src/worms/programs/ProgramFactory.java b/OGP1718-Worms/src/worms/programs/ProgramFactory.java index 5243810..f73df94 100644 --- a/OGP1718-Worms/src/worms/programs/ProgramFactory.java +++ b/OGP1718-Worms/src/worms/programs/ProgramFactory.java @@ -7,9 +7,7 @@ import worms.util.ModelException; import worms.util.MustNotImplementException; import java.util.Comparator; -import java.util.HashMap; import java.util.List; -import java.util.Set; public class ProgramFactory implements IProgramFactory { /** @@ -197,12 +195,7 @@ public class ProgramFactory implements IProgramFactory>(ArgumentExpression.Type.VAR) { - @Override - public Object execute(HashMap map) { - return map.get(variableName).execute(); - } - }; + return (Expression) program -> program.getVariables().get(variableName).execute(program); } /** @@ -213,12 +206,7 @@ public class ProgramFactory implements IProgramFactory value; } /** @@ -229,12 +217,7 @@ public class ProgramFactory implements IProgramFactory value; } /** @@ -244,12 +227,7 @@ public class ProgramFactory implements IProgramFactory null; } /** @@ -338,7 +316,7 @@ public class ProgramFactory implements IProgramFactory( + return new BinaryArgumentExpression( angleDelta, (a, p) -> p.getWorm() .getWorld() .getGameObjects() @@ -359,7 +337,7 @@ public class ProgramFactory implements IProgramFactory(entity, (w, p) -> w.getTeam().equals(p.getWorm().getTeam())); + return new BinaryArgumentExpression(entity, (w, p) -> w.getTeam().equals(p.getWorm().getTeam())); } /** @@ -372,7 +350,7 @@ public class ProgramFactory implements IProgramFactory(entity, (e, p) -> e.getDistance(p.getWorm()); + return new BinaryArgumentExpression(entity, (e, p) -> e.getDistance(p.getWorm())); } /** @@ -385,6 +363,6 @@ public class ProgramFactory implements IProgramFactory(entity, w -> w instanceof Worm); + return new UnaryExpression(entity, w -> w instanceof Worm); } } diff --git a/OGP1718-Worms/src/worms/programs/UnaryArgumentExpression.java b/OGP1718-Worms/src/worms/programs/UnaryArgumentExpression.java index 55933c7..13c4b2a 100644 --- a/OGP1718-Worms/src/worms/programs/UnaryArgumentExpression.java +++ b/OGP1718-Worms/src/worms/programs/UnaryArgumentExpression.java @@ -13,13 +13,7 @@ public class UnaryArgumentExpression implements Expression { } @Override - @SuppressWarnings("unchecked") public R execute(Program program) { - - try { - return function.apply(program); - } catch (ClassCastException e) { - throw new IllegalArgumentException(); - } + return function.apply(program); } } diff --git a/OGP1718-Worms/src/worms/programs/UnaryExpression.java b/OGP1718-Worms/src/worms/programs/UnaryExpression.java index 6e8abfc..0eac040 100644 --- a/OGP1718-Worms/src/worms/programs/UnaryExpression.java +++ b/OGP1718-Worms/src/worms/programs/UnaryExpression.java @@ -15,13 +15,7 @@ public class UnaryExpression implements Expression { } @Override - @SuppressWarnings("unchecked") public R execute(Program program) { - - try { - return function.apply( expression.execute(program)); - } catch (ClassCastException e) { - throw new IllegalArgumentException(); - } + return function.apply(expression.execute(program)); } }