Documentation
¶
Index ¶
- Constants
- func PlaceFoodAutomatically(b *BoardState) error
- func PlaceFoodFixed(b *BoardState) error
- func PlaceFoodRandomly(b *BoardState, n int32) error
- func PlaceSnake(b *BoardState, snakeID string, body []Point) error
- func PlaceSnakesAutomatically(b *BoardState, snakeIDs []string) error
- func PlaceSnakesFixed(b *BoardState, snakeIDs []string) error
- func PlaceSnakesRandomly(b *BoardState, snakeIDs []string) error
- type BoardState
- type ConstrictorRuleset
- type Point
- type RoyaleRuleset
- type Ruleset
- type RulesetError
- type Snake
- type SnakeMove
- type SoloRuleset
- type SquadRuleset
- type StandardRuleset
- func (r *StandardRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
- func (r *StandardRuleset) IsGameOver(b *BoardState) (bool, error)
- func (r *StandardRuleset) ModifyInitialBoardState(initialState *BoardState) (*BoardState, error)
- func (r *StandardRuleset) Name() string
- type WrappedRuleset
Constants ¶
const ( MoveUp = "up" MoveDown = "down" MoveRight = "right" MoveLeft = "left" BoardSizeSmall = 7 BoardSizeMedium = 11 BoardSizeLarge = 19 SnakeMaxHealth = 100 SnakeStartSize = 3 // bvanvugt - TODO: Just return formatted strings instead of codes? NotEliminated = "" EliminatedByCollision = "snake-collision" EliminatedBySelfCollision = "snake-self-collision" EliminatedByOutOfHealth = "out-of-health" EliminatedByHeadToHeadCollision = "head-collision" EliminatedByOutOfBounds = "wall-collision" // TODO - Error consts ErrorTooManySnakes = RulesetError("too many snakes for fixed start positions") ErrorNoRoomForSnake = RulesetError("not enough space to place snake") ErrorNoRoomForFood = RulesetError("not enough space to place food") ErrorNoMoveFound = RulesetError("move not provided for snake") ErrorZeroLengthSnake = RulesetError("snake is length zero") )
const EliminatedBySquad = "squad-eliminated"
Variables ¶
This section is empty.
Functions ¶
func PlaceFoodAutomatically ¶ added in v1.0.21
func PlaceFoodAutomatically(b *BoardState) error
PlaceFoodAutomatically initializes the array of food based on the size of the board and the number of snakes.
func PlaceFoodFixed ¶ added in v1.0.21
func PlaceFoodFixed(b *BoardState) error
func PlaceFoodRandomly ¶ added in v1.0.21
func PlaceFoodRandomly(b *BoardState, n int32) error
PlaceFoodRandomly adds up to n new food to the board in random unoccupied squares
func PlaceSnake ¶ added in v1.0.21
func PlaceSnake(b *BoardState, snakeID string, body []Point) error
PlaceSnake adds a snake to the board with the given ID and body coordinates.
func PlaceSnakesAutomatically ¶ added in v1.0.21
func PlaceSnakesAutomatically(b *BoardState, snakeIDs []string) error
PlaceSnakesAutomatically initializes the array of snakes based on the provided snake IDs and the size of the board.
func PlaceSnakesFixed ¶ added in v1.0.21
func PlaceSnakesFixed(b *BoardState, snakeIDs []string) error
func PlaceSnakesRandomly ¶ added in v1.0.21
func PlaceSnakesRandomly(b *BoardState, snakeIDs []string) error
Types ¶
type BoardState ¶
func CreateDefaultBoardState ¶ added in v1.0.21
func CreateDefaultBoardState(width int32, height int32, snakeIDs []string) (*BoardState, error)
CreateDefaultBoardState is a convenience function for fully initializing a "default" board state with snakes and food. In a real game, the engine may generate the board without calling this function, or customize the results based on game-specific settings.
func NewBoardState ¶ added in v1.0.21
func NewBoardState(width, height int32) *BoardState
NewBoardState returns an empty but fully initialized BoardState
func (*BoardState) Clone ¶ added in v1.0.21
func (prevState *BoardState) Clone() *BoardState
Clone returns a deep copy of prevState that can be safely modified inside Ruleset.CreateNextBoardState
type ConstrictorRuleset ¶ added in v1.0.17
type ConstrictorRuleset struct {
StandardRuleset
}
func (*ConstrictorRuleset) CreateNextBoardState ¶ added in v1.0.17
func (r *ConstrictorRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
func (*ConstrictorRuleset) ModifyInitialBoardState ¶ added in v1.0.21
func (r *ConstrictorRuleset) ModifyInitialBoardState(initialBoardState *BoardState) (*BoardState, error)
type RoyaleRuleset ¶ added in v1.0.9
type RoyaleRuleset struct {
StandardRuleset
Seed int64
// TODO: move Turn into BoardState?
Turn int32
ShrinkEveryNTurns int32
}
func (*RoyaleRuleset) CreateNextBoardState ¶ added in v1.0.9
func (r *RoyaleRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
func (*RoyaleRuleset) Name ¶ added in v1.0.18
func (r *RoyaleRuleset) Name() string
type Ruleset ¶
type Ruleset interface {
Name() string
ModifyInitialBoardState(initialState *BoardState) (*BoardState, error)
CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
IsGameOver(state *BoardState) (bool, error)
}
type RulesetError ¶ added in v1.0.17
type RulesetError string
func (RulesetError) Error ¶ added in v1.0.17
func (err RulesetError) Error() string
type SoloRuleset ¶ added in v1.0.4
type SoloRuleset struct {
StandardRuleset
}
func (*SoloRuleset) IsGameOver ¶ added in v1.0.4
func (r *SoloRuleset) IsGameOver(b *BoardState) (bool, error)
func (*SoloRuleset) Name ¶ added in v1.0.18
func (r *SoloRuleset) Name() string
type SquadRuleset ¶ added in v1.0.8
type SquadRuleset struct {
StandardRuleset
SquadMap map[string]string
// These are intentionally designed so that they default to a standard game.
AllowBodyCollisions bool
}
func (*SquadRuleset) CreateNextBoardState ¶ added in v1.0.8
func (r *SquadRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
func (*SquadRuleset) IsGameOver ¶ added in v1.0.8
func (r *SquadRuleset) IsGameOver(b *BoardState) (bool, error)
func (*SquadRuleset) Name ¶ added in v1.0.18
func (r *SquadRuleset) Name() string
type StandardRuleset ¶
type StandardRuleset struct {
FoodSpawnChance int32 // [0, 100]
MinimumFood int32
HazardDamagePerTurn int32
}
func (*StandardRuleset) CreateNextBoardState ¶ added in v1.0.4
func (r *StandardRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
func (*StandardRuleset) IsGameOver ¶ added in v1.0.4
func (r *StandardRuleset) IsGameOver(b *BoardState) (bool, error)
func (*StandardRuleset) ModifyInitialBoardState ¶ added in v1.0.21
func (r *StandardRuleset) ModifyInitialBoardState(initialState *BoardState) (*BoardState, error)
func (*StandardRuleset) Name ¶ added in v1.0.18
func (r *StandardRuleset) Name() string
type WrappedRuleset ¶ added in v1.0.21
type WrappedRuleset struct {
StandardRuleset
}
func (*WrappedRuleset) CreateNextBoardState ¶ added in v1.0.21
func (r *WrappedRuleset) CreateNextBoardState(prevState *BoardState, moves []SnakeMove) (*BoardState, error)