Package apple.gameplaykit.protocol
Interface GKGameModel
-
- All Superinterfaces:
NSCopying
public interface GKGameModel extends NSCopying
A protocol for abstracting a game model for use with the GKMinmaxStrategist class. The minmax strategist uses the game model class, along with GKGameModelPlayer and GKGameModelUpdate to find optimal moves in an adversarial, turn-based game.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description @Nullable GKGameModelPlayeractivePlayer()The player whose turn it is to perform an update to the game model.voidapplyGameModelUpdate(@NotNull GKGameModelUpdate gameModelUpdate)Applies a GKGameModelUpdate to the game model, potentially resulting in a new activePlayer.@Nullable NSArray<?>gameModelUpdatesForPlayer(@NotNull GKGameModelPlayer player)Returns an array of all the GKGameModelUpdates (i.e.default booleanisLossForPlayer(@NotNull GKGameModelPlayer player)Returns YES if the specified player has reached a loss state, NO if otherwise.default booleanisWinForPlayer(@NotNull GKGameModelPlayer player)Returns YES if the specified player has reached a win state, NO if otherwise.@Nullable NSArray<?>players()Array of instances of GKGameModelPlayers representing players within this game model.default longscoreForPlayer(@NotNull GKGameModelPlayer player)Returns the score for the specified player.voidsetGameModel(@NotNull GKGameModel gameModel)Sets the data of another game model.default voidunapplyGameModelUpdate(@NotNull GKGameModelUpdate gameModelUpdate)-
Methods inherited from interface apple.foundation.protocol.NSCopying
copyWithZone
-
-
-
-
Method Detail
-
activePlayer
@Nullable @Nullable GKGameModelPlayer activePlayer()
The player whose turn it is to perform an update to the game model. GKMinmaxStrategist assumes that the next call to the applyGameModelUpdate: method will perform a move on behalf of this player.
-
applyGameModelUpdate
void applyGameModelUpdate(@NotNull @NotNull GKGameModelUpdate gameModelUpdate)Applies a GKGameModelUpdate to the game model, potentially resulting in a new activePlayer. GKMinmaxStrategist will call this method on a copy of the primary game model to speculate about possible future moves and their effects. It is assumed that calling this method performs a move on behalf of the player identified by the activePlayer property.
-
gameModelUpdatesForPlayer
@Nullable @Nullable NSArray<?> gameModelUpdatesForPlayer(@NotNull @NotNull GKGameModelPlayer player)
Returns an array of all the GKGameModelUpdates (i.e. actions/moves) that the active player can undertake, with one instance of GKGameModelUpdate for each possible move. Returns nil if the specified player is invalid, is not a part of the game model, or if there are no valid moves available.
-
isLossForPlayer
default boolean isLossForPlayer(@NotNull @NotNull GKGameModelPlayer player)Returns YES if the specified player has reached a loss state, NO if otherwise. Note that NO does not necessarily mean that the player has won. Optionally used by GKMinmaxStrategist to improve move selection.
-
isWinForPlayer
default boolean isWinForPlayer(@NotNull @NotNull GKGameModelPlayer player)Returns YES if the specified player has reached a win state, NO if otherwise. Note that NO does not necessarily mean that the player has lost. Optionally used by GKMinmaxStrategist to improve move selection.
-
players
@Nullable @Nullable NSArray<?> players()
Array of instances of GKGameModelPlayers representing players within this game model. When the GKMinmaxStrategist class is used to find an optimal move for a specific player, it uses this array to rate the moves of that player’s opponent(s).
-
scoreForPlayer
default long scoreForPlayer(@NotNull @NotNull GKGameModelPlayer player)Returns the score for the specified player. A higher value indicates a better position for the player than a lower value. Required by GKMinmaxStrategist to determine which GKGameModelUpdate is the most advantageous for a given player. If the player is invalid, or not a part of the game model, returns NSIntegerMin.
-
setGameModel
void setGameModel(@NotNull @NotNull GKGameModel gameModel)Sets the data of another game model. All data should be copied over, and should not maintain any pointers to the copied game state. This is used by the GKMinmaxStrategist to process permutations of the game without needing to apply potentially destructive updates to the primary game model.
-
unapplyGameModelUpdate
default void unapplyGameModelUpdate(@NotNull @NotNull GKGameModelUpdate gameModelUpdate)
-
-