diff --git a/api/RuleEngine.java b/api/RuleEngine.java index 1e8797d..33b8565 100644 --- a/api/RuleEngine.java +++ b/api/RuleEngine.java @@ -4,15 +4,10 @@ import game.Board; import game.GameState; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; -import java.util.function.BiFunction; -import java.util.function.Function; - public class RuleEngine { - Map> ruleMap = new HashMap<>(); + Map ruleMap = new HashMap<>(); public RuleEngine(){ ruleMap.put(TicTacToeBoard.class.getName(),TicTacToeBoard.getRules()); @@ -20,8 +15,7 @@ public RuleEngine(){ public GameState getState(Board board){ if(board instanceof TicTacToeBoard board1) { - RuleSet rules = (RuleSet) ruleMap.get(TicTacToeBoard.class.getName()); - for(Rule rule: rules){ + for(Rule rule: ruleMap.get(TicTacToeBoard.class.getName())){ GameState gameState = rule.condition.apply(board1); if(gameState.isOver()){ return gameState; diff --git a/api/RuleSet.java b/api/RuleSet.java index 4ae7b8e..37a7cba 100644 --- a/api/RuleSet.java +++ b/api/RuleSet.java @@ -1,24 +1,20 @@ package api; -import game.Board; +import java.util.*; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -public class RuleSet implements Iterable>{ - List> rules = new ArrayList<>(); +public class RuleSet implements Iterable{ + Set ruleList = new HashSet<>(); /** * Returns an iterator over elements of type {@code T}. * * @return an Iterator. */ @Override - public Iterator> iterator() { - return rules.iterator(); + public Iterator iterator() { + return ruleList.iterator(); } - public void add (Rule rule){ - rules.add(rule); + public void add (Rule rule){ + ruleList.add(rule); } } diff --git a/boards/TicTacToeBoard.java b/boards/TicTacToeBoard.java index 5805bb8..ac20e3d 100644 --- a/boards/TicTacToeBoard.java +++ b/boards/TicTacToeBoard.java @@ -34,12 +34,12 @@ public void setCell(Cell cell, String symbol) { } } - public static RuleSet getRules(){ - RuleSet rules = new RuleSet<>(); - rules.add(new Rule<>((board)->outerTraversal(board::getSymbol))); - rules.add(new Rule<> ((board)->outerTraversal((i,j)-> board.getSymbol(j,i)))); - rules.add(new Rule<> ((board)->traverse((i)-> board.getSymbol(i,i)))); - rules.add(new Rule<> ((board)->traverse((i)-> board.getSymbol(i,2-i)))); + public static RuleSet getRules(){ + RuleSet rules = new RuleSet(); + rules.add(new Rule((board)->outerTraversal(board::getSymbol))); + rules.add(new Rule ((board)->outerTraversal((i,j)-> board.getSymbol(j,i)))); + rules.add(new Rule ((board)->traverse((i)-> board.getSymbol(i,i)))); + rules.add(new Rule ((board)->traverse((i)-> board.getSymbol(i,2-i)))); rules.add(new Rule<> (TicTacToeBoard::countMoves)); return rules; } diff --git a/game/Board.java b/game/Board.java index 4b3416a..1f232df 100644 --- a/game/Board.java +++ b/game/Board.java @@ -1,6 +1,5 @@ package game; public interface Board { - public abstract void move(Move move); -// public abstract Board copy(); + void move(Move move); }