Calculate points on hand

git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@264 72836036-5685-4462-b002-a69064685172
This commit is contained in:
Jannis Harder 2011-05-24 01:51:56 +02:00
parent 92d1109954
commit 4a98975b0d
10 changed files with 88 additions and 15 deletions

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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();
}

View file

@ -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;
}

View file

@ -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();