|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--de.torfu.kabayellow.common.Action
Abstrakte Superklasse für alle Aktionen, die der Spieler ausführen kann. Mögliche Aktionen sind:
Um beispielsweise einen Rittereinzusetzen, würde der Spieler ActionActivateKnight verwenden. Beispiel:
Action myMove = new ActionActivateKnight(); myMove.setPoint(targetPoint); if (myMove.isLegal(getGame())) { // Dieser Zug entspricht nicht den Regeln. } else { myMove.execute(getGame()); }Züge erstmal "testweise" ausführen, um z.B. Undo zu ermöglichen:
Game myGameCopy = getGame().createCopy(); Action myMove = new ActionActivateKnight(); myMove.setPoint(targetPoint); myMove.execute(myGameCopy);Dieser Zug wird dann nur auf der Kopie des Spielstandes ausgeführt.
Field Summary | |
static int |
ERROR_ACTIONCARD_IS_NEW
Fehlerkonstante für den Fall, dass die einzusetzende Karte gerade erst gekauft wurde |
static int |
ERROR_CARD_NOT_NEEDED
Fehlerkonstante , wenn für einen Zug eine Karte gar nicht notwendig ist. |
static int |
ERROR_CASTLE_PROPERTY_VIOLATED
Fehlerkonstante für zu Burgeigenschaft verletzt |
static int |
ERROR_CASTLE_SPLIT
Fehlerkonstante den Fall, dass eine Burg getrennt werden sollte |
static int |
ERROR_CODE_NONE
Fehlerkonstante für "Kein Fehler" |
static int |
ERROR_DOESNT_HAVE_ACTIONCARD
Fehlerkonstante für den Fall, dass eine nicht vorhandene Aktionskarte eingesetzt werden sollte |
static int |
ERROR_ILLEGAL_MOVE
Fehlerkonstante für den Fall das ein Ritter aus irgendeinem Grund nicht auf ein Feld ziehen kann. |
static int |
ERROR_ILLEGAL_MOVE_THROUGH_CASTLE
Fehlerkonstante für den Fall, dass durch eine Burg hindurch gezogen werden sollte |
static int |
ERROR_IMPOSSIBLE_MOVE
Fehlerkonstante für einen unmöglichen Zug bei der Aktion ActionCardPutStoneUnderKnigth oder ActionCardMoveDiagonal |
static int |
ERROR_KNIGHT_ON_TARGET_CELL
Fehlerkonstante für den Fall, dass auf dem Zielfeld schon eine Figur steht |
static int |
ERROR_MOVE_TOO_LONG
Fehlerkonstante für Zug zu lang (genaue Erklärung folgt) |
static int |
ERROR_NEW_CASTLE
Fehlerkonstante für den Fall, dass eine neue Burg entstehen würde |
static int |
ERROR_NO_ACTIONPOINTS_LEFT
Fehlerkonstante für zu wenig Aktionspunkte |
static int |
ERROR_NO_ADJACENT_KNIGHT
Fehlerkonstante für den Fall, das dem Feld, auf das ein Ritter eingesetzt wird, kein Feld benachbart ist, auf dem ein eigener Ritter steht |
static int |
ERROR_NO_CASTLE
Fehlerkonstante, wenn der erste Ritter nicht auf einer Burg platziert wird |
static int |
ERROR_NO_KNIGHT_FOUND
Fehlerkonstante für den Fall, das von einem Feld gezogen werden soll, auf dem keine Figur vorhanden ist |
static int |
ERROR_NO_MORE_CARDS_LEFT
Fehlerkonstante für den Fall, dass keine Aktionskarten mehr gezogen werden können, falls schon alle vorhandenen gezogen wurden. |
static int |
ERROR_NO_MORE_KNIGHTS_LEFT
Fehlerkonstante für den Fall, dass der Spieler keine Ritter mehr zur Verfügung hat |
static int |
ERROR_NO_STONES_LEFT
Fehlerkonstante für zu wenig Bauststeine, um zu setzen |
static int |
ERROR_NO_STRAIGHT_MOVE
Fehlerkonstante für Zug nicht geradeaus |
static int |
ERROR_NOT_ENOUGH_CASTLES
Fehlerkonstante für zu zu wenig Burgen (genaueres folgt) |
static int |
ERROR_ONLY_TWO_CARDS_ALLOWED
Fehlerkonstante für den Fall, dass in einem Zug eine dritte Aktionskarte gekauft werden soll |
static int |
ERROR_PLAY_ONLY_ONE_CARD
Fehlerkonstante für den Fall, dass mehr als eine Aktionskarte ausgespielt werden soll |
static int |
ERROR_TOO_FEW_CASTLE
Fehlerkonstannte für den Fall das zu wenig Burgen auf dem Spielfeld sind es müssen immer mindestens sechs sein |
static int |
ERROR_TOO_HIGH
Fehlerkonstante für den Fall, dass die Ebene, in die der Ritter eingesetzt wird, zu hoch ist |
static int |
ERROR_WRONG_ROUND
Fehlerkonstante für den Fall, dass eine Aktion in einer Runde ausgeführt wird, in der sie nicht erlaubt ist, also z.B. |
Method Summary | |
java.lang.Object |
clone()
|
void |
execute(Game game)
Führt den Zug aus. |
java.util.Vector |
getActionMoveKnightsForLongMove(Game game,
java.awt.Point fromPoint,
java.awt.Point toPoint)
Gibt für den Start- und Endpunkt dann einen Vektor zurück, der die erforderlichen ActionMoveKnight Objekte enthält, wenn der Zug mit den Actionpoints des currentPlayer möglich ist. |
int |
getCost(Game game)
Gibt zurück, wie viele Aktionspunkte dieser Zug kostet. 0, falls nicht überschrieben. |
int[] |
getCostsOfPossibleMoves(Game game,
java.awt.Point startPoint)
Gibt einen int - Array zurück mit den Kosten, die ein Zug von einem Startpunkt aus kostet. |
java.awt.Point |
getEndPoint4Move()
|
static java.lang.String |
getError(int error)
|
abstract int |
getErrorCode(Game game)
Wie isLegal(Game) , nur wird statt einem Boolean eine
ERROR_CODE_XXXX -Konstante zurückgegeben. |
int |
getID()
Gibt die ID des Spielers zurück, der die Aktion ausgeführt hat. |
java.awt.Point |
getPointFromIndex(int i)
|
java.util.Vector |
getPossibleEndPoints(Game game)
Gibt einen Vector mit allen legalen Zielfeldern für diese
Aktion zurück. |
Board |
getPossibleLocations(int maxPoints,
int usedPoints,
Game game,
java.awt.Point fromPoint,
Board workBoard)
Gibt ein Board zurück das in den cells mit price die Anzahl der Züge angibt, die der Ritter von startPoint auf das Felder braucht. |
java.util.Vector |
getPossibleLongMoves(Game game,
java.awt.Point fromPoint)
Gibt einen Vector mit den cells zurück, die der current Player mit einem Ritter von StartPoint aus erreichen kann. |
boolean[] |
getPossibleMoves(Game game,
java.awt.Point fromPoint)
Gibt einen boolschen Array zurück, (Index -> Feldindex) der angibt, auf welche Felder der Ritter von startPoint aus ziehen kann. |
boolean[] |
getPossibleSetKnight(Game game,
int id)
Gibt einen boolschen Array zurück, (Index -> Feldindex) der angibt, auf welche Felder der Ritter von startPoint aus ziehen kann. |
java.util.Vector |
getPossibleStartPoints(Game game)
Gibt einen Vector mit allen legalen Startfeldern für diese
Aktion zurück. |
java.awt.Point |
getStartPoint()
Gibt den Startpunkt einer Zwei-Punkte- Action zurück, oder
null , falls er noch nicht festgelegt wurde. |
java.awt.Point |
getStartPoint4Move()
|
boolean |
hasStartPoint()
Gibt für zwei-Parameter-Aktionen zurück, ob der Startpunkt schon gesetzt ist. |
boolean |
isActionCard()
Gibt zurück, ob diese Action einen Ritter verändert
(bewegt oder einsetzt). |
boolean |
isBuyCardAction()
Gibt zurück, ob diese Action eine Karte kauft. |
boolean |
isKingAction()
Gibt zurück, ob diese Action einen König verändert
(bewegt oder einsetzt). |
boolean |
isKnightAction()
Gibt zurück, ob diese Action einen Ritter verändert
(bewegt oder einsetzt). |
boolean |
isLegal(Game game)
Überprüft, ob der Zug den Regeln entspricht. |
boolean |
isnewKnightAction()
Gibt zurück, ob diese Action einen Ritter einsetzt. |
boolean |
isStoneAction()
Gibt zurück, ob diese Action einen Stein verändert
(bewegt oder einsetzt). |
boolean |
needsOnePoint()
Gibt zurück, ob diese Action ein Parameterfeld braucht,
wie z.B. |
boolean |
needsParameters()
Gibt zurück, ob diese Action keine Parameter braucht,
wie z.B. |
boolean |
needsTwoPoints()
Gibt zurück, ob diese Action ein Parameterfeld braucht,
wie z.B. |
void |
setEndPoint(java.awt.Point end)
Legt den Endpunkt für die Bewegung eines Ritters oder eines Steins fest. |
void |
setID(int id)
|
void |
setPoint(int x,
int y)
Alternative Schreibweise für setPoint(Point) . |
void |
setPoint(java.awt.Point point)
Legt den Punkt fest, an dem ein Ritter oder Stein eingesetzt wird. |
void |
setPoints(java.awt.Point start,
java.awt.Point end)
Legt Anfangs- und Endpunkt für die Bewegung eines Ritters oder eines Steins fest. |
void |
setStartPoint(java.awt.Point start)
Legt den Anfangspunkt für die Bewegung eines Ritters oder eines Steins fest. |
java.lang.String |
toServer()
|
java.lang.String |
toString()
|
Methods inherited from class java.lang.Object |
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
public static final int ERROR_CODE_NONE
public static final int ERROR_NO_ACTIONPOINTS_LEFT
public static final int ERROR_TOO_HIGH
public static final int ERROR_NO_ADJACENT_KNIGHT
public static final int ERROR_NO_STONES_LEFT
public static final int ERROR_NEW_CASTLE
public static final int ERROR_CASTLE_PROPERTY_VIOLATED
public static final int ERROR_NO_KNIGHT_FOUND
public static final int ERROR_KNIGHT_ON_TARGET_CELL
public static final int ERROR_NO_STRAIGHT_MOVE
public static final int ERROR_MOVE_TOO_LONG
public static final int ERROR_ILLEGAL_MOVE_THROUGH_CASTLE
public static final int ERROR_NO_MORE_CARDS_LEFT
public static final int ERROR_ONLY_TWO_CARDS_ALLOWED
public static final int ERROR_DOESNT_HAVE_ACTIONCARD
public static final int ERROR_CASTLE_SPLIT
public static final int ERROR_NOT_ENOUGH_CASTLES
public static final int ERROR_IMPOSSIBLE_MOVE
public static final int ERROR_NO_MORE_KNIGHTS_LEFT
public static final int ERROR_ACTIONCARD_IS_NEW
public static final int ERROR_PLAY_ONLY_ONE_CARD
public static final int ERROR_ILLEGAL_MOVE
public static final int ERROR_CARD_NOT_NEEDED
public static final int ERROR_TOO_FEW_CASTLE
public static final int ERROR_WRONG_ROUND
ActionMoveKing
in
einer ganz normalen Runde.
public static final int ERROR_NO_CASTLE
Method Detail |
public void execute(Game game)
public boolean isLegal(Game game)
public abstract int getErrorCode(Game game)
isLegal(Game)
, nur wird statt einem Boolean eine
ERROR_CODE_XXXX
-Konstante zurückgegeben. Diese
Methode muss in den Unterklassen von der Regelgruppe überschrieben
werden.
public java.util.Vector getActionMoveKnightsForLongMove(Game game, java.awt.Point fromPoint, java.awt.Point toPoint)
public Board getPossibleLocations(int maxPoints, int usedPoints, Game game, java.awt.Point fromPoint, Board workBoard)
public int[] getCostsOfPossibleMoves(Game game, java.awt.Point startPoint)
public java.util.Vector getPossibleLongMoves(Game game, java.awt.Point fromPoint)
public boolean[] getPossibleSetKnight(Game game, int id)
public boolean[] getPossibleMoves(Game game, java.awt.Point fromPoint)
public java.util.Vector getPossibleStartPoints(Game game)
Vector
mit allen legalen Startfeldern für diese
Aktion zurück.
java.lang.UnsupportedOperationException
- für Aktionen, die keinen Startpunkt
haben (z.B. ActionPutStone
)public java.util.Vector getPossibleEndPoints(Game game)
Vector
mit allen legalen Zielfeldern für diese
Aktion zurück.
java.lang.UnsupportedOperationException
- für Aktionen, die keinen Endpunkt
haben (z.B. ActionBuyScore
)public int getCost(Game game)
public boolean needsParameters()
Action
keine Parameter braucht,
wie z.B. ActionEndTurn
oder ActionCard6Points
.
public boolean needsOnePoint()
Action
ein Parameterfeld braucht,
wie z.B. ActionPutStone
oder ActionActivateKnight
.
public boolean needsTwoPoints()
Action
ein Parameterfeld braucht,
wie z.B. ActionCardMoveStone
oder ActionMoveKnight
.
public boolean isKnightAction()
Action
einen Ritter verändert
(bewegt oder einsetzt).
public boolean isKingAction()
Action
einen König verändert
(bewegt oder einsetzt).
public boolean isActionCard()
Action
einen Ritter verändert
(bewegt oder einsetzt).
public boolean isStoneAction()
Action
einen Stein verändert
(bewegt oder einsetzt).
public boolean isBuyCardAction()
Action
eine Karte kauft.
public boolean isnewKnightAction()
Action
einen Ritter einsetzt.
public boolean hasStartPoint()
java.lang.UnsupportedOperationException
- wenn die Action
keine zwei-Parameter-Aktion ist.public void setPoint(java.awt.Point point)
Action
s verwendet
werden, die genau einen Parameterpunkt brauchen, wie
ActionPutStone
, ActionActivateKnight
und
ActionMoveKing
.
java.lang.UnsupportedOperationException
- wenn die
Action
zwei oder gar keinen Parameterpunkt braucht.public void setPoint(int x, int y)
setPoint(Point)
.
java.lang.UnsupportedOperationException
- wenn die
Action
zwei oder gar keinen Parameterpunkt braucht.public void setPoints(java.awt.Point start, java.awt.Point end)
Action
s
verwendet werden, die genau zwei Parameterpunkte brauchen,
z.B. ActionMoveKnight
oder ActionCardAnyGate
.
start
- Startfeld der Bewegungend
- Endfeld der Bewegung
java.lang.UnsupportedOperationException
- wenn die
Action
einen oder gar keinen Parameterpunkt
braucht.public void setStartPoint(java.awt.Point start)
Action
s
verwendet werden, die genau zwei Parameterpunkte brauchen,
z.B. ActionMoveKnight
oder ActionCardAnyGate
.
start
- Startfeld der Bewegung
java.lang.UnsupportedOperationException
- wenn die
Action
einen oder gar keinen Parameterpunkt
braucht.public void setEndPoint(java.awt.Point end)
Action
s
verwendet werden, die genau zwei Parameterpunkte brauchen,
z.B. ActionMoveKnight
oder ActionCardAnyGate
.
end
- Endfeld der Bewegungpublic java.awt.Point getStartPoint()
Action
zurück, oder
null
, falls er noch nicht festgelegt wurde.
public java.awt.Point getStartPoint4Move()
public java.awt.Point getEndPoint4Move()
public int getID()
public void setID(int id)
public java.awt.Point getPointFromIndex(int i)
public static java.lang.String getError(int error)
public java.lang.String toString()
toString
in class java.lang.Object
public java.lang.String toServer()
public java.lang.Object clone()
clone
in class java.lang.Object
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |