diff options
-rw-r--r-- | mock/jrummikub/model/MockHand.java | 6 | ||||
-rw-r--r-- | mock/jrummikub/model/MockPlayer.java | 4 | ||||
-rw-r--r-- | mock/jrummikub/model/MockRoundState.java | 14 | ||||
-rw-r--r-- | src/jrummikub/model/GameSettings.java | 23 | ||||
-rw-r--r-- | src/jrummikub/model/Hand.java | 20 | ||||
-rw-r--r-- | src/jrummikub/model/IHand.java | 9 | ||||
-rw-r--r-- | src/jrummikub/model/Player.java | 4 | ||||
-rw-r--r-- | src/jrummikub/model/RoundState.java | 4 | ||||
-rw-r--r-- | test/jrummikub/control/RoundControlTest.java | 2 | ||||
-rw-r--r-- | test/jrummikub/model/HandTest.java | 17 |
10 files changed, 88 insertions, 15 deletions
diff --git a/mock/jrummikub/model/MockHand.java b/mock/jrummikub/model/MockHand.java index 30bda51..c69ae7b 100644 --- a/mock/jrummikub/model/MockHand.java +++ b/mock/jrummikub/model/MockHand.java @@ -76,4 +76,10 @@ public class MockHand implements IHand { // TODO Auto-generated method stub return 0; } + + @Override + public int getStonePoints() { + // TODO Auto-generated method stub + return 0; + } } diff --git a/mock/jrummikub/model/MockPlayer.java b/mock/jrummikub/model/MockPlayer.java index a7b57b4..19c7014 100644 --- a/mock/jrummikub/model/MockPlayer.java +++ b/mock/jrummikub/model/MockPlayer.java @@ -15,8 +15,8 @@ public class MockPlayer implements IPlayer { * @param playerSettings * the player settings */ - public MockPlayer(PlayerSettings playerSettings) { - hand = new Hand(); + public MockPlayer(PlayerSettings playerSettings, GameSettings gameSettings) { + hand = new Hand(gameSettings); this.playerSettings = playerSettings; laidOut = false; } diff --git a/mock/jrummikub/model/MockRoundState.java b/mock/jrummikub/model/MockRoundState.java index 0341f27..ee483c6 100644 --- a/mock/jrummikub/model/MockRoundState.java +++ b/mock/jrummikub/model/MockRoundState.java @@ -22,15 +22,19 @@ public class MockRoundState implements IRoundState { public GameSettings gameSettings; /** */ public IPlayer lastPlayer; - + /** */ public MockRoundState() { table = new MockTable(); players = new ArrayList<MockPlayer>(); - players.add(new MockPlayer(new PlayerSettings("Player 1", Color.RED))); - players.add(new MockPlayer(new PlayerSettings("Player 2", Color.YELLOW))); - players.add(new MockPlayer(new PlayerSettings("Player 3", Color.GREEN))); - players.add(new MockPlayer(new PlayerSettings("Player 4", Color.BLACK))); + players.add(new MockPlayer(new PlayerSettings("Player 1", Color.RED), + gameSettings)); + players.add(new MockPlayer( + new PlayerSettings("Player 2", Color.YELLOW), gameSettings)); + players.add(new MockPlayer(new PlayerSettings("Player 3", Color.GREEN), + gameSettings)); + players.add(new MockPlayer(new PlayerSettings("Player 4", Color.BLACK), + gameSettings)); activePlayer = 0; gameHeap = new StoneHeap(); gameSettings = new GameSettings(); diff --git a/src/jrummikub/model/GameSettings.java b/src/jrummikub/model/GameSettings.java index b5079d4..7d525c6 100644 --- a/src/jrummikub/model/GameSettings.java +++ b/src/jrummikub/model/GameSettings.java @@ -10,12 +10,14 @@ public class GameSettings { private List<PlayerSettings> players = new ArrayList<PlayerSettings>(); private int initialMeldThreshold; + private int jokerPoints; /** * Creates new GameSettings with default values */ public GameSettings() { initialMeldThreshold = 30; + jokerPoints = 50; } /** @@ -31,7 +33,7 @@ public class GameSettings { * Sets the initial meld threshold * * @param value - * the value to set + * the value to set */ public void setInitialMeldThreshold(int value) { initialMeldThreshold = value; @@ -45,4 +47,23 @@ public class GameSettings { public int getInitialMeldThreshold() { return initialMeldThreshold; } + + /** + * Sets the points counted for a joker + * + * @param value + * the value to set + */ + public void setJokerPoints(int value) { + jokerPoints = value; + } + + /** + * Returns the points counted for a joker + * + * @return the points + */ + public int getJokerPoints() { + return jokerPoints; + } } diff --git a/src/jrummikub/model/Hand.java b/src/jrummikub/model/Hand.java index ab5eb19..35ea49f 100644 --- a/src/jrummikub/model/Hand.java +++ b/src/jrummikub/model/Hand.java @@ -10,6 +10,12 @@ public class Hand extends StoneTray<Stone> implements IHand { * The width of the hand */ public final static int WIDTH = 14; + + private GameSettings settings; + + public Hand(GameSettings settings) { + this.settings = settings; + } @Override public int getFreeRowSpace(int row) { @@ -54,4 +60,18 @@ public class Hand extends StoneTray<Stone> implements IHand { } } } + + public int getStonePoints() { + int points = 0; + + for (Pair<Stone, Position> entry : this) { + if (entry.getFirst().isJoker()) { + points += settings.getJokerPoints(); + } else { + points += entry.getFirst().getValue(); + } + } + + return points; + } } diff --git a/src/jrummikub/model/IHand.java b/src/jrummikub/model/IHand.java index dafa9c7..ec49489 100644 --- a/src/jrummikub/model/IHand.java +++ b/src/jrummikub/model/IHand.java @@ -16,8 +16,15 @@ public interface IHand extends IStoneTray<Stone> { * Gets the amount of free space in a hand row
*
* @param row
- * the row number
+ * the row number
* @return the number of stones that can fit into the row
*/
int getFreeRowSpace(int row);
+
+ /**
+ * Get the accumulated number of points of stones in the hand
+ *
+ * @return points
+ */
+ int getStonePoints();
}
diff --git a/src/jrummikub/model/Player.java b/src/jrummikub/model/Player.java index d10992e..6d3e6d6 100644 --- a/src/jrummikub/model/Player.java +++ b/src/jrummikub/model/Player.java @@ -12,10 +12,10 @@ public class Player implements IPlayer { * @param settings * the player settings */ - public Player(PlayerSettings settings) { + public Player(PlayerSettings settings, GameSettings gameSettings) { this.settings = settings; - hand = new Hand(); + hand = new Hand(gameSettings); laidOut = false; } diff --git a/src/jrummikub/model/RoundState.java b/src/jrummikub/model/RoundState.java index 076fd00..c32c3c0 100644 --- a/src/jrummikub/model/RoundState.java +++ b/src/jrummikub/model/RoundState.java @@ -26,7 +26,7 @@ public class RoundState implements IRoundState { players = new ArrayList<Player>(); for (PlayerSettings playerSettings : gameSettings.getPlayerList()) { - players.add(new Player(playerSettings)); + players.add(new Player(playerSettings, gameSettings)); } activePlayer = 0; @@ -52,7 +52,7 @@ public class RoundState implements IRoundState { public void nextPlayer() { activePlayer = (activePlayer + 1) % players.size(); } - + @Override public void setActivePlayerNumber(int i) { int j = i % players.size(); diff --git a/test/jrummikub/control/RoundControlTest.java b/test/jrummikub/control/RoundControlTest.java index 20d87f3..9894e35 100644 --- a/test/jrummikub/control/RoundControlTest.java +++ b/test/jrummikub/control/RoundControlTest.java @@ -591,7 +591,7 @@ public class RoundControlTest { view.tablePanel.clickEvent.emit(new Position(0, 0)); - testRoundState.players.get(0).hand = new Hand(); + testRoundState.players.get(0).hand = new Hand(gameSettings); resetTurnStart(); view.playerPanel.endTurnEvent.emit(); diff --git a/test/jrummikub/model/HandTest.java b/test/jrummikub/model/HandTest.java index fbe694b..5be48d6 100644 --- a/test/jrummikub/model/HandTest.java +++ b/test/jrummikub/model/HandTest.java @@ -19,7 +19,7 @@ public class HandTest { /** */
@Before
public void setUp() {
- hand = new Hand();
+ hand = new Hand(new GameSettings());
}
/** */
@@ -111,4 +111,19 @@ public class HandTest { assertEquals(new Position(13, 1), hand.getPosition(newStone));
assertEquals(new Position(0, 2), hand.getPosition(rowStones.get(13)));
}
+
+ /** */
+ @Test
+ public void testCountPoints() {
+
+ Stone stone1 = new Stone(2, BLUE);
+ Stone stone2 = new Stone(4, BLUE);
+ Stone stone3 = new Stone(RED);
+
+ hand.drop(stone1, new Position(0, 0));
+ hand.drop(stone2, new Position(0, 0));
+ hand.drop(stone3, new Position(0, 0));
+
+ assertEquals(56, hand.getStonePoints());
+ }
}
|