summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mock/jrummikub/model/MockRoundState.java2
-rw-r--r--src/jrummikub/model/RoundState.java2
-rw-r--r--src/jrummikub/model/StoneHeap.java23
-rw-r--r--test/jrummikub/model/StoneHeapTest.java2
4 files changed, 22 insertions, 7 deletions
diff --git a/mock/jrummikub/model/MockRoundState.java b/mock/jrummikub/model/MockRoundState.java
index bf2f475..3f64d53 100644
--- a/mock/jrummikub/model/MockRoundState.java
+++ b/mock/jrummikub/model/MockRoundState.java
@@ -38,8 +38,8 @@ public class MockRoundState implements IRoundState {
players.add(new MockPlayer(new PlayerSettings("Player 4", Color.BLACK),
gameSettings));
activePlayer = 0;
- gameHeap = new StoneHeap();
gameSettings = new GameSettings();
+ gameHeap = new StoneHeap(gameSettings);
gameSettings.setInitialMeldThreshold(30);
turnNumber = -3;
}
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--;
+ }
+ }
}
/**
diff --git a/test/jrummikub/model/StoneHeapTest.java b/test/jrummikub/model/StoneHeapTest.java
index 9fd375a..f625187 100644
--- a/test/jrummikub/model/StoneHeapTest.java
+++ b/test/jrummikub/model/StoneHeapTest.java
@@ -17,7 +17,7 @@ public class StoneHeapTest {
/** */
@Before
public void createHeap() {
- testHeap = new StoneHeap();
+ testHeap = new StoneHeap(new GameSettings());
}
/**