diff --git a/api/Rule.java b/api/Rule.java index eb320e2..eac8ea8 100644 --- a/api/Rule.java +++ b/api/Rule.java @@ -1,13 +1,14 @@ package api; import game.Board; +import game.CellBoard; import game.GameState; import java.util.function.Function; -public class Rule { - Function condition; - public Rule(Function condition){ +public class Rule { + Function condition; + public Rule(Function condition){ this.condition = condition; } } diff --git a/api/RuleEngine.java b/api/RuleEngine.java index 14f10f9..87a5c38 100644 --- a/api/RuleEngine.java +++ b/api/RuleEngine.java @@ -16,7 +16,7 @@ public RuleEngine(){ public GameState getState(Board board){ if(board instanceof TicTacToeBoard board1) { - for(Rule rule: ruleMap.get(TicTacToeBoard.class.getName())){ + for(Rule rule: ruleMap.get(TicTacToeBoard.class.getName())){ GameState gameState = rule.condition.apply(board1); if(gameState.isOver()){ return gameState; diff --git a/boards/TicTacToeBoard.java b/boards/TicTacToeBoard.java index ac20e3d..7398f9e 100644 --- a/boards/TicTacToeBoard.java +++ b/boards/TicTacToeBoard.java @@ -2,16 +2,13 @@ import api.Rule; import api.RuleSet; -import game.Board; -import game.Cell; -import game.GameState; -import game.Move; +import game.*; import java.util.Arrays; import java.util.function.BiFunction; import java.util.function.Function; -public class TicTacToeBoard implements Board, Cloneable { +public class TicTacToeBoard implements CellBoard, Cloneable { String[][] cells = new String[3][3]; public TicTacToeBoard() { @@ -36,11 +33,11 @@ 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)))); - rules.add(new Rule<> (TicTacToeBoard::countMoves)); + 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; } @Override @@ -67,7 +64,7 @@ public TicTacToeBoard clone() { } - public static GameState countMoves(TicTacToeBoard board1){ + public static GameState countMoves(CellBoard board1){ int count=0; GameState gameState = new GameState(false, "-"); for (int i = 0; i < 3; i++) { diff --git a/game/CellBoard.java b/game/CellBoard.java new file mode 100644 index 0000000..7ae71e9 --- /dev/null +++ b/game/CellBoard.java @@ -0,0 +1,5 @@ +package game; + +public interface CellBoard extends Board{ + String getSymbol(int i, int j); +}