summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/control/turn
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/control/turn')
-rw-r--r--src/jrummikub/control/turn/AIControl.java71
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
*