Fixed metrics in AI code
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@515 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
a33b0a22ac
commit
1ba3c97583
1 changed files with 15 additions and 35 deletions
|
@ -448,7 +448,8 @@ public class TurnLogic {
|
|||
|
||||
checkGroupRunExclusive();
|
||||
|
||||
changed |= checkJoker();
|
||||
changed |= checkJokerColor();
|
||||
changed |= checkJokerValue();
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
@ -529,7 +530,7 @@ public class TurnLogic {
|
|||
}
|
||||
}
|
||||
|
||||
private boolean checkJoker() {
|
||||
private boolean checkJokerValue() {
|
||||
boolean changed = false;
|
||||
if (this.value == null) {
|
||||
if (isSingleNonNullSet(leftGroup)) {
|
||||
|
@ -550,6 +551,11 @@ public class TurnLogic {
|
|||
}
|
||||
changed |= this.value != null;
|
||||
}
|
||||
return changed;
|
||||
}
|
||||
|
||||
private boolean checkJokerColor() {
|
||||
boolean changed = false;
|
||||
if (this.color == null) {
|
||||
if (isSingleNonNullSet(leftRun)) {
|
||||
this.color = top.stones.get(leftRun.iterator().next()).color;
|
||||
|
@ -558,7 +564,6 @@ public class TurnLogic {
|
|||
}
|
||||
changed |= this.color != null;
|
||||
}
|
||||
|
||||
return changed;
|
||||
}
|
||||
|
||||
|
@ -593,11 +598,6 @@ public class TurnLogic {
|
|||
return (double) value;
|
||||
}
|
||||
|
||||
public int getSize() {
|
||||
return leftGroup.size() + rightGroup.size() + leftRun.size()
|
||||
+ rightRun.size();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public boolean needsJoker(boolean side) {
|
||||
if (onTable != Boolean.TRUE) {
|
||||
|
@ -681,17 +681,11 @@ public class TurnLogic {
|
|||
}
|
||||
});
|
||||
|
||||
System.out.println("---");
|
||||
ArrayList<Stone> handStones2 = new ArrayList<Stone>();
|
||||
int i = 0;
|
||||
for (Pair<Stone, Boolean> pair : sortedStones) {
|
||||
top.add(new StoneState(i++, pair.getFirst(), pair.getSecond()));
|
||||
inputStones.add(pair.getFirst());
|
||||
if (!pair.getSecond()) {
|
||||
handStones2.add(pair.getFirst());
|
||||
}
|
||||
}
|
||||
System.out.println(handStones2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -807,44 +801,25 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branch() throws Contradiction {
|
||||
|
||||
ArrayList<Integer> indices = new ArrayList<Integer>();
|
||||
for (int i = 0; i < stoneCount; i++) {
|
||||
indices.add(i);
|
||||
}
|
||||
Collections.sort(indices, new Comparator<Integer>() {
|
||||
@Override
|
||||
public int compare(Integer o1, Integer o2) {
|
||||
Integer size1 = top.stones.get(o1).getSize();
|
||||
Integer size2 = top.stones.get(o2).getSize();
|
||||
return size1.compareTo(size2);
|
||||
}
|
||||
});
|
||||
|
||||
for (int i = 0; i < stoneCount; i++) {
|
||||
StoneState stone = top.stones.get(i);
|
||||
if (stone.leftRun.size() > 1) {
|
||||
replace();
|
||||
branchLeftRun(i, stone);
|
||||
return;
|
||||
}
|
||||
if (stone.rightRun.size() > 1) {
|
||||
replace();
|
||||
branchRightRun(i, stone);
|
||||
return;
|
||||
}
|
||||
if (stone.leftGroup.size() > 1) {
|
||||
replace();
|
||||
branchLeftGroup(i, stone);
|
||||
return;
|
||||
}
|
||||
if (stone.rightGroup.size() > 1) {
|
||||
replace();
|
||||
branchRightGroup(i, stone);
|
||||
return;
|
||||
}
|
||||
if (stone.onTable == null) {
|
||||
replace();
|
||||
branchOnHand(i);
|
||||
return;
|
||||
}
|
||||
|
@ -852,12 +827,10 @@ public class TurnLogic {
|
|||
for (int i = 0; i < stoneCount; i++) {
|
||||
StoneState stone = top.stones.get(i);
|
||||
if (stone.color == null) {
|
||||
replace();
|
||||
branchColor(i);
|
||||
return;
|
||||
}
|
||||
if (stone.value == null) {
|
||||
replace();
|
||||
branchValue(i);
|
||||
return;
|
||||
}
|
||||
|
@ -867,6 +840,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchValue(int i) {
|
||||
replace();
|
||||
for (int value = 1; value <= settings.getHighestValue(); value++) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).value = value;
|
||||
|
@ -876,6 +850,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchColor(int i) {
|
||||
replace();
|
||||
for (StoneColor color : stoneColors) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).color = color;
|
||||
|
@ -885,6 +860,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchRightGroup(int i, StoneState stone) {
|
||||
replace();
|
||||
for (Integer id : stone.rightGroup) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).rightGroup.clear();
|
||||
|
@ -895,6 +871,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchLeftGroup(int i, StoneState stone) {
|
||||
replace();
|
||||
for (Integer id : stone.leftGroup) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).leftGroup.clear();
|
||||
|
@ -905,6 +882,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchRightRun(int i, StoneState stone) {
|
||||
replace();
|
||||
for (Integer id : stone.rightRun) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).rightRun.clear();
|
||||
|
@ -915,6 +893,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchLeftRun(int i, StoneState stone) {
|
||||
replace();
|
||||
for (Integer id : stone.leftRun) {
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).leftRun.clear();
|
||||
|
@ -925,6 +904,7 @@ public class TurnLogic {
|
|||
}
|
||||
|
||||
private void branchOnHand(int i) {
|
||||
replace();
|
||||
State newState = new State(top);
|
||||
newState.stones.get(i).onTable = true;
|
||||
newState.changedStones.add(i);
|
||||
|
|
Reference in a new issue