public class GameRuleLogic
Eine Sammlung an Funktionen, die die Spielregeln logisch umsetzen. Sie beinhalten primär Funktionen, um
den Spielstand zu modifizieren
mögliche Züge zu berechnen
und die Punkte einer Farbe zu berechnen.
public static int SUM_MAX_SQUARES
public static GameRuleLogic INSTANCE
Eine Sammlung an Funktionen, die die Spielregeln logisch umsetzen. Sie beinhalten primär Funktionen, um
den Spielstand zu modifizieren
mögliche Züge zu berechnen
und die Punkte einer Farbe zu berechnen.
@NotNull public org.slf4j.Logger getLogger()
@JvmStatic public static int getPointsFromUndeployed(@NotNull java.util.Collection<? extends sc.plugin2021.PieceShape> undeployed, boolean monoLast)
Berechne den Punktestand anhand der gegebenen enum PieceShape
s.
undeployed
- eine Sammlung aller nicht gelegten enum PieceShape
smonoLast
- ob der letzte gelegte Stein das Monomino warenum PieceShape
@JvmStatic public static void performMove(@NotNull GameState gameState, @NotNull Move move)
@JvmStatic public static void validateMoveColor(@NotNull GameState gameState, @NotNull Move move)
Prüfe, ob die Farbe des gegebenen class Move
s der aktiven Farbe des class GameState
s entspricht.
class Move
,
class GameState
@JvmStatic public static void validateSetMove(@NotNull GameState gameState, @NotNull SetMove move)
Prüfe, ob der gegebene class SetMove
gesetzt werden könnte.
InvalidMoveException
- wenn der Zug nicht valide warclass SetMove
@JvmStatic public static void validateShape(@NotNull GameState gameState, @NotNull PieceShape shape, @NotNull Color color)
Prüfe, ob der gegebene Spielstein auf dem Spielfeld platziert werden könnte. Fehler treten auf, wenn
im ersten Zug nicht der vorgegebene Stein
in nachfolgenden Zügen bereits gesetzte Steine gesetzt werden würde(n).
InvalidMoveException
- wenn der Zug nicht valide war@JvmStatic public static boolean isValidSetMove(@NotNull GameState gameState, @NotNull SetMove move)
Prüfe, ob der gegebene class Move
zulässig ist.
gameState
- der aktuelle Spielstandmove
- der zu überprüfende Zugclass Move
@JvmStatic public static void validateSetMove(@NotNull Board board, @NotNull SetMove move)
Prüfe, ob der gegebene class SetMove
auf dem class Board
platziert werden kann.
InvalidMoveException
- wenn der Zug nicht valide warclass SetMove
,
class Board
@JvmStatic public static void validateSkipMove(@NotNull GameState gameState)
Prüfe, ob die aktuelle Farbe den Zug überspringen kann.
InvalidMoveException
- wenn der Zug nicht valide war@JvmStatic public static boolean bordersOnColor(@NotNull Board board, @NotNull Field field)
Prüfe, ob das gegebene class Field
bereits an eins mit gleicher Farbe angrenzt.
class Field
@JvmStatic public static boolean cornersOnColor(@NotNull Board board, @NotNull Field field)
Prüfe, ob das gegebene Feld an die Ecke eines Feldes gleicher Farbe angrenzt.
@JvmStatic public static boolean isOnCorner(@NotNull Coordinates position)
Prüfe, ob die gegebene Position eine Ecke des Spielfelds ist.
@JvmStatic public static boolean isFirstMove(@NotNull GameState gameState)
Gib zurück, ob sich der class GameState
noch in der ersten Runde befindet.
class GameState
@JvmStatic @NotNull public static PieceShape getRandomPentomino()
x
one (Used to get a valid starting piece).@JvmStatic public static void removeInvalidColors(@NotNull GameState gameState)
Entferne alle Farben, die keine Steine mehr auf dem Feld platzieren können.
@JvmStatic @NotNull public static java.util.Collection<sc.plugin2021.SetMove> getPossibleMoves(@NotNull GameState gameState)
Gib eine Sammlung an möglichen class SetMove
s zurück.
class SetMove
@JvmStatic @NotNull public static kotlin.sequences.Sequence<sc.plugin2021.SetMove> streamPossibleMoves(@NotNull GameState gameState)
Gib eine Sequenz an möglichen class SetMove
s zurück.
class SetMove
@JvmStatic @NotNull public static kotlin.sequences.Sequence<sc.plugin2021.SetMove> streamAllPossibleMoves(@NotNull GameState gameState)
@JvmStatic @NotNull public static java.util.Set<sc.plugin2021.SetMove> getPossibleMovesForShape(@NotNull GameState gameState, @NotNull PieceShape shape)
Gib eine Sammlung aller möglichen class SetMove
s für die gegebene enum PieceShape
zurück.
class SetMove
,
enum PieceShape
@JvmStatic @NotNull public static kotlin.sequences.Sequence<sc.plugin2021.SetMove> streamPossibleMovesForShape(@NotNull GameState gameState, @NotNull PieceShape shape, @NotNull java.util.Set<sc.plugin2021.Coordinates> validFields)
Gib eine Sequenz aller möglichen class SetMove
s für die gegebene enum PieceShape
zurück.
class SetMove
,
enum PieceShape
@JvmStatic @NotNull public static java.util.Set<sc.plugin2021.Coordinates> getValidFields(@NotNull Board board, @NotNull Color color)
class Coordinates
, auf die die aktuelle enum Color
Steine platzieren könnte.@JvmStatic @NotNull public static java.util.Set<sc.plugin2021.Coordinates> getColoredFields(@NotNull Board board, @NotNull Color color)
class Coordinates
, deren Position auf dem class Board
die gegebene enum Color
hat.