diff options
Diffstat (limited to 'src/jrummikub')
-rw-r--r-- | src/jrummikub/model/RoundState.java | 2 | ||||
-rw-r--r-- | src/jrummikub/model/StoneHeap.java | 23 |
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--; + } + } } /** |