diff options
Diffstat (limited to 'src/jrummikub/control/turn')
-rw-r--r-- | src/jrummikub/control/turn/AIControl.java | 71 |
1 files changed, 42 insertions, 29 deletions
diff --git a/src/jrummikub/control/turn/AIControl.java b/src/jrummikub/control/turn/AIControl.java index 324c8d7..7784d7f 100644 --- a/src/jrummikub/control/turn/AIControl.java +++ b/src/jrummikub/control/turn/AIControl.java @@ -85,17 +85,9 @@ public class AIControl extends AbstractTurnControl { List<Stone> tableStones = new ArrayList<Stone>(); List<Stone> handStones = new ArrayList<Stone>(); - for (Pair<Stone, Position> entry : turnInfo.getHand()) { - handStones.add(entry.getFirst()); - } + addHandStones(handStones); - if (turnInfo.getLaidOut()) { - for (Pair<StoneSet, Position> entry : turnInfo.getTable()) { - for (Stone stone : entry.getFirst()) { - tableStones.add(stone); - } - } - } + addTableStones(tableStones); logic = new TurnLogic(settings, tableStones, handStones); @@ -133,6 +125,22 @@ public class AIControl extends AbstractTurnControl { } + private void addHandStones(List<Stone> handStones) { + for (Pair<Stone, Position> entry : turnInfo.getHand()) { + handStones.add(entry.getFirst()); + } + } + + private void addTableStones(List<Stone> tableStones) { + if (turnInfo.getLaidOut()) { + for (Pair<StoneSet, Position> entry : turnInfo.getTable()) { + for (Stone stone : entry.getFirst()) { + tableStones.add(stone); + } + } + } + } + private void executeTurn() { if (turnDone) { return; @@ -143,25 +151,7 @@ public class AIControl extends AbstractTurnControl { if (result != null) { if (turnInfo.getLaidOut()) { - outerLoop: for (Iterator<Pair<StoneSet, Position>> it = turnInfo - .getTable().iterator(); it.hasNext();) { - Pair<StoneSet, Position> pair = it.next(); - setSearch: for (Iterator<StoneSet> it2 = result.iterator(); it2 - .hasNext();) { - StoneSet set = it2.next(); - if (set.getSize() != pair.getFirst().getSize()) { - continue; - } - for (int i = 0; i < set.getSize(); i++) { - if (set.get(i) != pair.getFirst().get(i)) { - continue setSearch; - } - } - it2.remove(); - continue outerLoop; - } - it.remove(); - } + doNotMoveExistingSets(result); } for (StoneSet set : result) { @@ -178,6 +168,29 @@ public class AIControl extends AbstractTurnControl { emitEndOfTurn(); } + private void doNotMoveExistingSets(List<StoneSet> result) { + + outerLoop: for (Iterator<Pair<StoneSet, Position>> it = turnInfo + .getTable().iterator(); it.hasNext();) { + Pair<StoneSet, Position> pair = it.next(); + setSearch: for (Iterator<StoneSet> it2 = result.iterator(); it2 + .hasNext();) { + StoneSet set = it2.next(); + if (set.getSize() != pair.getFirst().getSize()) { + continue; + } + for (int i = 0; i < set.getSize(); i++) { + if (set.get(i) != pair.getFirst().get(i)) { + continue setSearch; + } + } + it2.remove(); + continue outerLoop; + } + it.remove(); + } + } + /** * Get the factory for the base AI control * |