summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Harder <harder@informatik.uni-luebeck.de>2011-05-25 17:27:19 +0200
committerJannis Harder <harder@informatik.uni-luebeck.de>2011-05-25 17:27:19 +0200
commit656bfe905b723b13ac870c551c513c726e9cbe82 (patch)
treef30bfde49822c48fd26e03f7b70649eb33a1081f
parent5e855398b9f7168dbc5c5827da19c7fcf4605b5b (diff)
downloadJRummikub-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.java24
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;
}
}