diff options
-rw-r--r-- | mock/jrummikub/model/MockRoundState.java | 2 | ||||
-rw-r--r-- | src/jrummikub/model/RoundState.java | 2 | ||||
-rw-r--r-- | src/jrummikub/model/StoneHeap.java | 23 | ||||
-rw-r--r-- | test/jrummikub/model/StoneHeapTest.java | 2 |
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()); } /** |