2020-01-05 17:08:05 -08:00
|
|
|
package rules
|
2019-12-31 20:43:05 -08:00
|
|
|
|
2020-01-01 17:22:00 -08:00
|
|
|
const (
|
2020-01-02 16:10:33 -08:00
|
|
|
MoveUp = "up"
|
|
|
|
|
MoveDown = "down"
|
|
|
|
|
MoveRight = "right"
|
|
|
|
|
MoveLeft = "left"
|
2020-01-01 17:22:00 -08:00
|
|
|
)
|
2019-12-31 20:43:05 -08:00
|
|
|
|
|
|
|
|
type Point struct {
|
|
|
|
|
X int32
|
|
|
|
|
Y int32
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Snake struct {
|
|
|
|
|
ID string
|
2020-01-02 16:10:33 -08:00
|
|
|
Body []Point
|
2019-12-31 20:43:05 -08:00
|
|
|
Health int32
|
|
|
|
|
EliminatedCause string
|
|
|
|
|
}
|
|
|
|
|
|
2020-01-01 17:22:00 -08:00
|
|
|
type BoardState struct {
|
|
|
|
|
Height int32
|
|
|
|
|
Width int32
|
2020-01-02 16:10:33 -08:00
|
|
|
Food []Point
|
|
|
|
|
Snakes []Snake
|
2019-12-31 20:43:05 -08:00
|
|
|
}
|
|
|
|
|
|
2020-01-01 17:22:00 -08:00
|
|
|
type SnakeMove struct {
|
2020-01-02 16:10:33 -08:00
|
|
|
ID string
|
|
|
|
|
Move string
|
2020-01-01 17:22:00 -08:00
|
|
|
}
|
2019-12-31 20:43:05 -08:00
|
|
|
|
|
|
|
|
type Ruleset interface {
|
2020-01-01 17:22:00 -08:00
|
|
|
CreateInitialBoardState(width int32, height int32, snakeIDs []string) (*BoardState, error)
|
2020-01-02 16:10:33 -08:00
|
|
|
ResolveMoves(prevState *BoardState, moves []SnakeMove) (*BoardState, error)
|
2019-12-31 20:43:05 -08:00
|
|
|
}
|