summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Harder <harder@informatik.uni-luebeck.de>2011-05-29 20:22:47 +0200
committerJannis Harder <harder@informatik.uni-luebeck.de>2011-05-29 20:22:47 +0200
commit65d08ea450ac96ce35d1512707850524d805c790 (patch)
treee5f58871eaca2df9fb05e79bf5b2982e626488af
parentf6a3409ed525db8c416f46ac57f3861866443c22 (diff)
downloadJRummikub-65d08ea450ac96ce35d1512707850524d805c790.tar
JRummikub-65d08ea450ac96ce35d1512707850524d805c790.zip
Created dummy base AI control
git-svn-id: svn://sunsvr01.isp.uni-luebeck.de/swproj13/trunk@311 72836036-5685-4462-b002-a69064685172
-rw-r--r--src/jrummikub/control/RoundControl.java12
-rw-r--r--src/jrummikub/control/turn/AbstractTurnControl.java22
-rw-r--r--src/jrummikub/control/turn/BaseAIControl.java28
-rw-r--r--src/jrummikub/control/turn/HumanTurnControl.java41
-rw-r--r--src/jrummikub/control/turn/ITurnControl.java23
-rw-r--r--src/jrummikub/control/turn/TurnControlFactory.java2
-rw-r--r--test/jrummikub/control/turn/TurnControlTest.java77
7 files changed, 123 insertions, 82 deletions
diff --git a/src/jrummikub/control/RoundControl.java b/src/jrummikub/control/RoundControl.java
index 671086f..1dcd5e8 100644
--- a/src/jrummikub/control/RoundControl.java
+++ b/src/jrummikub/control/RoundControl.java
@@ -95,14 +95,11 @@ public class RoundControl {
view.getPlayerPanel().setEndTurnMode(inspectOnly, mayRedeal);
- ITurnControl turnControl = roundState
- .getActivePlayer()
- .getPlayerSettings()
- .getTurnControlFactory()
- .create(roundState.getActivePlayer().getHand(), clonedTable,
- view, inspectOnly);
+ ITurnControl turnControl = roundState.getActivePlayer()
+ .getPlayerSettings().getTurnControlFactory().create();
+ turnControl.setup(roundState.getActivePlayer().getHand(), clonedTable,
+ view, inspectOnly, mayRedeal);
turnControl.getEndOfTurnEvent().add(new IListener() {
-
@Override
public void handle() {
endOfTurn();
@@ -115,7 +112,6 @@ public class RoundControl {
redeal();
}
});
-
turnControl.startTurn();
}
diff --git a/src/jrummikub/control/turn/AbstractTurnControl.java b/src/jrummikub/control/turn/AbstractTurnControl.java
index 9e3b069..aeb6241 100644
--- a/src/jrummikub/control/turn/AbstractTurnControl.java
+++ b/src/jrummikub/control/turn/AbstractTurnControl.java
@@ -1,7 +1,10 @@
package jrummikub.control.turn;
+import jrummikub.model.IHand;
+import jrummikub.model.ITable;
import jrummikub.util.Event;
import jrummikub.util.IEvent;
+import jrummikub.view.IView;
/**
* Abstract base class for TurnControls
@@ -10,9 +13,12 @@ public abstract class AbstractTurnControl implements ITurnControl {
protected Event endOfTurnEvent = new Event();
protected Event redealEvent = new Event();
-
- @Override
- public abstract void startTurn();
+ protected IHand hand;
+ protected ITable table;
+ protected IView view;
+ protected boolean inspectOnly;
+ protected boolean mayRedeal;
+
@Override
public IEvent getEndOfTurnEvent() {
@@ -23,5 +29,15 @@ public abstract class AbstractTurnControl implements ITurnControl {
public Event getRedealEvent() {
return redealEvent;
}
+
+ @Override
+ public void setup(IHand hand, ITable table, IView view,
+ boolean inspectOnly, boolean mayRedeal) {
+ this.hand = hand;
+ this.table = table;
+ this.view = view;
+ this.inspectOnly = inspectOnly;
+ this.mayRedeal = mayRedeal;
+ }
} \ No newline at end of file
diff --git a/src/jrummikub/control/turn/BaseAIControl.java b/src/jrummikub/control/turn/BaseAIControl.java
new file mode 100644
index 0000000..98dceb3
--- /dev/null
+++ b/src/jrummikub/control/turn/BaseAIControl.java
@@ -0,0 +1,28 @@
+package jrummikub.control.turn;
+
+import jrummikub.model.IHand;
+import jrummikub.model.ITable;
+import jrummikub.view.IView;
+
+
+public class BaseAIControl extends AbstractTurnControl {
+
+ @Override
+ public void startTurn() {
+ if (mayRedeal) {
+ redealEvent.emit();
+ } else {
+ endOfTurnEvent.emit();
+ }
+ }
+
+ static public TurnControlFactory getFactory() {
+ return new TurnControlFactory() {
+ @Override
+ public ITurnControl create() {
+ return new BaseAIControl();
+ }
+ };
+ }
+
+}
diff --git a/src/jrummikub/control/turn/HumanTurnControl.java b/src/jrummikub/control/turn/HumanTurnControl.java
index 399f547..6dc055a 100644
--- a/src/jrummikub/control/turn/HumanTurnControl.java
+++ b/src/jrummikub/control/turn/HumanTurnControl.java
@@ -26,37 +26,16 @@ import jrummikub.view.IView;
* Controller for a single turn made by a human player
*/
public class HumanTurnControl extends AbstractTurnControl {
- private IHand hand;
- private ITable table;
private ITurnTimer timer;
- private IView view;
private List<Stone> selectedStones = new ArrayList<Stone>();
private List<Connection> connections = new ArrayList<Connection>();
- private boolean inspectOnly;
-
/**
- * Create a new TurnControl using a given hand (of the active player), a
- * given table and a given view for user interaction.
- *
- * @param hand
- * active player's hand
- * @param table
- * current table
- * @param view
- * view for user interaction.
- * @param inspectOnly
- * the current turn doesn't allow any table manipulation
+ * Create a new human player's turn control
*/
- public HumanTurnControl(IHand hand, ITable table, IView view,
- boolean inspectOnly) {
- this.hand = hand;
- this.table = table;
- this.view = view;
- this.inspectOnly = inspectOnly;
- this.timer = new TurnTimer(view);
+ public HumanTurnControl() {
}
/**
@@ -67,25 +46,22 @@ public class HumanTurnControl extends AbstractTurnControl {
public static TurnControlFactory getFactory() {
return new TurnControlFactory() {
@Override
- public ITurnControl create(IHand hand, ITable table, IView view,
- boolean inspectOnly) {
- return new HumanTurnControl(hand, table, view, inspectOnly);
+ public ITurnControl create() {
+ return new HumanTurnControl();
}
};
}
/** Test only constructor **/
- HumanTurnControl(IHand hand, ITable table, IView view, ITurnTimer testTimer) {
- this.hand = hand;
- this.table = table;
- this.view = view;
+ HumanTurnControl(ITurnTimer testTimer) {
this.timer = testTimer;
- this.inspectOnly = false;
}
@Override
public void startTurn() {
-
+ if (this.timer == null) {
+ this.timer = new TurnTimer(view);
+ }
IListener endOfTurnListener = new IListener() {
@Override
@@ -565,5 +541,4 @@ public class HumanTurnControl extends AbstractTurnControl {
}
}
}
-
}
diff --git a/src/jrummikub/control/turn/ITurnControl.java b/src/jrummikub/control/turn/ITurnControl.java
index 8c80b1f..80e2b27 100644
--- a/src/jrummikub/control/turn/ITurnControl.java
+++ b/src/jrummikub/control/turn/ITurnControl.java
@@ -1,14 +1,28 @@
package jrummikub.control.turn;
+import jrummikub.model.IHand;
+import jrummikub.model.ITable;
import jrummikub.util.Event;
import jrummikub.util.IEvent;
+import jrummikub.view.IView;
public interface ITurnControl {
-
/**
* Start the turn
+ *
+ * @param hand
+ * active player's hand
+ * @param table
+ * current table
+ * @param view
+ * view for user interaction.
+ * @param inspectOnly
+ * the current turn doesn't allow any table manipulation
+ * @param mayRedeal
+ * true when the current player may decide to redeal
*/
- public abstract void startTurn();
+ public abstract void setup(IHand hand, ITable table, IView view,
+ boolean inspectOnly, boolean mayRedeal);
/**
* Get the event that is emitted when the turn is over
@@ -24,4 +38,9 @@ public interface ITurnControl {
*/
public abstract Event getRedealEvent();
+ /**
+ * Start the turn
+ */
+ public abstract void startTurn();
+
} \ No newline at end of file
diff --git a/src/jrummikub/control/turn/TurnControlFactory.java b/src/jrummikub/control/turn/TurnControlFactory.java
index 3af910b..48c028e 100644
--- a/src/jrummikub/control/turn/TurnControlFactory.java
+++ b/src/jrummikub/control/turn/TurnControlFactory.java
@@ -5,5 +5,5 @@ import jrummikub.model.ITable;
import jrummikub.view.IView;
public interface TurnControlFactory {
- public ITurnControl create(IHand hand, ITable table, IView view, boolean inspectOnly);
+ public ITurnControl create();
}
diff --git a/test/jrummikub/control/turn/TurnControlTest.java b/test/jrummikub/control/turn/TurnControlTest.java
index 150f3e9..9140323 100644
--- a/test/jrummikub/control/turn/TurnControlTest.java
+++ b/test/jrummikub/control/turn/TurnControlTest.java
@@ -105,7 +105,8 @@ public class TurnControlTest {
mockTimer = new MockTimer();
mockTable = new MockTable();
mockHand = new MockHand();
- testControl = new HumanTurnControl(mockHand, mockTable, mockView, mockTimer);
+ testControl = new HumanTurnControl(mockTimer);
+ testControl.setup(mockHand, mockTable, mockView, false, false);
}
/** */
@@ -122,14 +123,15 @@ public class TurnControlTest {
public void showInitialHand() {
mockView.displayStartTurnPanel = true;
- List<Pair<Stone, Position>> stones = Arrays.asList(
- new Pair<Stone, Position>(new Stone(RED), new Position(0, 0)),
- new Pair<Stone, Position>(new Stone(BLACK), new Position(1, 0)));
+ List<Pair<Stone, Position>> stones = Arrays
+ .asList(new Pair<Stone, Position>(new Stone(RED), new Position(
+ 0, 0)), new Pair<Stone, Position>(new Stone(BLACK),
+ new Position(1, 0)));
mockHand.iterable = stones;
- testControl = new HumanTurnControl(mockHand, mockTable, mockView, mockTimer);
-
+ testControl = new HumanTurnControl(mockTimer);
+ testControl.setup(mockHand, mockTable, mockView, false, false);
testControl.startTurn();
int i = 0;
@@ -256,8 +258,8 @@ public class TurnControlTest {
mockView.handPanel.stoneClickEvent.emit(firstStone, true);
mockView.handPanel.stoneClickEvent.emit(secondStone, true);
- mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
- false);
+ mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
+ firstStone, false);
assertCollection(Arrays.asList(secondStone));
}
@@ -273,8 +275,8 @@ public class TurnControlTest {
mockView.handPanel.stoneClickEvent.emit(firstStone, true);
mockView.handPanel.stoneClickEvent.emit(secondStone, true);
- mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
- true);
+ mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
+ firstStone, true);
assertCollection(Arrays.asList(secondStone, firstStone));
}
@@ -290,8 +292,8 @@ public class TurnControlTest {
mockView.handPanel.stoneClickEvent.emit(firstStone, true);
mockView.handPanel.stoneClickEvent.emit(secondStone, true);
- mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(firstStone,
- true);
+ mockView.tablePanel.stoneCollectionPanel.stoneClickEvent.emit(
+ firstStone, true);
mockView.tablePanel.stoneCollectionPanel.setClickEvent.emit(firstStone,
true);
@@ -398,7 +400,8 @@ public class TurnControlTest {
Stone stone2 = new Stone(2, StoneColor.RED);
Stone stone3 = new Stone(3, StoneColor.RED);
Stone stone4 = new Stone(4, StoneColor.RED);
- StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
+ StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
+ stone4));
mockTable.findStoneSet.put(stone1, set1);
mockTable.findStoneSet.put(stone3, set1);
@@ -419,7 +422,8 @@ public class TurnControlTest {
Stone stone2 = new Stone(2, StoneColor.RED);
Stone stone3 = new Stone(3, StoneColor.RED);
Stone stone4 = new Stone(4, StoneColor.RED);
- StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
+ StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
+ stone4));
mockTable.findStoneSet.put(stone1, set1);
mockTable.findStoneSet.put(stone3, set1);
@@ -442,7 +446,8 @@ public class TurnControlTest {
Stone stone2 = new Stone(2, StoneColor.RED);
Stone stone3 = new Stone(3, StoneColor.RED);
Stone stone4 = new Stone(4, StoneColor.RED);
- StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3, stone4));
+ StoneSet set1 = new StoneSet(Arrays.asList(stone1, stone2, stone3,
+ stone4));
mockTable.findStoneSet.put(stone1, set1);
mockTable.findStoneSet.put(stone3, set1);
@@ -621,8 +626,8 @@ public class TurnControlTest {
@Test
public void testAddLeft() {
AccessibleTable table = new AccessibleTable();
- HumanTurnControl turnControl = new HumanTurnControl(mockHand, table, mockView,
- mockTimer);
+ HumanTurnControl turnControl = new HumanTurnControl(mockTimer);
+ turnControl.setup(mockHand, table, mockView, false, false);
turnControl.startTurn();
Stone blueOne = new Stone(1, BLUE);
Stone redOne = new Stone(1, RED);
@@ -637,10 +642,10 @@ public class TurnControlTest {
Stone blackThree = new Stone(3, BLACK);
Stone blackFour = new Stone(4, BLACK);
Stone blackFive = new Stone(5, BLACK);
- StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
- redTwo, redThree, redFour, blackTwo, blackThree));
- StoneSet oldSet2 = new StoneSet(
- Arrays.asList(blueTwo, blackFour, blackFive));
+ StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
+ blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
+ StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
+ blackFive));
table.drop(oldSet1, new Position(0, 0));
table.drop(oldSet2, new Position(0, 0));
mockHand.drop(blueThree, new Position(0, 0));
@@ -738,8 +743,8 @@ public class TurnControlTest {
@Test
public void testAddRight() {
AccessibleTable table = new AccessibleTable();
- HumanTurnControl turnControl = new HumanTurnControl(mockHand, table, mockView,
- mockTimer);
+ HumanTurnControl turnControl = new HumanTurnControl(mockTimer);
+ turnControl.setup(mockHand, table, mockView, false, false);
turnControl.startTurn();
Stone blueOne = new Stone(1, BLUE);
Stone redOne = new Stone(1, RED);
@@ -754,10 +759,10 @@ public class TurnControlTest {
Stone blackThree = new Stone(3, BLACK);
Stone blackFour = new Stone(4, BLACK);
Stone blackFive = new Stone(5, BLACK);
- StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
- redTwo, redThree, redFour, blackTwo, blackThree));
- StoneSet oldSet2 = new StoneSet(
- Arrays.asList(blueTwo, blackFour, blackFive));
+ StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
+ blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
+ StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
+ blackFive));
table.drop(oldSet1, new Position(0, 0));
table.drop(oldSet2, new Position(0, 0));
mockHand.drop(blueThree, new Position(0, 0));
@@ -855,8 +860,8 @@ public class TurnControlTest {
@Test
public void testAddNewSet() {
AccessibleTable table = new AccessibleTable();
- HumanTurnControl turnControl = new HumanTurnControl(mockHand, table, mockView,
- mockTimer);
+ HumanTurnControl turnControl = new HumanTurnControl(mockTimer);
+ turnControl.setup(mockHand, table, mockView, false, false);
turnControl.startTurn();
Stone blueOne = new Stone(1, BLUE);
Stone redOne = new Stone(1, RED);
@@ -871,10 +876,10 @@ public class TurnControlTest {
Stone blackThree = new Stone(3, BLACK);
Stone blackFour = new Stone(4, BLACK);
Stone blackFive = new Stone(5, BLACK);
- StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne, blackOne,
- redTwo, redThree, redFour, blackTwo, blackThree));
- StoneSet oldSet2 = new StoneSet(
- Arrays.asList(blueTwo, blackFour, blackFive));
+ StoneSet oldSet1 = new StoneSet(Arrays.asList(blueOne, redOne,
+ blackOne, redTwo, redThree, redFour, blackTwo, blackThree));
+ StoneSet oldSet2 = new StoneSet(Arrays.asList(blueTwo, blackFour,
+ blackFive));
table.drop(oldSet1, new Position(0, 0));
table.drop(oldSet2, new Position(0, 0));
mockHand.drop(blueThree, new Position(0, 0));
@@ -978,7 +983,8 @@ public class TurnControlTest {
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(
mockHand.stones);
- Collections.sort(stones, new HumanTurnControl.HandStonePositionComparator());
+ Collections.sort(stones,
+ new HumanTurnControl.HandStonePositionComparator());
assertEquals(stones.size(), 13);
@@ -1039,7 +1045,8 @@ public class TurnControlTest {
List<Pair<Stone, Position>> stones = new ArrayList<Pair<Stone, Position>>(
mockHand.stones);
- Collections.sort(stones, new HumanTurnControl.HandStonePositionComparator());
+ Collections.sort(stones,
+ new HumanTurnControl.HandStonePositionComparator());
assertEquals(stones.size(), 13);