Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DEV-1310: change all "int32" types to "int" #75

Merged
merged 1 commit into from
May 25, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 22 additions & 22 deletions board.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,17 @@ package rules
import "fmt"

type BoardState struct {
Turn int32
Height int32
Width int32
Turn int
Height int
Width int
Food []Point
Snakes []Snake
Hazards []Point
}

type Point struct {
X int32
Y int32
X int
Y int
}

// Makes it easier to copy sample points out of Go logs and test failures.
Expand All @@ -24,14 +24,14 @@ func (p Point) GoString() string {
type Snake struct {
ID string
Body []Point
Health int32
Health int
EliminatedCause string
EliminatedOnTurn int32
EliminatedOnTurn int
EliminatedBy string
}

// NewBoardState returns an empty but fully initialized BoardState
func NewBoardState(width, height int32) *BoardState {
func NewBoardState(width, height int) *BoardState {
return &BoardState{
Turn: 0,
Height: height,
Expand Down Expand Up @@ -66,7 +66,7 @@ func (prevState *BoardState) Clone() *BoardState {
// "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 CreateDefaultBoardState(rand Rand, width int32, height int32, snakeIDs []string) (*BoardState, error) {
func CreateDefaultBoardState(rand Rand, width int, height int, snakeIDs []string) (*BoardState, error) {
initialBoardState := NewBoardState(width, height)

err := PlaceSnakesAutomatically(rand, initialBoardState, snakeIDs)
Expand Down Expand Up @@ -101,7 +101,7 @@ func PlaceSnakesFixed(rand Rand, b *BoardState, snakeIDs []string) error {
}

// Create start 8 points
mn, md, mx := int32(1), (b.Width-1)/2, b.Width-2
mn, md, mx := 1, (b.Width-1)/2, b.Width-2
cornerPoints := []Point{
{mn, mn},
{mn, mx},
Expand Down Expand Up @@ -207,7 +207,7 @@ func PlaceFoodAutomatically(rand Rand, b *BoardState) error {
if isKnownBoardSize(b) {
return PlaceFoodFixed(rand, b)
}
return PlaceFoodRandomly(rand, b, int32(len(b.Snakes)))
return PlaceFoodRandomly(rand, b, len(b.Snakes))
}

func PlaceFoodFixed(rand Rand, b *BoardState) error {
Expand Down Expand Up @@ -289,8 +289,8 @@ func PlaceFoodFixed(rand Rand, b *BoardState) error {
}

// PlaceFoodRandomly adds up to n new food to the board in random unoccupied squares
func PlaceFoodRandomly(rand Rand, b *BoardState, n int32) error {
for i := int32(0); i < n; i++ {
func PlaceFoodRandomly(rand Rand, b *BoardState, n int) error {
for i := 0; i < n; i++ {
unoccupiedPoints := GetUnoccupiedPoints(b, false)
if len(unoccupiedPoints) > 0 {
newFood := unoccupiedPoints[rand.Intn(len(unoccupiedPoints))]
Expand All @@ -300,7 +300,7 @@ func PlaceFoodRandomly(rand Rand, b *BoardState, n int32) error {
return nil
}

func absInt32(n int32) int32 {
func absInt(n int) int {
if n < 0 {
return -n
}
Expand All @@ -323,10 +323,10 @@ func GetEvenUnoccupiedPoints(b *BoardState) []Point {
}

func GetUnoccupiedPoints(b *BoardState, includePossibleMoves bool) []Point {
pointIsOccupied := map[int32]map[int32]bool{}
pointIsOccupied := map[int]map[int]bool{}
for _, p := range b.Food {
if _, xExists := pointIsOccupied[p.X]; !xExists {
pointIsOccupied[p.X] = map[int32]bool{}
pointIsOccupied[p.X] = map[int]bool{}
}
pointIsOccupied[p.X][p.Y] = true
}
Expand All @@ -336,7 +336,7 @@ func GetUnoccupiedPoints(b *BoardState, includePossibleMoves bool) []Point {
}
for i, p := range snake.Body {
if _, xExists := pointIsOccupied[p.X]; !xExists {
pointIsOccupied[p.X] = map[int32]bool{}
pointIsOccupied[p.X] = map[int]bool{}
}
pointIsOccupied[p.X][p.Y] = true

Expand All @@ -349,7 +349,7 @@ func GetUnoccupiedPoints(b *BoardState, includePossibleMoves bool) []Point {
}
for _, nextP := range nextMovePoints {
if _, xExists := pointIsOccupied[nextP.X]; !xExists {
pointIsOccupied[nextP.X] = map[int32]bool{}
pointIsOccupied[nextP.X] = map[int]bool{}
}
pointIsOccupied[nextP.X][nextP.Y] = true
}
Expand All @@ -358,8 +358,8 @@ func GetUnoccupiedPoints(b *BoardState, includePossibleMoves bool) []Point {
}

unoccupiedPoints := []Point{}
for x := int32(0); x < b.Width; x++ {
for y := int32(0); y < b.Height; y++ {
for x := 0; x < b.Width; x++ {
for y := 0; y < b.Height; y++ {
if _, xExists := pointIsOccupied[x]; xExists {
if isOccupied, yExists := pointIsOccupied[x][y]; yExists {
if isOccupied {
Expand All @@ -373,8 +373,8 @@ func GetUnoccupiedPoints(b *BoardState, includePossibleMoves bool) []Point {
return unoccupiedPoints
}

func getDistanceBetweenPoints(a, b Point) int32 {
return absInt32(a.X-b.X) + absInt32(a.Y-b.Y)
func getDistanceBetweenPoints(a, b Point) int {
return absInt(a.X-b.X) + absInt(a.Y-b.Y)
}

func isKnownBoardSize(b *BoardState) bool {
Expand Down
20 changes: 10 additions & 10 deletions board_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ func sortPoints(p []Point) {

func TestCreateDefaultBoardState(t *testing.T) {
tests := []struct {
Height int32
Width int32
Height int
Width int
IDs []string
ExpectedNumFood int
Err error
Expand Down Expand Up @@ -196,15 +196,15 @@ func TestPlaceSnakesDefault(t *testing.T) {

for _, test := range tests {
t.Run(fmt.Sprint(test.BoardState.Width, test.BoardState.Height, len(test.SnakeIDs)), func(t *testing.T) {
require.Equal(t, test.BoardState.Width*test.BoardState.Height, int32(len(GetUnoccupiedPoints(test.BoardState, true))))
require.Equal(t, test.BoardState.Width*test.BoardState.Height, len(GetUnoccupiedPoints(test.BoardState, true)))
err := PlaceSnakesAutomatically(MaxRand, test.BoardState, test.SnakeIDs)
require.Equal(t, test.Err, err, "Snakes: %d", len(test.BoardState.Snakes))
if err == nil {
for i := 0; i < len(test.BoardState.Snakes); i++ {
require.Len(t, test.BoardState.Snakes[i].Body, 3)
for _, point := range test.BoardState.Snakes[i].Body {
require.GreaterOrEqual(t, point.X, int32(0))
require.GreaterOrEqual(t, point.Y, int32(0))
require.GreaterOrEqual(t, point.X, 0)
require.GreaterOrEqual(t, point.Y, 0)
require.Less(t, point.X, test.BoardState.Width)
require.Less(t, point.Y, test.BoardState.Height)
}
Expand Down Expand Up @@ -400,8 +400,8 @@ func TestPlaceFood(t *testing.T) {
require.NoError(t, err)
require.Equal(t, test.ExpectedFood, len(test.BoardState.Food))
for _, point := range test.BoardState.Food {
require.GreaterOrEqual(t, point.X, int32(0))
require.GreaterOrEqual(t, point.Y, int32(0))
require.GreaterOrEqual(t, point.X, 0)
require.GreaterOrEqual(t, point.Y, 0)
require.Less(t, point.X, test.BoardState.Width)
require.Less(t, point.Y, test.BoardState.Height)
}
Expand Down Expand Up @@ -590,7 +590,7 @@ func TestGetDistanceBetweenPoints(t *testing.T) {
tests := []struct {
A Point
B Point
Expected int32
Expected int
}{
{Point{0, 0}, Point{0, 0}, 0},
{Point{0, 0}, Point{1, 0}, 1},
Expand All @@ -611,8 +611,8 @@ func TestGetDistanceBetweenPoints(t *testing.T) {

func TestIsKnownBoardSize(t *testing.T) {
tests := []struct {
Width int32
Height int32
Width int
Height int
Expected bool
}{
{1, 1, false},
Expand Down
18 changes: 9 additions & 9 deletions cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,25 +32,25 @@ Usage:
battlesnake play [flags]

Flags:
-W, --width int32 Width of Board (default 11)
-H, --height int32 Height of Board (default 11)
-W, --width int Width of Board (default 11)
-H, --height int Height of Board (default 11)
-n, --name stringArray Name of Snake
-u, --url stringArray URL of Snake
-S, --squad stringArray Squad of Snake
-t, --timeout int32 Request Timeout (default 500)
-t, --timeout int Request Timeout (default 500)
-s, --sequential Use Sequential Processing
-g, --gametype string Type of Game Rules (default "standard")
-v, --viewmap View the Map Each Turn
-c, --color Use color to draw the map
-r, --seed int Random Seed (default 1649588785026867900)
-d, --delay int32 Turn Delay in Milliseconds
-D, --duration int32 Minimum Turn Duration in Milliseconds
-d, --delay int Turn Delay in Milliseconds
-D, --duration int Minimum Turn Duration in Milliseconds
--debug-requests Log body of all requests sent
-o, --output string File path to output game state to. Existing files will be overwritten
--foodSpawnChance int32 Percentage chance of spawning a new food every round (default 15)
--minimumFood int32 Minimum food to keep on the board every turn (default 1)
--hazardDamagePerTurn int32 Health damage a snake will take when ending its turn in a hazard (default 14)
--shrinkEveryNTurns int32 In Royale mode, the number of turns between generating new hazards (default 25)
--foodSpawnChance int Percentage chance of spawning a new food every round (default 15)
--minimumFood int Minimum food to keep on the board every turn (default 1)
--hazardDamagePerTurn int Health damage a snake will take when ending its turn in a hazard (default 14)
--shrinkEveryNTurns int In Royale mode, the number of turns between generating new hazards (default 25)
-h, --help help for play

Global Flags:
Expand Down
50 changes: 25 additions & 25 deletions cli/commands/play.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,28 +35,28 @@ type SnakeState struct {
}

var GameId string
var Turn int32
var Turn int
var HttpClient http.Client
var Width int32
var Height int32
var Width int
var Height int
var Names []string
var URLs []string
var Squads []string
var Timeout int32
var TurnDuration int32
var Timeout int
var TurnDuration int
var Sequential bool
var GameType string
var ViewMap bool
var UseColor bool
var Seed int64
var TurnDelay int32
var TurnDelay int
var DebugRequests bool
var Output string

var FoodSpawnChance int32
var MinimumFood int32
var HazardDamagePerTurn int32
var ShrinkEveryNTurns int32
var FoodSpawnChance int
var MinimumFood int
var HazardDamagePerTurn int
var ShrinkEveryNTurns int

var defaultConfig = map[string]string{
// default to standard ruleset
Expand All @@ -79,26 +79,26 @@ var playCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(playCmd)

playCmd.Flags().Int32VarP(&Width, "width", "W", 11, "Width of Board")
playCmd.Flags().Int32VarP(&Height, "height", "H", 11, "Height of Board")
playCmd.Flags().IntVarP(&Width, "width", "W", 11, "Width of Board")
playCmd.Flags().IntVarP(&Height, "height", "H", 11, "Height of Board")
playCmd.Flags().StringArrayVarP(&Names, "name", "n", nil, "Name of Snake")
playCmd.Flags().StringArrayVarP(&URLs, "url", "u", nil, "URL of Snake")
playCmd.Flags().StringArrayVarP(&Names, "squad", "S", nil, "Squad of Snake")
playCmd.Flags().Int32VarP(&Timeout, "timeout", "t", 500, "Request Timeout")
playCmd.Flags().IntVarP(&Timeout, "timeout", "t", 500, "Request Timeout")
playCmd.Flags().BoolVarP(&Sequential, "sequential", "s", false, "Use Sequential Processing")
playCmd.Flags().StringVarP(&GameType, "gametype", "g", "standard", "Type of Game Rules")
playCmd.Flags().BoolVarP(&ViewMap, "viewmap", "v", false, "View the Map Each Turn")
playCmd.Flags().BoolVarP(&UseColor, "color", "c", false, "Use color to draw the map")
playCmd.Flags().Int64VarP(&Seed, "seed", "r", time.Now().UTC().UnixNano(), "Random Seed")
playCmd.Flags().Int32VarP(&TurnDelay, "delay", "d", 0, "Turn Delay in Milliseconds")
playCmd.Flags().Int32VarP(&TurnDuration, "duration", "D", 0, "Minimum Turn Duration in Milliseconds")
playCmd.Flags().IntVarP(&TurnDelay, "delay", "d", 0, "Turn Delay in Milliseconds")
playCmd.Flags().IntVarP(&TurnDuration, "duration", "D", 0, "Minimum Turn Duration in Milliseconds")
playCmd.Flags().BoolVar(&DebugRequests, "debug-requests", false, "Log body of all requests sent")
playCmd.Flags().StringVarP(&Output, "output", "o", "", "File path to output game state to. Existing files will be overwritten")

playCmd.Flags().Int32Var(&FoodSpawnChance, "foodSpawnChance", 15, "Percentage chance of spawning a new food every round")
playCmd.Flags().Int32Var(&MinimumFood, "minimumFood", 1, "Minimum food to keep on the board every turn")
playCmd.Flags().Int32Var(&HazardDamagePerTurn, "hazardDamagePerTurn", 14, "Health damage a snake will take when ending its turn in a hazard")
playCmd.Flags().Int32Var(&ShrinkEveryNTurns, "shrinkEveryNTurns", 25, "In Royale mode, the number of turns between generating new hazards")
playCmd.Flags().IntVar(&FoodSpawnChance, "foodSpawnChance", 15, "Percentage chance of spawning a new food every round")
playCmd.Flags().IntVar(&MinimumFood, "minimumFood", 1, "Minimum food to keep on the board every turn")
playCmd.Flags().IntVar(&HazardDamagePerTurn, "hazardDamagePerTurn", 14, "Health damage a snake will take when ending its turn in a hazard")
playCmd.Flags().IntVar(&ShrinkEveryNTurns, "shrinkEveryNTurns", 25, "In Royale mode, the number of turns between generating new hazards")

playCmd.Flags().SortFlags = false
}
Expand Down Expand Up @@ -256,7 +256,7 @@ func initializeBoardFromArgs(ruleset rules.Ruleset, snakeStates map[string]Snake
return state
}

func createNextBoardState(ruleset rules.Ruleset, state *rules.BoardState, snakeStates map[string]SnakeState, turn int32) *rules.BoardState {
func createNextBoardState(ruleset rules.Ruleset, state *rules.BoardState, snakeStates map[string]SnakeState, turn int) *rules.BoardState {
var moves []rules.SnakeMove
if Sequential {
for _, snakeState := range snakeStates {
Expand Down Expand Up @@ -391,7 +391,7 @@ func convertRulesSnake(snake rules.Snake, snakeState SnakeState) client.Snake {
Body: client.CoordFromPointArray(snake.Body),
Latency: "0",
Head: client.CoordFromPoint(snake.Body[0]),
Length: int32(len(snake.Body)),
Length: len(snake.Body),
Shout: "",
Squad: snakeState.Squad,
Customizations: client.Customizations{
Expand Down Expand Up @@ -518,15 +518,15 @@ func parseSnakeColor(color string) (int64, int64, int64) {
return 136, 136, 136
}

func printMap(state *rules.BoardState, snakeStates map[string]SnakeState, gameTurn int32) {
func printMap(state *rules.BoardState, snakeStates map[string]SnakeState, gameTurn int) {
var o bytes.Buffer
o.WriteString(fmt.Sprintf("Ruleset: %s, Seed: %d, Turn: %v\n", GameType, Seed, gameTurn))
board := make([][]string, state.Width)
for i := range board {
board[i] = make([]string, state.Height)
}
for y := int32(0); y < state.Height; y++ {
for x := int32(0); x < state.Width; x++ {
for y := 0; y < state.Height; y++ {
for x := 0; x < state.Width; x++ {
if UseColor {
board[x][y] = TERM_FG_LIGHTGRAY + "□"
} else {
Expand Down Expand Up @@ -579,7 +579,7 @@ func printMap(state *rules.BoardState, snakeStates map[string]SnakeState, gameTu
if UseColor {
o.WriteString(TERM_BG_WHITE)
}
for x := int32(0); x < state.Width; x++ {
for x := 0; x < state.Width; x++ {
o.WriteString(board[x][y])
}
if UseColor {
Expand Down
Loading