Package reversi

Class TextGameBoard

java.lang.Object
reversi.TextGameBoard
All Implemented Interfaces:
GameBoard

public class TextGameBoard
extends java.lang.Object
implements GameBoard
Implementation eines Reversi-Spielbretts inklusive nützlicher Hilfsfunktionen.
See Also:
Arena
  • Field Summary

    Fields inherited from interface reversi.GameBoard

    EMPTY, GREEN, RED
  • Constructor Summary

    Constructors 
    Constructor Description
    TextGameBoard()
    Erstellt eine neue Instanz von TextGameBoard, initialisiert mit der bei Reversi üblichen Startsituation aus 4 Steinen.
    TextGameBoard​(boolean othelloStartPosition)
    Erstellt eine neue Instanz von TextGameBoard, initialsiert ein TextGameBoard mit der bei Reversi oder Othello üblichen Startsituation.
    TextGameBoard​(GameBoard gb)
    Erstellt eine neue Instanz von TextGameBoard, die eine genaue Kopie der übergebenen Spielsituation gb repräsentiert.
  • Method Summary

    Modifier and Type Method Description
    boolean checkMove​(int player, Coordinates c)
    Diese Methode überprüft ob der Spieler player an die Position coord setzen dürfte.
    GameBoard clone()
    Legt eine Kopie des Spielbretts an.
    int countStones​(int player)
    Zählt die Anzahl der Steine für einen gegebenen Spieler.
    int getOccupation​(Coordinates c)
    Gibt die Belegung einer Position auf dem Spielfeld zurück
    int getSize()
    Gibt die Ausdehnung des Spielfeldes zurück.
    boolean isFull()
    Überprüft, ob das Spielfeld voll ist.
    boolean isMoveAvailable​(int player)
    Gibt true zurück, wenn ein gültiger Zug für den übergebenen Spieler existiert.
    void makeMove​(int player, Coordinates c)
    Diese Methode setzt einen Stein für den angegebenen Spieler auf dem angegebenen Feld, und dreht Steine des Gegners gemäss den Regeln um.
    java.lang.String toString()
    Erstellt einen mehrzeiligen String, der eine Textdarstellung der in dieser Instanz gespeicherten Spielsituation enthält.
    void updateBoard​(GameBoard gb)
    Kopiert die als Parameter übergebene Spielsituation in die aktuelle Instanz.
    boolean validCoordinates​(Coordinates c)
    Checks if the Coordinates are valid

    Methods inherited from class java.lang.Object

    equals, getClass, hashCode, notify, notifyAll, wait, wait, wait

    Methods inherited from interface reversi.GameBoard

    mobility
  • Constructor Details

    • TextGameBoard

      public TextGameBoard()
      Erstellt eine neue Instanz von TextGameBoard, initialisiert mit der bei Reversi üblichen Startsituation aus 4 Steinen.
    • TextGameBoard

      public TextGameBoard​(GameBoard gb)
      Erstellt eine neue Instanz von TextGameBoard, die eine genaue Kopie der übergebenen Spielsituation gb repräsentiert.
      Parameters:
      gb - eine gegebene Spielsituation
    • TextGameBoard

      public TextGameBoard​(boolean othelloStartPosition)
      Erstellt eine neue Instanz von TextGameBoard, initialsiert ein TextGameBoard mit der bei Reversi oder Othello üblichen Startsituation.
      Parameters:
      othelloStartPosition - True: othello start position (überkreuz) False: reversi start position (parallel)
  • Method Details

    • clone

      public GameBoard clone()
      Description copied from interface: GameBoard
      Legt eine Kopie des Spielbretts an. Das ist nützlich, um hypothetische Züge evaluieren zu können.
      Specified by:
      clone in interface GameBoard
      Returns:
      eine Kopie des Spielbretts.
    • getSize

      public int getSize()
      Description copied from interface: GameBoard
      Gibt die Ausdehnung des Spielfeldes zurück. Das Spielfeld ist 2-Dimensional und hat in beide Richtungen die selbe Ausdehnung.
      Specified by:
      getSize in interface GameBoard
      Returns:
      die Ausdehung des quadratischen Spielfeldes
    • validCoordinates

      public boolean validCoordinates​(Coordinates c)
      Description copied from interface: GameBoard
      Checks if the Coordinates are valid
      Specified by:
      validCoordinates in interface GameBoard
      Parameters:
      c - the coordinates in question
      Returns:
      true iff row and column of the coordinates are between 1 and GameBoard.getSize().
    • updateBoard

      public void updateBoard​(GameBoard gb)
      Kopiert die als Parameter übergebene Spielsituation in die aktuelle Instanz.
    • getOccupation

      public int getOccupation​(Coordinates c) throws OutOfBoundsException
      Description copied from interface: GameBoard
      Gibt die Belegung einer Position auf dem Spielfeld zurück
      Specified by:
      getOccupation in interface GameBoard
      Parameters:
      c - Ein Coordinates-Objekt, welches die Position auf dem Spielfeld spezifiziert.
      Returns:
      Eine der Konstanten GameBoard.RED, GameBoard.GREEN und GameBoard.EMPTY.
      Throws:
      OutOfBoundsException - Wird ausgelöst, wenn coord eine ungültige Position beschreibt. Gültige Werte sind: 1 <= row, col <= GameBoard.getSize().
    • isMoveAvailable

      public boolean isMoveAvailable​(int player)
      Description copied from interface: GameBoard
      Gibt true zurück, wenn ein gültiger Zug für den übergebenen Spieler existiert.
      Specified by:
      isMoveAvailable in interface GameBoard
      Parameters:
      player - Spezifiziert den Spieler (entweder GameBoard.RED oder GameBoard.GREEN), für den überprüft werden soll.
      Returns:
      true falls ein gültiger Zug existiert, false sonst.
    • checkMove

      public boolean checkMove​(int player, Coordinates c)
      Description copied from interface: GameBoard
      Diese Methode überprüft ob der Spieler player an die Position coord setzen dürfte.
      Specified by:
      checkMove in interface GameBoard
      Parameters:
      player - der Spieler, entweder GameBoard.RED or GameBoard.GREEN.
      c - die Koordinaten, die überprüft werden sollen.
      Returns:
      true, wenn Zug gültig, false sonst.
    • makeMove

      public void makeMove​(int player, Coordinates c)
      Description copied from interface: GameBoard
      Diese Methode setzt einen Stein für den angegebenen Spieler auf dem angegebenen Feld, und dreht Steine des Gegners gemäss den Regeln um. Vor dem Aufruf von makeMove muss ein Aufruf von checkMove mit dem selben Parametern erfolgen.
      Specified by:
      makeMove in interface GameBoard
      Parameters:
      player - der Spieler für den ein Stein gesetzt werden soll, entweder GameBoard.RED oder GameBoard.GREEN
      c - Koordinaten, wo der Stein gesetzt werden soll
    • isFull

      public boolean isFull()
      Description copied from interface: GameBoard
      Überprüft, ob das Spielfeld voll ist.
      Specified by:
      isFull in interface GameBoard
      Returns:
      true wenn ja, false sonst.
    • countStones

      public int countStones​(int player)
      Description copied from interface: GameBoard
      Zählt die Anzahl der Steine für einen gegebenen Spieler.
      Specified by:
      countStones in interface GameBoard
      Parameters:
      player - die Spielerfarbe
      Returns:
      die Anzahl der Steine in der gegebenen Spielerfarbe auf dem Spielfeld.
    • toString

      public java.lang.String toString()
      Erstellt einen mehrzeiligen String, der eine Textdarstellung der in dieser Instanz gespeicherten Spielsituation enthält.
      Overrides:
      toString in class java.lang.Object