-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.go
82 lines (69 loc) · 1.59 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"fmt"
"io/ioutil"
"log"
"os"
)
var TotalMissiles int
var Missles [][]Pos //for both player
func main() {
var b Board
ifname := "input.txt"
ofname := "output.txt"
fbytes, err := ioutil.ReadFile(ifname)
if err != nil {
log.Println("File not find", ifname)
return
}
if berr := b.LoadBoard(fbytes); berr != nil {
log.Println(berr)
return
} else {
log.Println("Game Board Loaded successfully from ", ifname)
// pretty.Print("Board b=", b)
// fmt.Printf("%v", b.Grid[0][0])
}
Missles, err = ParseMissileActions(fbytes)
if err != nil {
log.Print("Unable to Load Missiles Cant Continue ", err)
return
}
TotalMissiles = len(Missles[0])
for m := 0; m < TotalMissiles; m++ {
/// Launch Player 0
for p := 0; p < NPlayers; p++ {
hit := b.LaunchMissile(p, Missles[p][m])
var show string
if hit {
show = "✓"
} else {
show = "✗"
}
log.Printf("Player %d Launching Missile %d : HIT %v", p, m, show)
}
}
log.Print("Game Ended : ", b.Result())
// Uncomment below line to Visualize board !
// pretty.Print("Board b=\n", b)
// fmt.Printf("%v", Missles)
wd, ferr := os.Create(ofname)
if ferr != nil {
log.Panic(err)
}
defer wd.Close()
for p := 0; p < NPlayers; p++ {
fmt.Fprintf(wd, "Player %d\n", p+1)
for i := 0; i < b.GridSize; i++ {
for j := 0; j < b.GridSize; j++ {
fmt.Fprintf(wd, "%s ", b.Grid[p][i][j])
}
fmt.Fprintf(wd, "\n")
}
fmt.Fprintf(wd, "\n")
}
fmt.Fprintf(wd, "P1:%d\n", b.Hits[0])
fmt.Fprintf(wd, "P2:%d\n", b.Hits[1])
fmt.Fprintf(wd, b.Result())
log.Println("File Created ", ofname)
}