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
|
package main
import (
"strconv"
)
// printPrimary displays using ASCII art the primary battleship board
func (plyr player) PrimaryDisplay() string {
text := "\n A B C D E F G H I J \n"
for i := 0; i < 10; i++ {
text += strconv.Itoa(i)
text += " "
for j := 0; j < 10; j++ {
switch plyr.primary[i][j][2] {
case 0: // That coordinate was not hit
text += boatchars[1][plyr.primary[i][j][1]]
case 1: // That coordinates was hit
text += boatchars[0][plyr.primary[i][j][1]]
// default:
// return errors.New("Unknown State (hit/unhit) at a given coordinate")
}
text += " "
}
text += "\n"
}
// fmt.Println(text)
return text
}
func (plyr player) TargetDisplay() string {
text := "\n A B C D E F G H I J \n"
for i := 0; i < 10; i++ {
text += strconv.Itoa(i)
text += " "
for j := 0; j < 10; j++ {
switch plyr.target[i][j][0] {
case 0:
text += boatchars[1][0]
case 1:
if plyr.gains[plyr.prey.primary[i][j][0]] {
text += boatchars[0][plyr.prey.primary[i][j][1]]
} else {
switch plyr.prey.primary[i][j][0] {
case 0:
text += boatchars[0][0]
default:
text += mistery_hit
}
}
}
text += " "
}
text += "\n"
}
// fmt.Println(text)
return text
}
// TODO: Function which returns what was hit as a commentary for the hitter
/* Boats Info:
|------------+--------+----------------|
| BoatName | BoatID | HorizontalBoat |
| Carrier | 0 | ◁ ▭ ▭ ▭ ▷ |
| Battleship | 1 | ◁ ▭ ▭ ▷ |
| Destroyer | 2 | ▭ ▭ ▷ |
| Submarine | 3 | ◁ ▭ ▷ |
| PatrolBoat | 4 | ▭ ▷ |
|------------+--------+----------------|
*/
var boatchars = [2][7]string{
{`◌`, `▲`, `▼`, `◀`, `►`, `▮`, `▬`},
{`~`, `△`, `▽`, `◁`, `▷`, `▯`, `▭`},
}
// This constant keeps information about boats that aren't totally sunk secret.
// It therefore substitues the shape of a boat on the target board when it is unsunk.
const mistery_hit = `▣`
|