summaryrefslogtreecommitdiffstats
path: root/src/jrummikub/model
diff options
context:
space:
mode:
Diffstat (limited to 'src/jrummikub/model')
-rw-r--r--src/jrummikub/model/RoundState.java2
-rw-r--r--src/jrummikub/model/StoneHeap.java23
2 files changed, 20 insertions, 5 deletions
diff --git a/src/jrummikub/model/RoundState.java b/src/jrummikub/model/RoundState.java
index 65bc120..9f1f7be 100644
--- a/src/jrummikub/model/RoundState.java
+++ b/src/jrummikub/model/RoundState.java
@@ -33,7 +33,7 @@ public class RoundState implements IRoundState {
turnNumber = 1-gameSettings.getPlayerList().size();
activePlayer = 0;
- gameHeap = new StoneHeap();
+ gameHeap = new StoneHeap(gameSettings);
}
@Override
diff --git a/src/jrummikub/model/StoneHeap.java b/src/jrummikub/model/StoneHeap.java
index 048f6e7..4ccb427 100644
--- a/src/jrummikub/model/StoneHeap.java
+++ b/src/jrummikub/model/StoneHeap.java
@@ -1,6 +1,7 @@
package jrummikub.model;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.EnumSet;
import java.util.List;
@@ -14,9 +15,9 @@ import java.util.Random;
public class StoneHeap {
List<Stone> heap;
private Random generator = new Random();
-
+
/** Creates 106 Stones according to standard rules */
- public StoneHeap() {
+ public StoneHeap(GameSettings gameSettings) {
heap = new ArrayList<Stone>();
for (int i = 1; i <= 13; i++) {
for (int j = 0; j < 2; j++) {
@@ -26,8 +27,22 @@ public class StoneHeap {
}
}
// Joker
- heap.add(new Stone(StoneColor.BLACK));
- heap.add(new Stone(StoneColor.RED));
+
+ ArrayList<StoneColor> jokerColors = new ArrayList<StoneColor>(Arrays.asList(StoneColor.values()));
+
+ StoneColor temp = jokerColors.get(0);
+ jokerColors.set(0, jokerColors.get(2));
+ jokerColors.set(2, temp);
+
+ int jokersLeft = gameSettings.getJokerNumber();
+ done : while(true) {
+ for (StoneColor c : jokerColors) {
+ if (jokersLeft == 0)
+ break done;
+ heap.add(new Stone(c));
+ jokersLeft--;
+ }
+ }
}
/**