Files

69 lines
1.4 KiB
Go

package models
import "fmt"
const (
minimumValueOnAXis = 0
)
// Zombie represents a zombie object
type Zombie struct {
GridSize int
Coordinate Coordinate
}
// Coordinate represents the location in the grid of the zombie
type Coordinate struct {
XAxis int
YAxis int
}
// MoveUp deals with zombie moving up
func (zombie *Zombie) MoveUp() {
y := zombie.Coordinate.YAxis
if y == minimumValueOnAXis {
zombie.Coordinate.YAxis = zombie.maxValueOnAxis()
return
}
zombie.Coordinate.YAxis--
}
// MoveDown deals with zombie moving down
func (zombie *Zombie) MoveDown() {
y := zombie.Coordinate.YAxis
if y == zombie.maxValueOnAxis() {
zombie.Coordinate.YAxis = minimumValueOnAXis
return
}
zombie.Coordinate.YAxis++
}
// MoveLeft deals with zombie moving down
func (zombie *Zombie) MoveLeft() {
x := zombie.Coordinate.XAxis
if x == minimumValueOnAXis {
zombie.Coordinate.XAxis = zombie.maxValueOnAxis()
return
}
zombie.Coordinate.XAxis--
}
// MoveRight deals with zombie moving down
func (zombie *Zombie) MoveRight() {
x := zombie.Coordinate.XAxis
if x == zombie.maxValueOnAxis() {
zombie.Coordinate.XAxis = minimumValueOnAXis
return
}
zombie.Coordinate.XAxis++
}
// PrintLocation prints out the current coordinate
func (zombie *Zombie) PrintLocation() string {
return fmt.Sprintf("(%d,%d)", zombie.Coordinate.XAxis, zombie.Coordinate.YAxis)
}
func (zombie *Zombie) maxValueOnAxis() int {
return zombie.GridSize - 1
}