Fix dealing stones for more than 2 rows
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@244 72836036-5685-4462-b002-a69064685172
This commit is contained in:
parent
57227570fe
commit
604ef91282
7 changed files with 89 additions and 48 deletions
|
@ -10,22 +10,31 @@ public class Hand extends StoneTray<Stone> implements IHand {
|
|||
* The width of the hand
|
||||
*/
|
||||
public final static int WIDTH = 14;
|
||||
/**
|
||||
* The height of the hand
|
||||
*/
|
||||
@Deprecated
|
||||
public final static int HEIGHT = 2;
|
||||
|
||||
private boolean rowIsFull(float row) {
|
||||
@Override
|
||||
public int getFreeRowSpace(int row) {
|
||||
int count = 0;
|
||||
for (Pair<Stone, Position> entry : this) {
|
||||
if (entry.getSecond().getY() == row) {
|
||||
count++;
|
||||
}
|
||||
}
|
||||
return count == WIDTH;
|
||||
return WIDTH - count;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int getRowCount() {
|
||||
int rows = 0;
|
||||
|
||||
for (Pair<Stone, Position> entry : this) {
|
||||
if (entry.getSecond().getY() > rows) {
|
||||
rows = (int) entry.getSecond().getY();
|
||||
}
|
||||
}
|
||||
|
||||
return rows + 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Pair<Position, Direction> fixInvalidDrop(Stone stone, Position pos,
|
||||
Direction dir) {
|
||||
|
@ -38,7 +47,7 @@ public class Hand extends StoneTray<Stone> implements IHand {
|
|||
if (x < 0) {
|
||||
return new Pair<Position, Direction>(new Position(0, y), RIGHT);
|
||||
} else {
|
||||
if (rowIsFull(y)) {
|
||||
if (getFreeRowSpace((int) y) == 0) {
|
||||
return new Pair<Position, Direction>(new Position(0, y + 1), RIGHT);
|
||||
} else {
|
||||
return new Pair<Position, Direction>(new Position(WIDTH - 1, y), LEFT);
|
||||
|
|
|
@ -5,4 +5,19 @@ package jrummikub.model;
|
|||
*/
|
||||
public interface IHand extends IStoneTray<Stone> {
|
||||
|
||||
/**
|
||||
* The number of used rows
|
||||
*
|
||||
* @return the number of rows
|
||||
*/
|
||||
int getRowCount();
|
||||
|
||||
/**
|
||||
* Gets the amount of free space in a hand row
|
||||
*
|
||||
* @param row
|
||||
* the row number
|
||||
* @return the number of stones that can fit into the row
|
||||
*/
|
||||
int getFreeRowSpace(int row);
|
||||
}
|
||||
|
|
Reference in a new issue