From 92d110995488380778bd378f4297032a325dc385 Mon Sep 17 00:00:00 2001 From: Jannis Harder Date: Tue, 24 May 2011 01:51:54 +0200 Subject: Select a random player for the first round git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@263 72836036-5685-4462-b002-a69064685172 --- mock/jrummikub/model/MockRoundState.java | 9 +++++++++ src/jrummikub/control/GameControl.java | 8 ++++++++ src/jrummikub/model/GameState.java | 24 ++++++++++++++++++++++++ src/jrummikub/model/IRoundState.java | 14 +++++++++++--- src/jrummikub/model/RoundState.java | 9 +++++++++ 5 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/jrummikub/model/GameState.java diff --git a/mock/jrummikub/model/MockRoundState.java b/mock/jrummikub/model/MockRoundState.java index 32fce33..0341f27 100644 --- a/mock/jrummikub/model/MockRoundState.java +++ b/mock/jrummikub/model/MockRoundState.java @@ -91,4 +91,13 @@ public class MockRoundState implements IRoundState { public void setLastPlayer(IPlayer lastPlayer) { this.lastPlayer = lastPlayer; } + + @Override + public void setActivePlayerNumber(int i) { + int j = i % players.size(); + if (j < 0) { + j += players.size(); + } + activePlayer = j; + } } diff --git a/src/jrummikub/control/GameControl.java b/src/jrummikub/control/GameControl.java index 1d93c63..ac47e2f 100644 --- a/src/jrummikub/control/GameControl.java +++ b/src/jrummikub/control/GameControl.java @@ -1,6 +1,7 @@ package jrummikub.control; import jrummikub.model.GameSettings; +import jrummikub.model.GameState; import jrummikub.model.IRoundState; import jrummikub.model.RoundState; import jrummikub.util.IListener; @@ -13,6 +14,7 @@ public class GameControl { private GameSettings gameSettings; private IView view; private RoundControl roundControl; + private GameState gameState; /** * Constructor @@ -25,6 +27,9 @@ public class GameControl { public GameControl(GameSettings gameSettings, IView view) { this.gameSettings = gameSettings; this.view = view; + + gameState = new GameState(); + gameState.setFirstRoundFirstPlayer((int)(Math.random() * gameSettings.getPlayerList().size())); view.getNewGameEvent().add(new IListener() { @Override @@ -54,6 +59,9 @@ public class GameControl { IRoundState roundState = new RoundState(gameSettings); + // TODO: add number of already played rounds + roundState.setActivePlayerNumber(gameState.getFirstRoundFirstPlayer()); + roundControl = new RoundControl(roundState, view); roundControl.getEndRoundEvent().add(new IListener() { diff --git a/src/jrummikub/model/GameState.java b/src/jrummikub/model/GameState.java new file mode 100644 index 0000000..4bb55bc --- /dev/null +++ b/src/jrummikub/model/GameState.java @@ -0,0 +1,24 @@ +package jrummikub.model; + +/** + * Class that stores information for a game of multiple rounds + */ +public class GameState { + private int firstRoundFirstPlayer; + + /** + * Gets the number of the first player of the first round + * @return the number of the first player of the first round + */ + public int getFirstRoundFirstPlayer() { + return firstRoundFirstPlayer; + } + + /** + * Sets the number of the first player of the first round + * @param firstRoundFirstPlayer the number of the first player of the first round + */ + public void setFirstRoundFirstPlayer(int firstRoundFirstPlayer) { + this.firstRoundFirstPlayer = firstRoundFirstPlayer; + } +} diff --git a/src/jrummikub/model/IRoundState.java b/src/jrummikub/model/IRoundState.java index dea225b..4dbcd9a 100644 --- a/src/jrummikub/model/IRoundState.java +++ b/src/jrummikub/model/IRoundState.java @@ -64,8 +64,7 @@ public interface IRoundState { * Sets the player that will make the last turn before the round ends when * the heap is empty * - * @param lastPlayer - * the last player + * @return the last player */ public abstract IPlayer getLastPlayer(); @@ -73,8 +72,17 @@ public interface IRoundState { * Gets the player that will make the last turn before the round ends when * the heap is empty * - * @return lastPlayer the last player + * @param lastPlayer + * the last player */ public abstract void setLastPlayer(IPlayer lastPlayer); + /** + * Makes the player with number i the active player + * + * @param i + * number of the player to make active + */ + public void setActivePlayerNumber(int i); + } \ No newline at end of file diff --git a/src/jrummikub/model/RoundState.java b/src/jrummikub/model/RoundState.java index 0bda737..076fd00 100644 --- a/src/jrummikub/model/RoundState.java +++ b/src/jrummikub/model/RoundState.java @@ -52,6 +52,15 @@ public class RoundState implements IRoundState { public void nextPlayer() { activePlayer = (activePlayer + 1) % players.size(); } + + @Override + public void setActivePlayerNumber(int i) { + int j = i % players.size(); + if (j < 0) { + j += players.size(); + } + activePlayer = j; + } @Override public IPlayer getNthNextPlayer(int i) { -- cgit v1.2.3