This commit is contained in:
Luke Meyers 2020-02-09 08:42:10 -08:00
parent 06abd29278
commit fa6bba4647
4 changed files with 58 additions and 58 deletions

View File

@ -1,5 +1,13 @@
package game
func pollCommands(s State) []Command {
cmds := make([]Command, len(s.Teams))
for i := range s.Teams {
cmds[i] = chooseCommand(s, i)
}
return cmds
}
func chooseCommand(s State, teamID int) Command {
return chooseCommandHelper(s, teamID, aiDepth)
}

View File

@ -54,14 +54,6 @@ func CommandLoop(w *pixelgl.Window, s State, stateCA chan<- State) {
}
}
func pollCommands(s State) []Command {
cmds := make([]Command, len(s.Teams))
for i := range s.Teams {
cmds[i] = chooseCommand(s, i)
}
return cmds
}
func doCommand(cmd Command, s State, teamID int) State {
da := 1

View File

@ -28,9 +28,51 @@ type Racer struct {
Battery Battery
}
type Kinetics struct {
V int
A int
func ActiveRacer(t Team) *Racer {
for _, r := range t.Racers {
if r.ID == t.Baton.HolderID {
rr := r
return &rr
}
}
return nil
}
func updateRacer(s State, r Racer) State {
t := s.Teams[r.TeamID]
for i, rr := range t.Racers {
if rr.ID == r.ID {
racers := append([]Racer{}, t.Racers[:i]...)
racers = append(racers, r)
racers = append(racers, t.Racers[i+1:]...)
t.Racers = racers
break
}
}
s = updateTeam(s, t)
return s
}
func updateTeam(s State, t Team) State {
teams := append([]Team{}, s.Teams[:t.id]...)
teams = append(teams, t)
teams = append(teams, s.Teams[t.id+1:]...)
s.Teams = teams
return s
}
func destroyRacer(s State, r Racer) State {
// insert derelict where racer was
s.Derelicts = append(s.Derelicts, Obstacle{Position: r.Position})
// spawn racer back at starting position
r.Position = s.SpawnPoints[r.ID].Pos
r.Kinetics = Kinetics{}
r.Battery.Charge = r.Battery.Capacity
return updateRacer(s, r)
}
type Battery struct {
@ -90,53 +132,6 @@ func maybePassBaton(s State, teamID int) State {
return s
}
func ActiveRacer(t Team) *Racer {
for _, r := range t.Racers {
if r.ID == t.Baton.HolderID {
rr := r
return &rr
}
}
return nil
}
func updateRacer(s State, r Racer) State {
t := s.Teams[r.TeamID]
for i, rr := range t.Racers {
if rr.ID == r.ID {
racers := append([]Racer{}, t.Racers[:i]...)
racers = append(racers, r)
racers = append(racers, t.Racers[i+1:]...)
t.Racers = racers
break
}
}
s = updateTeam(s, t)
return s
}
func updateTeam(s State, t Team) State {
teams := append([]Team{}, s.Teams[:t.id]...)
teams = append(teams, t)
teams = append(teams, s.Teams[t.id+1:]...)
s.Teams = teams
return s
}
func destroyRacer(s State, r Racer) State {
// insert derelict where racer was
s.Derelicts = append(s.Derelicts, Obstacle{Position: r.Position})
// spawn racer back at starting position
r.Position = s.SpawnPoints[r.ID].Pos
r.Kinetics = Kinetics{}
r.Battery.Charge = r.Battery.Capacity
return updateRacer(s, r)
}
func won(r Racer, s State) bool {
return r.Position.Pos >= Steps
}

View File

@ -5,6 +5,11 @@ type Position struct {
Pos int
}
type Kinetics struct {
V int
A int
}
func accelerate(r Racer) Racer {
if r.Kinetics.A < -MaxA {
r.Kinetics.A = -MaxA