package main import ( "flag" "log" "math/rand" "time" hbclient "bitbucket.org/hackerbots/client" hbserver "bitbucket.org/hackerbots/server" ) var hp = flag.Int("hp", 50, "") var speed = flag.Int("speed", 50, "") var acceleration = flag.Int("acceleration", 50, "") var scannerRadius = flag.Int("srad", 50, "scanner radius") var turnSpeed = flag.Int("omega", 50, "turn speed") var fireRate = flag.Int("fire-rate", 50, "scanner radius") var weaponRadius = flag.Int("wrad", 50, "weapon radius") var weaponDamage = flag.Int("wdamage", 50, "weapons umph") var weaponSpeed = flag.Int("wspeed", 50, "weapons speed") // XXX: add TurnSpeed, WeaponDamage, WeaponSpeed var server = flag.String("server", "localhost", "server hostname") var port = flag.Int("port", 8666, "server port") var botname = flag.String("name", "gobot", "the name that other players will see") var verbose = flag.Bool("verbose", false, "run verbosly") var forceJSON = flag.Bool("json", false, "force json encoding") func main() { log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile) rand.Seed(time.Now().UnixNano()) var gameId string flag.Parse() if flag.NArg() < 1 { gameId = "debug" } else { gameId = flag.Arg(0) } c := &hbclient.Client{ Server: *server, Port: *port, Name: *botname, GameId: gameId, // XXX: update with missing fields StatsReq: hbserver.StatsRequest{ Hp: *hp, Speed: *speed, Acceleration: *acceleration, ScannerRadius: *scannerRadius, TurnSpeed: *turnSpeed, FireRate: *fireRate, WeaponRadius: *weaponRadius, WeaponDamage: *weaponDamage, WeaponSpeed: *weaponSpeed, }, Verbose: *verbose, ForceJSON: *forceJSON, } var err error err = c.Negociate() if err != nil { log.Printf("%s: failed to negociate: %s", c.Name, err) } c.Player = hbclient.NewSimplePlayer( c.Game.BoardSize.Width, c.Game.BoardSize.Height, ) if err := c.Play(); err != nil { log.Fatal(err) } }