de.torfu.kabayellow.common
Class NetworkGame

java.lang.Object
  |
  +--de.torfu.kabayellow.common.Game
        |
        +--de.torfu.kabayellow.common.NetworkGame
All Implemented Interfaces:
Client

public class NetworkGame
extends Game
implements Client

Eine Unterklasse von Game, die mit dem Server reden kann, also ausgeführte Aktionen an den Server verschickt und seine Antworten verarbeitet.


Field Summary
 
Fields inherited from class de.torfu.kabayellow.common.Game
CARD_TYPES, INITIAL_ACTION_POINTS, MAX_CARDS, MAX_KNIGHTS
 
Constructor Summary
NetworkGame(int playerCount)
          Erzeugt ein neues Netzwerkspiel.
NetworkGame(Server server, int playerCount, de.torfu.kabayellow.communication.GameStatus status)
          Erzeugt ein neues Spiel auf der Basis eines gegebenen GameStatus-Objekts.
 
Method Summary
 boolean canUndoPreviousAction()
          Gibt zurück, ob die zuletzt ausgeführte Aktion mit undoPreviousAction() rückgängig gemacht werden kann.
 void endTurn()
           
 void executeServerAction(Action action)
          Führt eine Action in diesem Spiel aus.
 void gameOver()
          Der Server meldet das Ende des Spiels.
 void receiveChatMessage(int playerID, java.lang.String message)
          Empfängt eine Chatnachricht vom Server und leitet sie an den AbstractPlayer weiter.
 void receiveGameStatus(de.torfu.kabayellow.communication.GameStatus status)
          Der Server meldet den aktuellen GameStatus.
 void sendChatMessage(java.lang.String message)
          Ermöglicht es, eine ChatMessage an das Spiel, also an alle teilnehmenden Spieler zu schicken.
 void setServer(Server server)
          Baut die Verbindung zwischen Client und Server auf.
 void startTurn(int playerID)
          Der Server meldet, dass dieser Spieler am Zug ist.
 void timeout()
          Der Zug des lokalen Spielers wurde wegen Zeitüberschreitung vorzeitig beendet.
 void undoPreviousAction()
          Nimmt die zuletzt ausgeführte Aktion zurück.
 void undoTurn()
          Nimmt alle vom aktuellen Spieler ausgeführten Züge zurück.
 void yourTurnMoveKing()
          Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und den König versetzen soll.
 void yourTurnNormal()
          Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und einen normalen Zug machen soll.
 void yourTurnSetFirstKnight()
          Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und seinen Startritter setzen soll.
 
Methods inherited from class de.torfu.kabayellow.common.Game
addGameObserver, calculateScores, createCopy, getAbstractPlayer, getAbstractPlayerID, getBoard, getCurrentPlayer, getGameIdentifier, getPhase, getPlayer, getPlayer, getPlayerCount, getPlayersName, getPreviousAction, getRemainingCards, getRemainingRounds, getRound, getRoundsOfPhase, getRoundsOfPhase, getStartingPlayer, getStonesForPhase, getStonesForPhase, getTimeout, hasStarted, isGameOver, isTurnMoveKing, isTurnNormal, isTurnSetFirstKnight, isWaitingForPlayers, printInfo, registerCountdownObserver, removeGameObserver, setAbstractPlayer, setControllingPlayer, setGameIdentifier
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NetworkGame

public NetworkGame(int playerCount)
Erzeugt ein neues Netzwerkspiel. Es muss mit setServer(de.torfu.kabayellow.common.Server) das Communicator-Objekt gesetzt werden.


NetworkGame

public NetworkGame(Server server,
                   int playerCount,
                   de.torfu.kabayellow.communication.GameStatus status)
Erzeugt ein neues Spiel auf der Basis eines gegebenen GameStatus-Objekts. Im Moment wird nur die Spielerliste ausgewertet, und das Spiel beginnt mit dem Setzen der ersten Ritter.

