diff options
author | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-25 17:27:19 +0200 |
---|---|---|
committer | Jannis Harder <harder@informatik.uni-luebeck.de> | 2011-05-25 17:27:19 +0200 |
commit | 656bfe905b723b13ac870c551c513c726e9cbe82 (patch) | |
tree | f30bfde49822c48fd26e03f7b70649eb33a1081f | |
parent | 5e855398b9f7168dbc5c5827da19c7fcf4605b5b (diff) | |
download | JRummikub-656bfe905b723b13ac870c551c513c726e9cbe82.tar JRummikub-656bfe905b723b13ac870c551c513c726e9cbe82.zip |
Implemented counting of identical stone pairs
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@275 72836036-5685-4462-b002-a69064685172
-rw-r--r-- | src/jrummikub/model/Hand.java | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/jrummikub/model/Hand.java b/src/jrummikub/model/Hand.java index 7294ced..6e30a32 100644 --- a/src/jrummikub/model/Hand.java +++ b/src/jrummikub/model/Hand.java @@ -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; } } |