summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Harder <harder@informatik.uni-luebeck.de>2011-05-29 18:50:54 +0200
committerJannis Harder <harder@informatik.uni-luebeck.de>2011-05-29 18:50:54 +0200
commit699a0b0a2933237039b9b6ac545cc05a34644399 (patch)
tree167f3805cc6c317245003667346de46b43aba80c
parentbf8aa23758385601c2fc8f5f7e37b9b3211010cb (diff)
downloadJRummikub-699a0b0a2933237039b9b6ac545cc05a34644399.tar
JRummikub-699a0b0a2933237039b9b6ac545cc05a34644399.zip
Deal the correct number of jokers aka funny joker action
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@303 72836036-5685-4462-b002-a69064685172
-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());
}
/**