Implemented counting of identical stone pairs

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@275 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Jannis Harder 2011-05-25 17:27:19 +02:00
parent 5e855398b9
commit 656bfe905b

View file

@ -104,10 +104,18 @@ public class Hand extends StoneTray<Stone> implements IHand {
@Override
public boolean isInitialMeldPossible() {
Pair<TreeMap<Pair<Integer, StoneColor>, Integer>, Integer> stoneCounts = countStones();
return findSetsWithTotalPoints(settings.getInitialMeldThreshold(),
stoneCounts.getFirst(), stoneCounts.getSecond());
}
private Pair<TreeMap<Pair<Integer, StoneColor>, Integer>, Integer> countStones() {
int jokerCount = 0;
TreeMap<Pair<Integer, StoneColor>, Integer> stoneCounts = new TreeMap<Pair<Integer, StoneColor>, Integer>(
comparator);
for (Pair<Stone, Position> entry : this) {
if (entry.getFirst().isJoker()) {
jokerCount++;
@ -119,9 +127,7 @@ public class Hand extends StoneTray<Stone> implements IHand {
incrementStoneCount(stoneCounts, key);
}
}
return findSetsWithTotalPoints(settings.getInitialMeldThreshold(),
stoneCounts, jokerCount);
return new Pair<TreeMap<Pair<Integer, StoneColor>, Integer>, Integer>(stoneCounts, jokerCount);
}
private void incrementStoneCount(
@ -264,7 +270,13 @@ public class Hand extends StoneTray<Stone> implements IHand {
@Override
public int getIdenticalStoneCount() {
// TODO Auto-generated method stub
return 0;
Pair<TreeMap<Pair<Integer, StoneColor>, Integer>, Integer> stoneCounts = countStones();
int pairCount = 0;
for(int count : stoneCounts.getFirst().values()) {
pairCount += count / 2;
}
return pairCount;
}
}