Method Detail

setServer

public void setServer(Server server)
Description copied from interface: Client
Baut die Verbindung zwischen Client und Server auf. Muss aufgerufen werden, bevor der Client Nachrichten an den Server schicken kann.

Specified by:
setServer in interface Client

receiveGameStatus

public void receiveGameStatus(de.torfu.kabayellow.communication.GameStatus status)
Description copied from interface: Client
Der Server meldet den aktuellen GameStatus. Das kann als Reaktion auf Server.getGameStatus() geschehen.

Specified by:
receiveGameStatus in interface Client

executeServerAction

public void executeServerAction(Action action)
Führt eine Action in diesem Spiel aus. Falls sie nicht den Regeln entspricht, wird eine RuntimeException ausgelöst.

Diese Methode muss vom Server aufgerufen werden, um eine Action auszuführen. Der AbstractPlayer verwendet statt dessen execute().

Specified by:
executeServerAction in interface Client
Parameters:
action - die vom Server gemeldete Action

startTurn

public void startTurn(int playerID)
Description copied from interface: Client
Der Server meldet, dass dieser Spieler am Zug ist. Wird sowohl für den AbstractPlayer als auch für andere Spieler abgeschickt.

Specified by:
startTurn in interface Client

sendChatMessage

public void sendChatMessage(java.lang.String message)
Description copied from class: Game
Ermöglicht es, eine ChatMessage an das Spiel, also an alle teilnehmenden Spieler zu schicken. Der Absender selbst bekommt die Nachricht auch zugestellt.

Overrides:
sendChatMessage in class Game
Parameters:
message - die abzuschickende Nachricht

receiveChatMessage

public void receiveChatMessage(int playerID,
                               java.lang.String message)
Empfängt eine Chatnachricht vom Server und leitet sie an den AbstractPlayer weiter. Darf nur vom Server aufgerufen werden.

Specified by:
receiveChatMessage in interface Client
Parameters:
playerID - Nummer des abschickenden Spielers
message - Text der Chatnachricht

timeout

public void timeout()
Der Zug des lokalen Spielers wurde wegen Zeitüberschreitung vorzeitig beendet. Darf nur vom Server aufgerufen werden.

Specified by:
timeout in interface Client

yourTurnSetFirstKnight

public void yourTurnSetFirstKnight()
Description copied from interface: Client
Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und seinen Startritter setzen soll.

Specified by:
yourTurnSetFirstKnight in interface Client

yourTurnMoveKing

public void yourTurnMoveKing()
Description copied from interface: Client
Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und den König versetzen soll.

Specified by:
yourTurnMoveKing in interface Client

yourTurnNormal

public void yourTurnNormal()
Description copied from interface: Client
Der Server hat gemeldet, dass der lokale Spieler an der Reihe ist und einen normalen Zug machen soll.

Specified by:
yourTurnNormal in interface Client

gameOver

public void gameOver()
Description copied from interface: Client
Der Server meldet das Ende des Spiels.

Specified by:
gameOver in interface Client

undoPreviousAction

public void undoPreviousAction()
Description copied from class: Game
Nimmt die zuletzt ausgeführte Aktion zurück. Vorher kann mit Game.canUndoPreviousAction() geprüft werden, ob sie reversibel ist.

Overrides:
undoPreviousAction in class Game

undoTurn

public void undoTurn()
Description copied from class: Game
Nimmt alle vom aktuellen Spieler ausgeführten Züge zurück.

Overrides:
undoTurn in class Game

canUndoPreviousAction

public boolean canUndoPreviousAction()
Description copied from class: Game
Gibt zurück, ob die zuletzt ausgeführte Aktion mit Game.undoPreviousAction() rückgängig gemacht werden kann. Wenn noch keine Aktionen ausgeführt wurden, wird false zurückgegeben.

Overrides:
canUndoPreviousAction in class Game

endTurn

public void endTurn()
Overrides:
endTurn in class Game