Skip to content

Commit

Permalink
add demo warriors when no arguments are given (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
bobertlo authored Nov 20, 2024
1 parent d2e4581 commit dc1d239
Show file tree
Hide file tree
Showing 7 changed files with 54 additions and 36 deletions.
4 changes: 2 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
vmars
gmars
/vmars
/gmars
14 changes: 0 additions & 14 deletions cmd/vmars/game.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,20 +74,6 @@ func (g *Game) handleInput() {
}
}

func (g *Game) runCycle() {
if g.finished {
return
}

count := g.sim.WarriorCount()
living := g.sim.WarriorLivingCount()
if ((count > 1 && living > 1) || living > 0) && g.sim.CycleCount() < g.sim.MaxCycles() {
g.sim.RunCycle()
} else {
g.finished = true
}
}

func (g *Game) Update() error {
speed := speeds[g.speedStep]

Expand Down
40 changes: 27 additions & 13 deletions cmd/vmars/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -92,24 +92,38 @@ func main() {
if len(args) > 2 {
fmt.Fprintf(os.Stderr, "only 2 warrior battles supported")
os.Exit(1)
} else if len(args) == 0 {
fmt.Fprintf(os.Stderr, "loading demo warriors")
}

warriors := make([]gmars.WarriorData, 0)
for _, arg := range args {
in, err := os.Open(arg)
if err != nil {
fmt.Printf("error opening warrior file '%s': %s\n", arg, err)
os.Exit(1)
if len(args) == 0 {
for _, data := range [][]byte{gmars.BombSpiral_94_red, gmars.SimpleShot_94_red} {
warrior, err := gmars.CompileWarrior(bytes.NewReader(data), config)
if err != nil {
fmt.Printf("error compiling build-in warrior file: %s\n", err)
os.Exit(1)
}

warriors = append(warriors, warrior)
}
defer in.Close()

warrior, err := gmars.CompileWarrior(in, config)
if err != nil {
fmt.Fprintf(os.Stderr, "error parsing warrior file '%s': %s\n", arg, err)
os.Exit(1)
} else {
for _, arg := range args {
in, err := os.Open(arg)
if err != nil {
fmt.Printf("error opening warrior file '%s': %s\n", arg, err)
os.Exit(1)
}
defer in.Close()

warrior, err := gmars.CompileWarrior(in, config)
if err != nil {
fmt.Fprintf(os.Stderr, "error parsing warrior file '%s': %s\n", arg, err)
os.Exit(1)
}

warriors = append(warriors, warrior)
}

warriors = append(warriors, warrior)
}

sim, err := gmars.NewReportingSimulator(config)
Expand Down
15 changes: 15 additions & 0 deletions cmd/vmars/sim.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package main

func (g *Game) runCycle() {
if g.finished {
return
}

count := g.sim.WarriorCount()
living := g.sim.WarriorLivingCount()
if ((count > 1 && living > 1) || living > 0) && g.sim.CycleCount() < g.sim.MaxCycles() {
g.sim.RunCycle()
} else {
g.finished = true
}
}
9 changes: 6 additions & 3 deletions embed.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,14 @@ import (

var (
//go:embed warriors/88/imp.red
imp_88_red []byte
Imp_88_red []byte

//go:embed warriors/94/imp.red
imp_94_red []byte
Imp_94_red []byte

//go:embed warriors/94/simpleshot.red
simpleshot_94_red []byte
SimpleShot_94_red []byte

//go:embed warriors/94/bombspiral.red
BombSpiral_94_red []byte
)
4 changes: 2 additions & 2 deletions load_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type instructionParseTestCase struct {
func TestLoadImp88(t *testing.T) {
config := ConfigKOTH88

reader := bytes.NewReader(imp_88_red)
reader := bytes.NewReader(Imp_88_red)
data, err := ParseLoadFile(reader, config)
require.NoError(t, err)
require.Equal(t, "Imp", data.Name)
Expand All @@ -32,7 +32,7 @@ func TestLoadImp88(t *testing.T) {
func TestLoadImp94(t *testing.T) {
config := ConfigNOP94

reader := bytes.NewReader(imp_94_red)
reader := bytes.NewReader(Imp_94_red)
data, err := ParseLoadFile(reader, config)
require.NoError(t, err)
require.Equal(t, "Imp", data.Name)
Expand Down
4 changes: 2 additions & 2 deletions sim_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func TestSimDwarf(t *testing.T) {
}

func TestRunImp(t *testing.T) {
reader := bytes.NewReader(imp_88_red)
reader := bytes.NewReader(Imp_88_red)
config := ConfigKOTH88
impdata, err := ParseLoadFile(reader, config)
require.NoError(t, err)
Expand All @@ -66,7 +66,7 @@ func TestRunImp(t *testing.T) {
}

func TestRunTwoImps(t *testing.T) {
reader := bytes.NewReader(imp_88_red)
reader := bytes.NewReader(Imp_88_red)
config := ConfigKOTH88
impdata, err := ParseLoadFile(reader, config)
require.NoError(t, err)
Expand Down

0 comments on commit dc1d239

Please sign in to comment.